Bug dans une double liste

stu76 Messages postés 186 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 17 février 2008 - 25 mai 2006 à 10:08
stu76 Messages postés 186 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 17 février 2008 - 25 mai 2006 à 11:40
Bonjour,

Malalam m'a donné des infos hier sur les doubles liste, et je le remercie car ca ma été super utile. J'ai presque résolu le prob sauf que je n'ai pas de résultat retourné par ma deuxième liste. Je m'explique voici une saisie d'écran de l'application que sur laquelle je travail.

Je sélectionne une classe dans la première liste jusque la pas de prob, la liste élèves est directement généré et les résultats du premier élèves s'affiche correctement. Mon prob est quand je sélectionne un autre élèves dans la liste plus rien ne s'affiche au niveau des résultats.

je vous donne ci-dessous la partie de code qui est concernée par ce prob. J'ai déjà passer bcp d'heure sur ce prob et là je galère grave. A l'aide SVP, un petit coup de pouce serait le bien venu.

 <td colspan= "2" rowspan="2"> S&eacute;lection :
    <form name ="Affichage classe" method="post" action="">
    <select name="listeclasse" size="1" onChange="this.form.submit();">
       Boucle do while pour l'affiche des classes dans la liste déroulante
    <?php
   do { 
  ?>
     <option value="<?php echo $row_affichageclasse['id_cl']?>"<?php if (!(strcmp($row_affichageclasse['id_cl'], $row_affichageclasse['id_cl']))) {echo "SELECTED";} ?>><?php echo $row_affichageclasse['nom_clas']?></option>
        <?php  //j'affiche l'id
   } while ($row_affichageclasse = mysql_fetch_assoc($affichageclasse));
      $rows = mysql_num_rows($affichageclasse);
      if($rows > 0) {
         mysql_data_seek($affichageclasse, 0);
        $row_affichageclasse = mysql_fetch_assoc($affichageclasse);
     }
   ?>
      </select>
      </form>
   </td>
     <td></td>
    </tr>
    <tr bgcolor="#666666">
     <td>&nbsp;</td>
   </tr>
   <tr>
    <?php
   if(isset($_POST['listeclasse']) and is_numeric($_POST['listeclasse'])) // je test si $_POST contient bien quelque chose et si elle est bien numéric.
 {
   $sqlelev="SELECT eleves.id_elv, eleves.section, eleves.classe, eleves.nom_elev, eleves.prenom_elev, eleves.id_classe, classe.id_cl FROM eleves
      inner join classe on classe.id_cl=eleves.id_classe where eleves.id_classe=".$_POST['listeclasse'];
 $reqelev=mysql_query($sqlelev) or die('Erreur SQL!
'.$sqlelev.'
'.mysql_error());
 $row_affichageeleves=mysql_fetch_array($reqelev,MYSQL_ASSOC);
  ?>
    <td colspan="3">Sélectionner un élève : <form name="Affichageeleves" method="post">
 <select name="select" onChange="document.getElementById('mainForm').submit();">
    
   <?php
   for ($i = mysql_num_rows($reqelev) -1; $i >= 0; $i--) { //je récupere le nombre de ligne d'un jeu de résultat Mysql de la variable $reqelev
   if (!mysql_data_seek($reqelev, $i)) { //déplace le pointeur interne de résultat
       echo "Ne peut pointer vers la ligne $i : " . mysql_error() . "\n"; //Message en cas d'erreur
       continue;
   }



   if (!($row = mysql_fetch_assoc($reqelev))) {  //j'affecte le resultat du tableau a la variable $row
       continue;
   }



   echo "<option value=".$row['id_elv'].">".$row['nom_elev'] . " ". $row['prenom_elev']. "</option>"; //affichege des valeurs contnues
}
?>
    </select>
      </form></td>
  </tr>
 
  <tr>
    <td width="210">Cours</td>
    <td width="250">Total en % </td>
    <td>D&eacute;cision</td>
  </tr>
  <tr>
  <?php
  if(isset($_POST['listeclasse']) and is_numeric($_POST['listeclasse']))
 {
   $sqlselec="SELECT classe.*, cours.*, resultats.* FROM cours, resultats inner join classe on
     classe.id_cl=cours.id_classe and cours.id_c=resultats.id_cours where classe.id_cl=".$_POST['listeclasse'];
 $classe=$sqlselec;
 $req=mysql_query($classe) or die('Erreur SQL!
'.$classe.'
'.mysql_error());
  
  while ($row_affichages=mysql_fetch_array($req,MYSQL_ASSOC))
     { 
   
   ?>
    <td><?php echo $row_affichages['nom_cours']; ?></td>
    <td><?php echo $row_affichages['total_pourc']; ?></td>
    <td><form name="selection" method="post" action="">
      TV
      BR
      TV + BR
      R&eacute;ussit
   </form></td>
  </tr>
  <?php
}
?>
  <tr bgcolor="#CCCCCC">
    <td colspan="2">Enregister :
      <form name="form1" method="post" action="">
       
    </form></td>
    <td><form name="form3" method="post" action="">
     
      Ajourn&eacute;
        
      Att B
     
      Att A
     
      Att C
    </form></td>
  </tr>
  <tr>
    <td colspan="3" bgcolor="#333333">[accueiladmin.php retour]</td>
  </tr>
</table>
  <?php
  }
 }
  mysql_close();
?>
  &nbsp;

</html>
<?php
mysql_free_result($affichageclasse);



mysql_free_result($affichageeleves);
?>

Merci a tout ceux que se pancherons sur mon prob.

++ 

Stu76 

4 réponses

stu76 Messages postés 186 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 17 février 2008 1
25 mai 2006 à 10:23
Désolé, j'ai mis le mauvais code, voici celui que j'avais modifier depuis :

 <td colspan= "2" rowspan="2"> S&eacute;lection :
    <form name ="Affichage classe" method="post" action="">
    <select name="listeclasse" size="1" onChange="this.form.submit();">
       Boucle do while pour l'affiche des classes dans la liste déroulante
    <?php
   do { 
  ?>
     <option value="<?php echo $row_affichageclasse['id_cl']?>"<?php if (!(strcmp($row_affichageclasse['id_cl'], $row_affichageclasse['id_cl']))) {echo "SELECTED";} ?>><?php echo $row_affichageclasse['nom_clas']?></option>
        <?php  //j'affiche l'id
   } while ($row_affichageclasse = mysql_fetch_assoc($affichageclasse));
      $rows = mysql_num_rows($affichageclasse);
      if($rows > 0) {
         mysql_data_seek($affichageclasse, 0);
        $row_affichageclasse = mysql_fetch_assoc($affichageclasse);
     }
   ?>
      </select>
      </form>
   </td>
     <td></td>
    </tr>
    <tr bgcolor="#666666">
     <td>&nbsp;</td>
   </tr>
   <tr>
    <?php
   if(isset($_POST['listeclasse']) and is_numeric($_POST['listeclasse'])) // je test si $_POST contient bien quelque chose et si elle est bien numéric.
 {
   $sqlelev="SELECT eleves.id_elv, eleves.section, eleves.classe, eleves.nom_elev, eleves.prenom_elev, eleves.id_classe, classe.id_cl FROM eleves
      inner join classe on classe.id_cl=eleves.id_classe where eleves.id_classe=".$_POST['listeclasse'];
 $reqelev=mysql_query($sqlelev) or die('Erreur SQL!
'.$sqlelev.'
'.mysql_error());
 $row_affichageeleves=mysql_fetch_array($reqelev,MYSQL_ASSOC);
  ?>
    <td colspan="3">Sélectionner un élève : <form name="Affichageeleves" method="get">
 <select name="select" onChange="">
    
   <?php
   for ($i = mysql_num_rows($reqelev) -1; $i >= 0; $i--) { //je récupere le nombre de ligne d'un jeu de résultat Mysql de la variable $reqelev
   if (!mysql_data_seek($reqelev, $i)) { //déplace le pointeur interne de résultat
       echo "Ne peut pointer vers la ligne $i : " . mysql_error() . "\n"; //Message en cas d'erreur
       continue;
   }



   if (!($row = mysql_fetch_assoc($reqelev))) {  //j'affecte le resultat du tableau a la variable $row
       continue;
   }



   echo "<option value=".$row['id_elv'].">".$row['nom_elev'] . " ". $row['prenom_elev']. "</option>"; //affichege des valeurs contnues
}
?>
    </select>
   
    </form></td>
  </tr>
 
  <tr>
    <td width="210">Cours</td>
    <td width="250">Total en % </td>
    <td>D&eacute;cision</td>
  </tr>
  <tr>
  <?php
  if(empty($_GET['select']))
 {
 $eleves=$_GET['select'];
   $sqlselec="SELECT classe.*, cours.*, resultats.*, eleves.* FROM cours, resultats, eleves inner join classe on
     classe.id_cl=cours.id_classe and cours.id_c=resultats.id_cours and resultats.id_eleves=eleves.id_elv where eleves.id_elv='$eleves'";
 $classe=$sqlselec;
 $req=mysql_query($classe) or die('Erreur SQL!
'.$classe.'
'.mysql_error());
  while ($row_affichages=mysql_fetch_array($req,MYSQL_ASSOC))
     { 
   
   ?>
    <td><?php echo $row_affichages['nom_cours']; ?></td>
    <td><?php echo $row_affichages['total_pourc']; ?></td>
    <td><form name="selection" method="post" action="">
      TV
      BR
      TV + BR
      R&eacute;ussit
   </form></td>
  </tr>
  <?php
}
?>
  <tr bgcolor="#CCCCCC">
    <td colspan="2">Enregister :
      <form name="form1" method="post" action="">
       
    </form></td>
    <td><form name="form3" method="post" action="">
     
      Ajourn&eacute;
        
      Att B
     
      Att A
     
      Att C
    </form></td>
  </tr>
  <tr>
    <td colspan="3" bgcolor="#333333">[accueiladmin.php retour]</td>
  </tr>
</table>
  <?php
  }
 }
  mysql_close();
?>
  &nbsp;

</html>
<?php
mysql_free_result($affichageclasse);



mysql_free_result($affichageeleves);
?>

++

Stu76
0
stu76 Messages postés 186 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 17 février 2008 1
25 mai 2006 à 10:33
Re,

Je vous tiens au courant des test que j'effectue en faite ma requête sql, ne recoit rien de ma deuxième liste : voici ce qu'elle me rertourne :

SELECT classe.*, cours.*, resultats.*, eleves.* FROM cours, resultats, eleves inner join classe on classe.id_cl=cours.id_classe and cours.id_c=resultats.id_cours and resultats.id_eleves=eleves.id_elv where eleves.id_elv=''

Pourquoi ?

 je sais pas encore.

++
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 mai 2006 à 11:19
Hello,

réexplique mieux ton problème, et essaye de nous fournir un code nettoyé de tout artifice...trop compliqué à lire, là!

ceci dit je viens de voir un truc étrange :
if(empty($_GET['select']))
{
$eleves=$_GET['select'];

?? si ton $_GET est vide, alors tu le met dans $eleves...??

Et sur cette liste eleves, il n'y a pas de soumission du formulaire, en plus.
0
stu76 Messages postés 186 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 17 février 2008 1
25 mai 2006 à 11:40
Salut, 

J'ai regardé ce que tu ma dit et effectivement c'était pas clair, maintenant j'arrive a avoir les enregistrement des élèves mais de manière complètement loufoque. Bon je reconnait que mon code les égalements. Mais je suis encore dans la phase débutant du php.

En clair, voici ce qui ce passe a ce stade du code :

Je selectionne une classe et un élèves quand je clique sur OK rien ne se passe mais les donnée affiché dans l'url sont correcte voici un exemple :

http://localhost/IEcole/gestionsite/Copie%20de%20deliberation.php?select=18&Submit=OK

 Si je reselectionne la même classe, truc bizarre il m'affiche la bonne valeur dans marequête sql et les réultats afficher sont bien celui du bon élève. Voici ce qu'affiche le echo de ma requête SQL :

SELECT classe.*, cours.*, resultats.*, eleves.* FROM cours, resultats, eleves inner join classe on classe.id_cl=cours.id_classe and cours.id_c=resultats.id_cours and resultats.id_eleves=eleves.id_elv where eleves.id_elv='18'

Pourquoi, je n'ai pas ce résultat quand je click sur OK ?

Si tu pouvait me guider ce serait très cool de ta part.

Voici le code modifier, en rouge le code qui a mon sens pose des probs :

 <form name="Affichage classe" method="post" action="">
    <select name="listeclasse" size="1" onChange="this.form.submit();">
       Boucle do while pour l'affiche des classes dans la liste déroulante
    <?php
   do { 
  ?>
     <option value="<?php echo $row_affichageclasse['id_cl']?>"<?php if (!(strcmp($row_affichageclasse['id_cl'], $row_affichageclasse['id_cl']))) {echo "SELECTED";} ?>><?php echo $row_affichageclasse['nom_clas']?></option>
        <?php  //j'affiche l'id
   } while ($row_affichageclasse = mysql_fetch_assoc($affichageclasse));
      $rows = mysql_num_rows($affichageclasse);
      if($rows > 0) {
         mysql_data_seek($affichageclasse, 0);
        $row_affichageclasse = mysql_fetch_assoc($affichageclasse);
     }
   ?>
      </select>
      </form>
   </td>
     <td></td>
    </tr>
    <tr bgcolor="#666666">
     <td>&nbsp;</td>
   </tr>
   <tr>
    <?php
   if(isset($_POST['listeclasse']) and is_numeric($_POST['listeclasse'])) // je test si $_POST contient bien quelque chose et si elle est bien numéric.
 {
   $sqlelev="SELECT eleves.id_elv, eleves.nom_elev, eleves.prenom_elev, eleves.id_classe, classe.id_cl FROM eleves
      inner join classe on classe.id_cl=eleves.id_classe where eleves.id_classe=".$_POST['listeclasse'];
 $reqelev=mysql_query($sqlelev) or die('Erreur SQL!
'.$sqlelev.'
'.mysql_error());
 $row_affichageeleves=mysql_fetch_array($reqelev,MYSQL_ASSOC);
  ?>
    <td colspan="3">Sélectionner un élève : <form name="Affichageeleves" method="get">
 <select name="select" onChange="">
    
 <?php
   for ($i = mysql_num_rows($reqelev) -1; $i >= 0; $i--) { //je récupere le nombre de ligne d'un jeu de résultat Mysql de la variable $reqelev
      if (!mysql_data_seek($reqelev, $i))
     { //déplace le pointeur interne de résultat
          echo "Ne peut pointer vers la ligne $i : " . mysql_error() . "\n"; //Message en cas d'erreur
          continue;
       }




      if (!($row = mysql_fetch_assoc($reqelev)))
     {  //j'affecte le resultat du tableau a la variable $row
          continue;
       }
       echo "<option value=".$row['id_elv'].">".$row['nom_elev'] . " ". $row['prenom_elev']. "</option>"; //affichege des valeurs contenue dans la variable $row
  }
?>
    </select>
   
    </form></td>
  </tr>
 
  <tr>
    <td width="210">Cours</td>
    <td width="250">Total en % </td>
    <td>D&eacute;cision</td>
  </tr>
  <tr>
  <?php
  if(isset ($_GET['select']))
 {
 $id=$_GET['select'];
   $sqlselec="SELECT classe.*, cours.*, resultats.*, eleves.* FROM cours, resultats, eleves inner join classe on
     classe.id_cl=cours.id_classe and cours.id_c=resultats.id_cours and resultats.id_eleves=eleves.id_elv where eleves.id_elv='$id'";
 echo $sqlselec;
 $req=mysql_query($sqlselec) or die('Erreur SQL!
'.$sqlselec.'
'.mysql_error());
  while ($row_affichages=mysql_fetch_array($req,MYSQL_ASSOC))
     { 
   
   ?>
    <td><?php echo $row_affichages['nom_cours']; ?></td>
    <td><?php echo $row_affichages['total_pourc']; ?></td>
    <td><form name="selection" method="post" action="">
      TV
      BR
      TV + BR
      R&eacute;ussit
   </form></td>
  </tr>
  <?php
}
?>

Encore, merci,

++
0
Rejoignez-nous