IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] Problème imbrication while


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 222
    Points : 121
    Points
    121
    Par défaut [PHP-JS] Problème imbrication while
    Bonjour,
    j'ai un soucis dans un script j'imbrique plusieur fois de suite une fonction qui comporte un while et une interrogation de BDD pour récupérer une arbo dans un select de formulaire.
    Mais voilà j'ai créé ce bout de code qui fonctionne nickel à un autre endroit avec une fonction un tout petit peu différente.
    Et la pas moyen j'ai recréé 3 fois le bout de code et ça me fait toujours pareil :
    ça exécute 1 fois chaque while et stop .
    Donc voici le bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?php
    //énumération des thèmes
    $req="SELECT * FROM theme ORDER BY theme ASC";
    $query=mysql_query($req) or die (mysql_error());
     
    while($row=mysql_fetch_assoc($query)){
    	$theme=$row['theme'];
    	$idtheme=$row['idtheme'];
     
    	//Enumeration des catégories
    	$req2="SELECT * FROM cat WHERE idtheme='$idtheme' ORDER BY cat asc";
    	$query2=mysql_query($req2) or die ("pb query2");
     
    	while($row2=mysql_fetch_assoc($query2)){
    		$cat=$row2['cat'];
    		$idcat=$row2['idcat'];
     
    //Enumeration des souscatégories
    	$req3="SELECT * FROM souscat WHERE idcat='$idcat' ORDER BY souscat asc";
    	$query3=mysql_query($req3) or die ("pb query3");
     
    	while($row3=mysql_fetch_assoc($query3)){
    		$souscat=$row3['souscat'];
    		$idsouscat=$row3['idsouscat'];
     
    echo "<option value='".$idsouscat."'> ".$theme." - ".$cat." - ".$souscat." </option>";
     }
     
    }
     
    }
    ?>
    Donc si quelqu'un voit quelque chose je suis preneur car la je comprend pas
    Faites votre veille sur Les métiers du web.

  2. #2
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    bonjour
    est ce que tu as tester tes requetes indépendament?
    je te conseils de concatener ta string de requete et les variable dans la condition
    ensuite fait afficher ta requete pour voir à quoi ressemble ta string...
    test là si ca te retourne un ensemble de résultat ou seulement 1...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //Enumeration des catégories
    $req2="SELECT * FROM cat WHERE idtheme='".$idtheme."' ORDER BY cat asc";
    echo '2e requete --- '.$req2.'<br>';
    ....
    $req3="SELECT * FROM souscat WHERE idcat='".$idcat."' ORDER BY souscat asc";
    echo '3e requete --- '.$req3.'<br>'
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 222
    Points : 121
    Points
    121
    Par défaut
    Euh non j'ai pas testé ça mais en fait je viens de m'appercevoir qu'en fait ça ne fonctionne pas si je n'affiche rien à chaque requète et si je met un echo ça fonctionne.
    Mais mon but c'est quand meme de n'afficher qu'au bout de la 3° requete
    Faites votre veille sur Les métiers du web.

  4. #4
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut

    je ne saurais quoi dire....

    un autre conseil
    utilise les simple quote pour tes echos
    c'est plus rapide remarque que dans ton cas ca ne change pas grand chose mais bon c'est une bonne habitude a prendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo '<option value="'.$idsouscat.'"> '.$theme.' - '.$cat.' - '.$souscat.' </option>';
    aussi, dans une requete si tu n'a besoin que de 2 champs, n'utilise pas le SELECT *, utilise plutot SELECT champs1, champs2 FROM...

    mais pour revenir a ton probleme d'imbrication...
    tu fais seulement une sortie d'affichage soit dans le 3e while?
    si ton while #2 sert seulement a aller chercher les valeur pour l'affichage du 3e while, alors p-e qu'il y a moyen d'optimiser ta requete et couper un while completement
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 222
    Points : 121
    Points
    121
    Par défaut
    Oui je pense que je vais pouvoir optimiser
    Je fais en effet juste une sortie apres ma 3° requete
    Car j'ai 1 table avec theme 1 table avec catégories et une table avec les souscategories
    Sinon je vais ptet juste modifier mes tables pour retenir toute l'arbo au lieu de retenir juste la branche superieur.
    Merci pour tes conseils je vais travailler ladessus
    Faites votre veille sur Les métiers du web.

  6. #6
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Salut j'ai fait une petit esquisse
    mais bon je n'ai pu tester le tout
    à toi d'y voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    echo'<select name="selectTheme">';
     
    $script = "SELECT theme, cat, idsouscat, souscat ";
    $script .= "FROM theme ";
    $script .= "LEFT OUTER JOIN cat ON them.idtheme = cat.idtheme ";
    $script .= "LEFT OUTER JOIN souscat ON cat.idcat = souscat.idcat ";
    $script .= "ORDER BY theme";
     
    $query=mysql_query($script) or die (mysql_error());
    while($res = mysql_fetch_assoc($query)){
     echo '<option value="'.$res['idsouscat'].'"> '.$res['theme'].' - '.$res['cat'].' - '.$res['souscat'].' </option>';
    }
    echo'</select>';
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

Discussions similaires

  1. [PHP-JS] Création array javascript dans un while en php
    Par D_ident_1 dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2007, 11h16
  2. probleme d'imbrications de balises PHP/html
    Par rapanui dans le forum Langage
    Réponses: 6
    Dernier message: 08/12/2006, 19h06
  3. [PHP-JS] Imbrication avec 2 actions différentes
    Par wided_instm dans le forum Langage
    Réponses: 4
    Dernier message: 01/11/2006, 12h37
  4. [Mail] boucle do while et mail php
    Par cseb73 dans le forum Langage
    Réponses: 1
    Dernier message: 08/10/2006, 23h51
  5. [PHP-JS] pb boucle while
    Par kodokan dans le forum Langage
    Réponses: 2
    Dernier message: 26/09/2006, 23h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo