problème avec mysql_fetch_assoc() !! - PHP - Programmation
Marsh Posté le 16-03-2005 à 16:23:32
faut mettre ta requete dans la boucle, apres le while <= 5 truc
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_
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!
Marsh Posté le 16-03-2005 à 16:28:38
Super!
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...
Marsh Posté le 16-03-2005 à 16:31:50
Dans ce cas abstiens-toi de répondre!
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...
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