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

Requêtes MySQL Discussion :

[SGBD] [PHP/MySQL] Problème de boucles


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 76
    Points : 48
    Points
    48
    Par défaut [SGBD] [PHP/MySQL] Problème de boucles
    j'ai réalisé une page php qui extrait des données de la base de données et les affiche dans un tableau. Le problème c'est que seule la première ligne du tableau est remplie. en sachant que toutes les lignes des deux premières colonnes sont remplies. et une seule ligne des autres colonnes est remplie.

    Vraiment je vois pas la faute dans le code.

    voila un bou de code pour mieux comprendre:
    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
     
    echo "<table>";
    $req="select id_matiere,libelle_matiere,coef_matiere from matiere";
    $res=mysql_query($req,$Conn);
     
    $req2="select id_type_epreuve,libelle_type from type_epreuve";
    $res2=mysql_query($req2,$Conn);
     
    while($ligne=mysql_fetch_array($res))
    {$id_mat= $ligne['id_matiere'];
     
     echo "<tr>";
     echo "<td> $ligne[libelle_matiere] </td>
             <td> $ligne[coef_matiere]</td>";
     
            while($ligne2=mysql_fetch_array($res2))
             {
               $type_eprv=$ligne2['id_type_epreuve'];
     
               $req3="select note,coef_epreuve from epreuve where id_eleve='$id_elev' and id_matiere='$id_mat' and id_type_epreuve='$type_eprv' ";
               $res3=mysql_query($req3,$Conn);
               $ligne3=mysql_fetch_array($res3);
               if( ! $ligne3)
                {echo "<td> --,-- </td>";}
              else
                {$note=$ligne3['note'];
                  echo "<td> $note </td>";
                } 
             }        
      echo "</tr>";
      echo "</table>" ;
    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    j'avoue que je ne saisie pas très bien ce qui est remplie...
    A première vue, il te manque un } pour finir ton premier while (peut être ne l'as tu pas collé avec le code).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Salut,

    dans la première boucle tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ligne2=mysql_fetch_array($res2)
    donc après le premier passage tu sera à la fin de tous les enregistrments retournés par $res2 (et mysql_fetch_array($res2) vaudra faux).

    Donc faut soit te repositionner au début de tes enregistrements avec mysql_data_seek(), soit faire une autre requête.

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    salut
    je suis de l'avis a billoum
    le pointeur de mysql_fetch_array() est à la fin donc, il n'entre plus,après la première fois dans le second while (ligne2)

    ainsi ce que tu devrais faire c'est de le repositionner à la sortie de ce second while...
    Je me demandais la variable $id_elev elle est setté avant le bout de code que tu nous as donné? surment car tu aurais une erreur

    donc pour le repositionnement
    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
     
    ...
     echo "<tr>";
     echo "<td> $ligne['libelle_matiere'] </td>
             <td> $ligne['coef_matiere']</td>";
     
            while($ligne2=mysql_fetch_array($res2))
             {
               $type_eprv=$ligne2['id_type_epreuve'];
     
               $req3="select note,coef_epreuve from epreuve where id_eleve='$id_elev' and id_matiere='$id_mat' and id_type_epreuve='$type_eprv' ";
               $res3=mysql_query($req3,$Conn);
               $ligne3=mysql_fetch_array($res3);
               if( ! $ligne3)
                {echo "<td> --,-- </td>";}
              else
                {$note=$ligne3['note'];
                  echo "<td> $note </td>";
                } 
             }        
        mysql_data_seek($res2,0);
    ...

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    juste une question ca serait pas mieu avec un mysql_fetch row?

  6. #6
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 76
    Points : 48
    Points
    48
    Par défaut
    j'avais oublié le role de mysql_data_seek()
    Je vous remercie infiniment pour votre aide. mon problème est résolu.

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

Discussions similaires

  1. [SGBD] PHP/mysql additioner des variables
    Par picsoun dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 20/03/2006, 03h49
  2. [SGBD] [PHP/mySQL] Délestage
    Par Funraill.net dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 29/10/2005, 12h49
  3. [SGBD] [php-mysql]
    Par oyigit dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 14/10/2005, 14h46
  4. [SGBD] [PHP/MySQL Query]Quelle est la taille du tableau retourné?
    Par Jean_Benoit dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 07/10/2005, 19h10
  5. [SGBD] [php/mySql] Récuperation numéro de l'erreur
    Par fab22montpellier dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 14/09/2005, 11h46

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