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

PHP & Base de données Discussion :

Une boucle while dans une boucle while [PDO]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Points : 26
    Points
    26
    Par défaut Une boucle while dans une boucle while
    Bonsoir,

    J'essaye de créer une boucle while dans une boucle while... mais j'ai un souci.

    La première boucle fonctionne (boucle par élève d'une classe) mais la deuxième boucle (un tableau par élève de la classe) n'affiche que la première ligne du tableau alors que cette boucle seule renvoi plusieurs lignes par élève.

    J'ai chercher sur Google mais je ne trouve rien

    Voici mon code au cas qqun pourrait me guider...

    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
     
    if(!empty($_POST['classe'])){
    $classe=$_POST['classe'];	
    //DEBUT boucle par élève d'une classe
    $sql3="SELECT student_klas AS classe, student_stam AS stam_student, student_naam AS naam_student, student_voornaam AS voornaam_student FROM pia_students, studenten WHERE pia_students_stam = student_stam AND student_klas='$classe' ORDER BY student_naam ASC";
    $results3 = $bdd->query($sql3);
    while( $row3=$results3->fetch() ){
    $student=$row3['stam_student'];
    //DEBUT un tableau par élève de la classe
    echo '
    <br />
    <h3>'.$row3['voornaam_student'].' '.$row3['naam_student'].'</h3>
    <table cellpadding="0" cellspacing="0" border="0" class="datatable-1 table table-bordered table-striped	 display" width="100%">
    ';
    $sql2="SELECT pia_quest AS no_quest, pia_quest.name AS question, COUNT(pia_quest) AS total FROM pia_rec,pia_quest WHERE pia_quest.id = pia_rec.pia_quest AND pia_stam REGEXP '$student' GROUP BY pia_quest ORDER BY total DESC";
    $results2 = $bdd->query($sql2);
    while( $row2=$results2->fetch() ){
    echo '
    <tr>
    	<td>'.$row2['total'].'x</td>
    	<td>'.$row2['no_quest'].'. '.$row2['question'].'</td>	
    </tr>
    ';
     
    $results2->closeCursor();
    echo'</table>';
    }
    //FIN un tableau par élève
    }
    //FIN boucle par élève d'une classe
    }
    Merci d'avance,

    Sub

  2. #2
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    Bonjour,

    Tu fermes la balise table et tu effectues la méthode closeCursor à l'intérieur de ton deuxième while, je présume que tu devrais mettre cela à l'extérieur de cette boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    while( $row2=$results2->fetch() ){
    echo '
    <tr>
    	<td>'.$row2['total'].'x</td>
    	<td>'.$row2['no_quest'].'. '.$row2['question'].'</td>	
    </tr>
    ';
    }
    $results2->closeCursor();
    echo'</table>';

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Points : 208
    Points
    208
    Par défaut
    Salut subran,

    Comme ça je dirais que tu as mal placé tes dernières instructions.
    Remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        $results2->closeCursor();
        echo'</table>';
      }
      //FIN un tableau par élève
    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      }
      $results2->closeCursor();
      echo'</table>';
      //FIN un tableau par élève

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Points : 26
    Points
    26
    Par défaut [RESOLU]
    En effet, j'ai oublié de vérifier la fin des instructions.

    Merci à vous deux !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/01/2014, 15h26
  2. Réponses: 6
    Dernier message: 13/11/2009, 17h06
  3. Changer un caractère dans une chaîne contenue dans une phrase
    Par cirtey dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 07/03/2007, 17h16
  4. Réponses: 4
    Dernier message: 17/05/2006, 00h15
  5. Réponses: 11
    Dernier message: 06/12/2005, 09h23

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