problème avec mysql_fetch_assoc() !!

problème avec mysql_fetch_assoc() !! - PHP - Programmation

Marsh Posté le 16-03-2005 à 16:20:03    

Salut à tous, je suis en train de réaliser un page en php visant à afficher de manière structurée un tableau mysql, et je doit accéder plusieurs fois à cette boucle:
 
  " while(  (  $data = mysql_fetch_assoc($req)  )  )  "
 { ....  }
 
La première fois, il entre dans la boucle correctement, et ensuite, j'ai l'impression que le programme considère que la condition n'est pas valide et ne rendre donc plus dans la boucle.
 
Voila mon programme complet:
 
<?php
//on se connect a mysql
$db = mysql_connect("localhost","root","asefthukom" );
//on selectionne la base
mysql_select_db("projet_php", $db);
//on crée la requete sql
$sql = "SELECT id_formation,nom,formation FROM formation";  
//on evoie la requete
$req= mysql_query( $sql) or die('ma requête'.$sql.'est defectueuse'.mysql_error());
$x = 3;     //correspond aux formations bac + 3, puis 4 , puis 5
echo '<ul>';
while (  $x <= 5 )
 {
 echo '<li><h4>     Formations bac + '.$x.'</h4></li>';
 echo '<ol>';        
 while(  (  $data = mysql_fetch_assoc($req)  )  )    
  {
  if( $data['formation'] == $x )
   {
   echo '<li>
   <a href="details_une_formation.php?id_formation='.$data['id_formation'].'">'.$data['nom'].'</a>
   </li>';
   }
  }
 echo '</ol>';
 $x = $x + 1;
 }
echo '</ul>';
//on ferme la connexion à mysql
mysql_close();
?>
 
 
et voila ce qu'il m'affiche:
 
 
 
. formation bac + 3
      1.license ville d'avray
. formation bac + 4
. formation bac + 5
 
pour bac+3 cela fonctionne, mais pour 4 et 5 il ne m'écrit rien
 
Si vous pouviez me donner un coup de mains, SVP
Merci
 

Reply

Marsh Posté le 16-03-2005 à 16:20:03   

Reply

Marsh Posté le 16-03-2005 à 16:23:32    

faut mettre ta requete dans la boucle, apres le while <= 5 truc

Reply

Marsh Posté le 16-03-2005 à 16:25:02    

ton algo est mauvais.
Au premier tour de boucle de ton while($x <= 5) tu lis tous les résultats de ta requête, et tu ne reviens pas au début pour les tours suivants...
Tu peux revoir ton algo, ou utiliser
http://www.nexen.net/docs/php/anno [...] ien=mysql_


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-03-2005 à 16:25:41    


 
T'as raison, comme ça il exécute plusieurs foisla même requête pour rien![:w3c compliant]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-03-2005 à 16:26:57    

c'est pour simplifier :o

Reply

Marsh Posté le 16-03-2005 à 16:28:38    


Super![:mlc]
mysql_data_seek est pas optimal non plus, mais aussi simple que de déplacer la requête et nettement plus judicieux, quand même...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-03-2005 à 16:31:13    

la flemme stout [:benou]

Reply

Marsh Posté le 16-03-2005 à 16:31:50    


Dans ce cas abstiens-toi de répondre! [:dawa]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-03-2005 à 16:32:02    

ca marche [:dawa]

Reply

Marsh Posté le 16-03-2005 à 16:53:25    

Merci, je vais tenter d'utiliser mysql_data_seek().

Reply

Marsh Posté le 16-03-2005 à 16:53:25   

Reply

Marsh Posté le 16-03-2005 à 16:56:01    

_gargamel_ a écrit :

Merci, je vais tenter d'utiliser mysql_data_seek().


C'est la solution la plus simple.
Après tu as moyen de faire plus optimal (ie parcourir une seule fois les résultats de ta requête) en triant tes données dans la requête...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-03-2005 à 17:02:57    

C'est bon, le problème est réglé, sa marche impecable

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed