probleme de requete

Petit nouveau ! | 9 Messages

20 mai 2011, 19:48

boujour

jai encore un petit probleme sur ma requete je narrive pas a afficher le groupes 1 et le groupe 0

example de ma base de donne

id=12
nom=sslajsk
niveau=10.1.12
groupes=1


id=15
nom=dshfkasd
niveau=10
groupe=0

id=3
nom=sdgfasdg
niveau=10.1
groupes=0

id=13
nom=sslajskcvgdfg
niveau=10.1.10
groupes=0



Code : Tout sélectionner

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <title>tTitre</title> <meta http-equiv='Content-Type' content='text/html;charset=iso-8859-1' > <meta name='keywords' content='Keyword '> <meta name='description'content='tDescription '> </HEAD> <BODY> <p> Bonjour jaslkfjasdlkfjsdkl </p> <? print"<ul>"; $num_p =0; $num_i =0; // pour menu racine $nb_racine =0; mysql_connect('localhost','root','56465156148916'); mysql_select_db('189146519'); $tr_racine = "select niveau as niveau_r, nom as nom_r, lien as lien_r from page where niveau like '__' and groupes=1 or groupes=0 order by niveau"; $rep_racine = mysql_query($tr_racine) or die(mysql_error()."<BR>erreur<BR>$tr_racine"); $nb_rep_racine = mysql_num_rows($rep_racine); while ($list_racine = mysql_fetch_array($rep_racine)) { extract ($list_racine); print"<li>"; print $niveau_r; $tr_sous = "select niveau as niveau_s, nom as nom_s, lien as lien_s from page where niveau like '$niveau_r.__' and groupes=1 or groupes=0 order by niveau"; $rep_sous = mysql_query($tr_sous) or die(mysql_error()."<BR>erreur<BR>$tr_sous"); $nb_rep_sous = mysql_num_rows($rep_sous); if ($nb_rep_sous>0) print "<ul >"; while ($list_sous = mysql_fetch_array($rep_sous)) { extract ($list_sous); print"<li>"; print $niveau_s; $tr_sous_sous = "select niveau as niveau_s_s, nom as nom_s_s, lien as lien_s_s from page where niveau like '$niveau_s.__' and groupes=1 or groupes=0 order by niveau"; $rep_sous2 = mysql_query($tr_sous_sous) or die(mysql_error()."<BR>erreur<BR>$tr_sous_sous"); $nb_rep_sous2 = mysql_num_rows($rep_sous2); if ($nb_rep_sous2>0) print "<ul >"; while ($list_sous2 = mysql_fetch_array($rep_sous2)) {$nb_rep_sous2_max=$nb_rep_sous2; extract ($list_sous2); print"<li>"; print $niveau_s_s; }if ($nb_rep_sous2>0) print "</ul >"; }if ($nb_rep_sous>0) print "</ul >"; }if ($nb_rep_racine>0) print "</ul >"; ?> </BODY> </HTML>
Modifié en dernier par johill le 20 mai 2011, 21:16, modifié 2 fois.

ViPHP
xTG
ViPHP | 7331 Messages

20 mai 2011, 20:39

C'est à cause de cela : niveau like '__'
Cette condition n'est jamais respectée à la vue de tes valeurs dans la table.

Petit nouveau ! | 9 Messages

20 mai 2011, 21:08

dsl jai pas mis tout les possible

niveau peut etre = 10 et aussi = 10.1 et aussi 10.1.1
en gros sa fait un menu

example :
<lu>
<li>10
<lu>
<li>10.1
<lu>
<li>10.1.1
</lu>

ViPHP
xTG
ViPHP | 7331 Messages

21 mai 2011, 09:25

Dans ce cas la recherche se fait sur '10%' et non '__'

Petit nouveau ! | 9 Messages

24 mai 2011, 22:20

c pas seulement 10 il a 11.1 et 25.2 et 90.2.3 et ainsi de suite jai pas seleulement 10.xx.xx j'ai tout sa
<li>10</li>
<li>12
<ul>
<li>12.01</li>
<li>12.02</li>
<li>12.03</li>
<li>12.04</li>
</ul>
</li>
<li>13
<ul>
<li>13.01</li>
<li>13.02</li>
<li>13.03</li>
<li>13.04</li>
<li>13.05</li>
<li>13.06</li>
</ul>
</li>
<li>14</li>
<li>15</li>
<li>17</li>
<li>18
<ul>
<li>18.01</li>
<li>18.02</li>
<li>18.03</li>
<li>18.04</li>
</ul>
</li>
<li>19
<ul>
<li>19.01</li>
<li>19.02</li>
<li>19.03</li>
</ul>
</li>
<li>20
<ul>
<li>20.11</li>
<li>20.12</li>
<li>20.13</li>
<li>20.14</li>
<li>20.15</li>
<li>20.16</li>
<li>20.17</li>
<li>20.18</li>
<li>20.19</li>
<li>20.20</li>
<li>20.21</li>
<li>20.23</li>
<li>20.24</li>
<li>20.25</li>
<li>20.26</li>
<li>20.27</li></ul>
et ainsi de suite justequ'99.XX.XX
mon but est par example prendre 10 , 20.13 , 19.03 ... et de les cache au grand public et de les faire affiche selon le mots de passe entres soit le groupe 1,2 ou 3
je n'aurai aucun problème pour la gestion des mots de passe si je sait comment les cache sans que sa dérange l'ordre établie et que les entres se répète pas 2 fois
test mots passe 1 affiche le groupe 1 + le groupe 0 ( grand public)
test mots passe 2 affiche le groupe 2 + groupe 0 et si je le voudrait affiche le groupe 1 aussi

maintenant j’espère avoir été plus clair et je m'excuse pour la perte de temps causez par mon manque de précision
je vous remercie d'adance pour vos reponse je buche sur se probleme depuis deja un bout de temps et jessaie de le resoudre par moi meme mais en vain ....

ViPHP
xTG
ViPHP | 7331 Messages

25 mai 2011, 08:01

Tu ne pourras pas filtrer aisément via ta requête, il faut tout récupérer et ensuite filtrer avec PHP.