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 :

Boucle qui ne lit que la dernière ligne [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 15
    Points
    15
    Par défaut Boucle qui ne lit que la dernière ligne
    Bonjour a tous!

    J'ai un petit pb avec un bout de code assez simple au final mais je n'arrive plus a y voir clair, je suis a la bourre, bref c'est la memerde...

    Je m'explique, je dois faire un tableau qui renvoi des valeurs d'une table amelioration et je dois pouvoir donner la possibilité a l'utilisateur de mettre une note de 1 a 5 a cette proposition d'amelioration. Je fais donc un formulaire qui va lire dans la base de donnees la note correspondant a l'amelioration et je lui demande de me l'afficher. Toutes mes lignes de proposition d'amelioration s'affichent bien mais seule la derniere proposition d'amelioration a un input radio qui est lu et qui s'affiche. Toutes les premieres lignes affichent des input radio non coché. Ca doit venir d'une mauvaise utilisation de mes while, mais etant debutant et ayant passé quelques (10n) heures sur mon questionnaire je n'y vois plus rien!

    Voici mon 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
    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
     
    	            <form method="post" action="ameliorationnote.php">
                  <table width="635" border=1>
                    <tr valign="top">
                      <td colspan="6">
                      Si oui, quelles sont les priorités sur lesquelles les améliorations doivent se porter (notez de 1 à 5 en fonction de l’importance accordée à la priorité,5 représentant une forte priorité) :
                      </td>
                    </tr>
                    <tr valign="top">
                      <td>
                      &nbsp
                      </td>
                      <td colspan="5">
                      image fleche
                      </td>
                    </tr>
                    <tr valign="top">
                      <td>
                      &nbsp
                      </td>
                      <td>
                      1
                      </td>
                      <td>
                      2
                      </td>
                      <td>
                      3
                      </td>                  
                      <td>
                      4
                      </td>
                      <td>
                      5
                      </td>
                    </tr>
    <?php
     
    // OUVRIR CONNECTION
    require("connecter.php"); 
    //requete sql dans la table en question 
    $sql = 'SELECT ID_amelioration, Nom_amelioration FROM amelioration'; 
    //affectation de la requete une variable 
    $resultat = mysql_query($sql); 
    //retourne le resultat dans un tableau 
    while ($array = mysql_fetch_array($resultat)) {
     
                      $sql3 = 'SELECT Note_ID FROM amelioration_epci WHERE Epci_ID="'.$_SESSION['ID_epci'].'" AND Amelioration_ID="'.$array['ID_amelioration'].'"';
                      $resultat3 = mysql_query($sql3); 
                      //retourne le resultat dans un tableau 
                      while ($array3 = mysql_fetch_array($resultat3)) {
     
              echo '<tr>       
                      <td>
                      '.$array['Nom_amelioration'].'
                      </td>';                 
                      echo '<td>';
                          if($array3['Note_ID'] == "NOTE1") 
                          { 
                      echo '  <input type="radio" name="note" id="1" value="1" checked="true" onclick="this.form.submit()">';
                          } else {
                      echo '  <input type="radio" name="note" id="1" value="1" onclick="this.form.submit()">';       
                          }
                      echo '  </td>
                              <td>';
                          if($array3['Note_ID'] == "NOTE2") 
                          { 
                      echo '  <input type="radio" name="note" id="2" value="2" checked="true" onclick="this.form.submit()">';
                          } else {
                      echo '  <input type="radio" name="note" id="2" value="2" onclick="this.form.submit()">';       
                          }
                      echo '  </td>
                              <td>';
                          if($array3['Note_ID'] == "NOTE3") 
                          { 
                      echo '  <input type="radio" name="note" id="3" value="3" checked="true" onclick="this.form.submit()">';
                              } else {
                      echo '  <input type="radio" name="note" id="3" value="3" onclick="this.form.submit()">';       
                              }
                      echo '  </td>
                              <td>';
                              if($array3['Note_ID'] == "NOTE4") 
                              { 
                      echo '  <input type="radio" name="note" id="4" value="4" checked="true" onclick="this.form.submit()">';
                              } else {
                      echo '  <input type="radio" name="note" id="4" value="4" onclick="this.form.submit()">';       
                              }
                      echo '  </td>
                              <td>';
                              if($array3['Note_ID'] == "NOTE5") 
                              { 
                      echo '  <input type="radio" name="note" id="5" value="5" checked="true" onclick="this.form.submit()">';
                              } else {
                      echo '  <input type="radio" name="note" id="5" value="5" onclick="this.form.submit()">';       
                              }
                      echo '  </td>';
     
              echo '</tr>';
    }
              }
    ?>
    J'etais sencé avoir fini ce travail avant-hier donc je suis un peu en panique...

    Merci d'avance pour le coup de main!

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tous tes radio ont le meme nom, donc le dernier envoyé écrase tous les précédents.

    Au passage, c'est une drole d'idée d'ecrire une chaine pour stocker un chiffre.
    Comment ferais-tu par exemple la somme des notes ou un classement ?
    Enregistre donc 1 plutot que "Note1".

    Et utilise une boucle pour faire ta suite de boutons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for ($note = 1; $note < 6; $note++) {
     
    // bien sur retire 'Note' si tu changes le type de champ comme je te l'ai conseillé
    if ($array3['Note_ID'] == 'Note'.$note) { $checked = ' checked="checked" '; }
     
    echo ' <input type="radio" name="note['.$array['Nom_amelioration'].']" id="' . $array['Nom_amelioration'] . '" value="' . $note . '"' . $checked . ' onclick="this.form.submit()" />';
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Ok sabotage, merci pour la reponse rapide

    Je regarde ca et je te tiens au courant

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Bon du coup j'ai essayé d'integrer ton code au mien. Il m'affiche bien le tableau correctement mais il ne me coche aucun radio. Voici la maniere dont je l'ai integré :

    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
     
    <?php
     
    // OUVRIR CONNECTION
    require("connecter.php"); 
    //requete sql dans la table en question 
    $sql = 'SELECT ID_amelioration, Nom_amelioration FROM amelioration'; 
    //affectation de la requete une variable 
    $resultat = mysql_query($sql); 
    //retourne le resultat dans un tableau 
    while ($array = mysql_fetch_array($resultat)) {
     
                      $sql3 = 'SELECT Note_ID FROM amelioration_epci WHERE Epci_ID="'.$_SESSION['ID_epci'].'" AND Amelioration_ID="'.$array['ID_amelioration'].'"';
                      $resultat3 = mysql_query($sql3); 
                      //retourne le resultat dans un tableau 
                      while ($array3 = mysql_fetch_array($resultat3)) {
     
              echo '<tr>       
                      <td >
                      '.$array['Nom_amelioration'].'
                      </td>';                
     
                      for ($note = 1; $note < 6; $note++) {
     
                      // bien sur retire 'Note' si tu changes le type de champ comme je te l'ai conseillé
                      if ($array3['Note_ID'] == 'Note'.$note) { $checked = ' checked="checked" '; }
     
                      echo ' <td><input type="radio" name="note['.$array['Nom_amelioration'].']" id="'. $array['Nom_amelioration'].'" value="'. $note .'" '. $checked .' onclick="this.form.submit()"></td>';
                      }
     
              echo '</tr>';
    }
              }
    ?>

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Pourtant j'ai tout modifié dans la base en remplacant les ID_note par 1 a 5

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai mis un commentaire dans le code

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    lol oui j'ai vu apres avoir posté (heureusement que tu l'avais mis d'ailleurs parce que c'etait evident mais comme dis precedemment je commence a m'embrouiller un peu!)

    Donc j'ai bien enlever le 'Note' et modifié la base en donnant pour valeur 1 a 5 aux identiants de la table note (type INT taille 1) et j'ai fait la meme modif dans la table amelioration_epci.

    Du coup il affiche tous les radios du tableau coché sur la valeur 5

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Alors que dans ma base pour tester j'ai tout mis à 1 sauf deux amelioration (sur 6 ameliorations) a 4... D'ou sort ce 5 coché ? Je comprends plus la...

    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
     
    <?php
     
    // OUVRIR CONNECTION
    require("connecter.php"); 
    //requete sql dans la table en question 
    $sql = 'SELECT ID_amelioration, Nom_amelioration FROM amelioration'; 
    //affectation de la requete une variable 
    $resultat = mysql_query($sql); 
    //retourne le resultat dans un tableau 
    while ($array = mysql_fetch_array($resultat)) {
     
                      $sql3 = 'SELECT Note_ID FROM amelioration_epci WHERE Epci_ID="'.$_SESSION['ID_epci'].'" AND Amelioration_ID="'.$array['ID_amelioration'].'"';
                      $resultat3 = mysql_query($sql3); 
                      //retourne le resultat dans un tableau 
                      while ($array3 = mysql_fetch_array($resultat3)) {
     
              echo '<tr>       
                      <td >
                      '.$array['Nom_amelioration'].'
                      </td>';                
     
                      for ($note = 1; $note < 6; $note++) {
     
                      // bien sur retire 'Note' si tu changes le type de champ comme je te l'ai conseillé
                      if ($array3['Note_ID'] == $note) { $checked = ' checked="checked" '; }
     
                      echo ' <td><input type="radio" name="note['.$array['Nom_amelioration'].']" id="' . $array['Nom_amelioration'] . '" value="' . $note . '"' . $checked . ' onclick="this.form.submit()" /></td>';
                      }
     
              echo '</tr>';
    }
              }
    ?>

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Raaaa je me suis encore fait avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ($array3['Note_ID'] == $note) { $checked = ' checked="checked" '; }
    else { $checked = ''; }

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    YYYYYYYYEEEEEEESSSSSSSSSSSS

    Merci pour tout sabotage!!!!

    Tu imagines pas a quel point ca me sauve la vie! En plus ca fait deja deux fois en 1 semaine sur le forum que tu me regles un pb. La prochaine fois c'est champagne lol !!!

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

Discussions similaires

  1. [XL-2010] une boucle qui ne travail que sur les lignes visibles
    Par beta007 dans le forum Excel
    Réponses: 3
    Dernier message: 11/03/2014, 16h38
  2. Réponses: 9
    Dernier message: 20/08/2009, 14h33
  3. ma boucle cat ne lit pas la derniere ligne
    Par dams78 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 31/05/2008, 15h13
  4. Textarea et blob : je n'ai que la dernière ligne
    Par rems033 dans le forum Langage
    Réponses: 2
    Dernier message: 18/03/2008, 20h09
  5. [MySQL] la fonction PHP qui permet de recuperer la dernière ligne inserée dans bdd
    Par otari dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/06/2007, 19h05

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