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 :

Problème fonction d'affichage tableaux résultats [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut
    Bonjour,

    J'ai une base de données dans laquelle j'ai des différents champs (id,note,...).

    J'ai réalisé une fonction qui me permet d'afficher mes résultats dans un tableau.
    Mais j'ai remarqué qu'il me manque à chaque fois une ligne de résultat à l'affichage (la première dans ma base données vérifiant la condition.
    J'ai essayé en modifiant les données mais ça ne change rien.

    Je vous met mon code, si qq voit le pb, merci .

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    <?php session_start(); ?> 
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <?php
    include("fonctions.php");
    ?>
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
     
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    <link rel="stylesheet" media="screen" type="text/css" title="Mon style" href="navigation.css" />
    <link href="favicon.ico"  rel="shortcut icon" type="image/x-icon" />
     
    <head>
    <title> Affichage Notes </title>
    </head>
     
    <body>
     
    <p class="logo"><a href="index.php"><img src="images/menu_titre.png" alt="Application Web de Gestion" border="0" /></a></p>
     
    <p  class="menu" align="center">
               <a class="nav" href="formation.php">Formation</a>
               <a class="nav" href="eleve.php">Etudiant</a>
               <a class="nav" href="intervenant.php">Intervenant</a>
               <a class="nav0" href="note.php">Note</a>
               <a class="nav" href="recapitulatif.php">Récapitulatif</a>
    </p>
     
    <p  class="menu2" align="center">
    			<a class="nav2" href="Inserernote.php">Insertion notes</a>
    			<a class="nav2" href="Modifiernote.php">Modifier notes</a>
    			<a class="nav0" href="Afficherenotes.php">Afficher notes</a>
    </p>
     
    <br><br><br>
     
     
    <FORM  name="formulaire"  action="Afficherenotes.php" method="post">
    <div id="decalage">
    <br><br>
     
    <label for="ANNEE">ANNEE :</label>
    <select name="ANNEE">
    <option>----------------</option>
    <option value="2005">2004 - 2005</option>
    <option value="2006">2005 - 2006</option>
    <option value="2007">2006 - 2007</option>
    <option value="2008">2007 - 2008</option>
    <option value="2009">2008 - 2009</option>
    <option value="2010">2009 - 2010</option>
    <option value="2011">2010 - 2011</option>
    <option value="2012">2011 - 2012</option>
    <option value="2013">2012 - 2013</option>
    <option value="2014">2013 - 2014</option>
    <option value="2015">2014 - 2015</option>
    <option value="2016">2015 - 2016</option>
    <option value="2017">2016 - 2017</option>
    <option value="2018">2017 - 2018</option>
    <option value="2019">2018 - 2019</option>
    <option value="2020">2019 - 2020</option>
    </select>
    <br><br>
     
    <label for="FORMATION">FORMATION :</label>
    <select name="FORMATION">
    <option>-------------------------------------------</option>
    <option value="L1Maths">Licence 1 Math&eacute;matiques</option>
    <option value="L1Info">Licence 1 Informatique</option>
    <option value="L1PC">Licence 1 Physique-chimie</option>
    <option value="L2Maths">Licence 2 Math&eacute;matiques</option>
    <option value="L2Info">Licence 2 Informatique</option>
    <option value="L2PC">Licence 2 Physique-chimie</option>
    <option value="L3Maths">Licence 3 Math&eacute;matiques</option>
    <option value="L3Info">Licence 3 Informatique</option>
    <option value="L3PC">Licence 3 Physique-chimie</option>
    <option value="M1Maths">Master 1 Math&eacute;matiques</option>
    <option value="M1Info">Master 1 Informatique</option></option>
    <option value="M1PC">Master 1 Physique-chimie</option></option>
    <option value="M2Maths">Master 2 Math&eacute;matiques</option>
    <option value="M2Info">Master 2 Informatique</option>
    <option value="M2PC">Master 2 Physique-chimie</option>
    <option value="M2CCI">Master 2 CCI</option>
    </select >
    <br><br>
     
    <label for="SEMESTRE">SEMESTRE :</label>
    <select name="SEMESTRE">
    <option>----</option>
    <option value="1">S1</option>
    <option value="2">S2</option>
    </select >
    <br><br>
     
    <input Type="submit" Value="AFFICHER" name="VALIDER">
    <input Type="reset" Value="ANNULER" name="ANNULER">
    </div>
    </FORM>
     
    <?php
     
    if (isset ($_POST['VALIDER'])){
     
    //Connection à la base de données
    connectMaBase();
     
    //On récupère les valeurs entrées par l'utilisateur :
    $annee=$_POST['ANNEE'];
    $formation=$_POST['FORMATION'];
    $semestre=$_POST['SEMESTRE'];
     
    //Création de session pour stocker le nom et la date de la formation
    $_SESSION['formation'] = $formation ;
    $_SESSION['annee'] = $annee ;
    $_SESSION['semestre'] = $semestre ;
     
    //Récupération des coordonnées des étudiants correspondant à la formation choisie
    $sqlnom = " SELECT NomEtudiant, PrenomEtudiant, IdEtudiant FROM etudiant WHERE (NomFormation='$formation' AND DateFormation='$annee')"; 
    $result = mysql_query($sqlnom) or die("Erreur dans la requête sur la table etudiant"); 
     
    //On ferme la connexion
    mysql_close();
     
     }
     
    ?> 
     
     <FORM  name="formulaire2"  action="Afficherenotes.php"  method="post"> 
     
    <br><br>
     <div id="decalage">
     
    <label for="NomEtudiant">Etudiants de cette formation : </label><select name="NomEtudiant">
    <?php
    //Génération de la liste dynamique pour les étudiants
    while ($row=mysql_fetch_array($result)) 
    { 
    echo"<option value='".$row[2]."'>".$row[0]." ".$row[1]." - ".$row[2]."</option>";
    } 
    ?>
    </select>
     
    </div>
     
    <br> <br> 
     
    <input Type="submit" Value="AFFICHER" name="VALIDATION">
    <input Type="reset" Value="ANNULER" name="ANNULER">
     
    <br> <br> <br>
     
    <?php 
     
    if (isset ($_POST['VALIDATION'])){
     
    //Connection à la base de données
    connectMaBase();
     
    //Récupération du numéro étudiant
    $etudiantId = $_POST['NomEtudiant'];
     
    //On récupère les notes de la base de données
    $sqlnotes = "SELECT NomModule,NoteExam,NoteTp,moy FROM note WHERE (IdEtudiant LIKE '%$etudiantId%' AND NomFormation='".$_SESSION['formation']."' AND DateFormation='".$_SESSION['annee']."' AND NumSemestre='".$_SESSION['semestre']."')";
    $reqnotes = mysql_query($sqlnotes) or die('Erreur de la requête sur la table note!<br />'.$sqlnotes.'<br />'.mysql_error());         
    $notes = mysql_fetch_array($reqnotes);
     
    //On compte le nombre d'étudiants contenu dans la base de données  
    $nb_notes = mysql_num_rows($reqnotes);
     
    if ($nb_notes == 0) { 
       echo 'Pas de notes pour cet étudiant pour ce semestre.';  
    }  
     
    else { 
     
    //On récupère le nom de l'étudiant sélectionné
    $sqlnometud = "SELECT NomEtudiant,PrenomEtudiant FROM etudiant WHERE (IdEtudiant LIKE '%$etudiantId%' AND NomFormation='".$_SESSION['formation']."' AND DateFormation='".$_SESSION['annee']."')";
    $reqetud = mysql_query($sqlnometud) or die('Erreur de la requête sur la table note!<br />'.$sqlnometud.'<br />'.mysql_error());         
    $nometud = mysql_fetch_array($reqetud);
     
    echo 'Notes de l\'étudiant '," ",$nometud[0]," ",$nometud[1]," ",'pour le semestre '," ",$_SESSION['semestre']," ",'de la formation'," ",$_SESSION['formation']," : ";
    echo '<br> <br>';
     
    echo '<div id="decalage">';
     
       echo '<table border="0" bgcolor="#333333" cellpadding="10" cellspacing="3">'."\n";
            // première ligne on affiche les titres 
            echo '<tr>';
            echo '<td bgcolor="#ff9800" align="center" ><b><u>Module</u></b></td>';
            echo '<td bgcolor="#ff9800" align="center" ><b><u>Note Examen</u></b></td>';
    		echo '<td bgcolor="#ff9800" align="center" ><b><u>Note TP</u></b></td>';
    		echo '<td bgcolor="#ff9800" align="center" ><b><u>Moyenne</u></b></td>';
        echo '</tr>'."\n"; 
       // on va scanner tous les tuples un par un 
       while ($data = mysql_fetch_array($reqnotes)) { 
             // on affiches les résultats dans la <table>
     
    		 echo '<tr>';
            echo '<td bgcolor="#ffffff" align="center">'.$data["NomModule"].'</td>';
            echo '<td bgcolor="#ffffff" align="center">'.$data["NoteExam"].'</td>';
    		echo '<td bgcolor="#ffffff" align="center">'.$data["NoteTp"].'</td>';
            echo '<td bgcolor="#ffffff" align="center">'.$data["moy"].'</td>';
     
    	echo '</tr>'."\n";
      } 
       echo '</table>';  
     
    echo '</div>';
    }
     
    //On calcul la moyenne générale de l'élève
    //$sqlmoygenerale = "SELECT ROUND(SUM(moy)/COUNT(moy),2) FROM note WHERE (IdEtudiant LIKE '%$etudiantId%' AND NomFormation='".$_SESSION['formation']."' AND DateFormation='".$_SESSION['annee']."' AND NumSemestre='".$_SESSION['semestre']."')";
     
    $sqlmoygenerale = "SELECT round(SUM(note.moy*modules.CoeffModule)/SUM(modules.CoeffModule),2)
     FROM note,modules 
     WHERE note.NomFormation=modules.NomFormation
     AND   note.DateFormation=modules.DateFormation
     AND   note.NumSemestre=modules.NumSemestre
     AND   note.NomModule=modules.NomModule
     AND IdEtudiant LIKE '%$etudiantId%'";
     //AND NomFormation='".$_SESSION['formation']."' 
     //AND DateFormation='".$_SESSION['annee']."'
     //AND NumSemestre='".$_SESSION['semestre']."'";
     
    $reqmoygenerale = mysql_query($sqlmoygenerale) or die('Erreur de la requête sur la table note!<br />'.$sqlmoygenerale.'<br />'.mysql_error());         
    $moygenerale = mysql_fetch_array($reqmoygenerale);
     
    echo '<br> <br>';
    echo '<b><u>Moyenne générale</u></b>'," : ",$moygenerale[0];
    echo '<br> <br>';
     
    if ($moygenerale[0]>=0)
    {
     echo '<b><u> Résultat </u> : ADMIS </b>';
    }
     
    else
    {
     echo '<b><u> Résultat </u> : REFUSE </b>';
    }
    // on libère l'espace mémoire alloué pour cette requête  
    //mysql_free_result ($reqnotes);
     
    //On ferme la connexion
    mysql_close();
     
    }
    ?>
     
    <?php 
    //On détruit toutes les variables de session
    //session_unset();
     
    ?>
     
     
     </div>
    </FORM>
     
    </body>
     
    </html>
    Mon affichage correspond à la partie 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
    echo 'Notes de l\'étudiant '," ",$nometud[0]," ",$nometud[1]," ",'pour le semestre '," ",$_SESSION['semestre']," ",'de la formation'," ",$_SESSION['formation']," : ";
    echo '<br> <br>';
     
    echo '<div id="decalage">';
     
       echo '<table border="0" bgcolor="#333333" cellpadding="10" cellspacing="3">'."\n";
            // première ligne on affiche les titres 
            echo '<tr>';
            echo '<td bgcolor="#ff9800" align="center" ><b><u>Module</u></b></td>';
            echo '<td bgcolor="#ff9800" align="center" ><b><u>Note Examen</u></b></td>';
    		echo '<td bgcolor="#ff9800" align="center" ><b><u>Note TP</u></b></td>';
    		echo '<td bgcolor="#ff9800" align="center" ><b><u>Moyenne</u></b></td>';
        echo '</tr>'."\n"; 
       // on va scanner tous les tuples un par un 
       while ($data = mysql_fetch_array($reqnotes)) { 
             // on affiches les résultats dans la <table>
     
    		 echo '<tr>';
            echo '<td bgcolor="#ffffff" align="center">'.$data["NomModule"].'</td>';
            echo '<td bgcolor="#ffffff" align="center">'.$data["NoteExam"].'</td>';
    		echo '<td bgcolor="#ffffff" align="center">'.$data["NoteTp"].'</td>';
            echo '<td bgcolor="#ffffff" align="center">'.$data["moy"].'</td>';
     
    	echo '</tr>'."\n";
      } 
       echo '</table>';  
     
    echo '</div>';
    }

  2. #2
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut
    Salut,


    Je ne sais pas si cela va t'aider mais pour ma part, je n'ai pas vu d'erreur dans ton code de requête ou d'affichage.

    A part peut-être juste un petit commentaire: si tu poses des conditions sur des colonnes numériques, tu n'as pas besoin des quotes encadrant ta variable php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $sqlnotes = "SELECT NomModule,NoteExam,NoteTp,moy FROM note WHERE (IdEtudiant LIKE '%$etudiantId%' AND NomFormation='".$_SESSION['formation']."' AND DateFormation='".$_SESSION['annee']."' AND NumSemestre=ici par ex '".$_SESSION['semestre']."' <=)";

    Mais je ne pense pas que cela soit la cause.

    2 pistes peut-être :

    - à tout hasard, as-tu essayé de préciser que tu souhaites un tableau associatif en retour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ($data = mysql_fetch_array($reqnotes , MYSQL_ASSOC)) {
    - as-tu contrôlé que cela soit effectivement un problème d'affichage et non un problème de requête? Comment: en affichant la requête (avec ses parametres) sous php (un simple echo) et en l'entrant directement dans ta console d'admin mysql, pour vérifier le résultat escompté, à comparer avec ton affichage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sqlnotes = "SELECT NomModule,NoteExam,NoteTp,moy FROM note WHERE (IdEtudiant LIKE '%$etudiantId%' AND NomFormation='".$_SESSION['formation']."' AND DateFormation='".$_SESSION['annee']."' AND NumSemestre=ici par ex '".$_SESSION['semestre']."' <=)";
    echo $sqlnotes;
    Une dernière piste ou plutôt un commentaire: toujours les fameuses quotes : pour ma part j'utilise toujours les simples quotes au retour de mysql, à l'inverse de ce que tu as fait ici dans la partie affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data["NomModule"] => $data['NomModule']
    auquel cas ta ligne devient :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td bgcolor="#ffffff" align="center">'.$data['NomModule'].'</td>';

    Après ça, c'est une remise en cause hors sujet, mais tu passes en PDO avec des requêtes préparées... ça t'évitera de tout recoder si ton hébergeur passe un beau jour en php6.

  3. #3
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Bien que je n'aurais que je n'aurais fait avec le like (mais ça ne ragarde que moi ).

    Ton erreur (si j'ai compris qu'il te manquait la première ligne)
    Mais j'ai remarqué qu'il me manque à chaque fois une ligne de résultat à l'affichage (la première dans ma base données vérifiant la condition.
    EST DU à un premier fectch_array ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $notes = mysql_fetch_array($reqnotes);
     
    //On compte le nombre d'étudiants contenu dans la base de données  
    $nb_notes = mysql_num_rows($reqnotes);
    Ensuite tu fais une boucle telle que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       while ($data = mysql_fetch_array($reqnotes)) { 
             // on affiches les résultats dans la <table>
     
    		 echo '<tr>';
    DONC FORCEMENT TU AS ZAPPé LE PREMIER ....

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut
    Super merci, c'est bien ça

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

Discussions similaires

  1. Problème boucle avec affichage tableaux
    Par lamouette76 dans le forum C
    Réponses: 11
    Dernier message: 08/10/2007, 19h05
  2. Problème fonction affichage listes déroulantes
    Par JLDR69 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/09/2006, 19h06
  3. Réponses: 4
    Dernier message: 11/07/2006, 22h58
  4. [Tableaux] Problème d'actualisation affichage
    Par miram dans le forum Langage
    Réponses: 7
    Dernier message: 09/02/2006, 15h14
  5. Réponses: 2
    Dernier message: 14/09/2005, 13h39

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