Prob avec les boucle While (PHP)
Fermé
Bonjour je debute et je seche sur un drole de problème
Sur une page j'utilise 2 boucle while a deux endroit et pour deux raisons bien distincte
Si la première (dans l'ordre de lecture de la page) s'execute la seconde ne fonctionne plus... si je désactive la premiere comme par enchantement la seconde fonctionne
Je pense qu'il faut fermer les boucles proprement mais je vois pas du tout comment faire... franchement c bizarre
J'attend vos réponses, merci
Sur une page j'utilise 2 boucle while a deux endroit et pour deux raisons bien distincte
Si la première (dans l'ordre de lecture de la page) s'execute la seconde ne fonctionne plus... si je désactive la premiere comme par enchantement la seconde fonctionne
Je pense qu'il faut fermer les boucles proprement mais je vois pas du tout comment faire... franchement c bizarre
J'attend vos réponses, merci
A voir également:
- Prob avec les boucle While (PHP)
- Easy php - Télécharger - Divers Web & Internet
- Boucle cmd - Forum Programmation
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Huawei s'allume et s'éteint en boucle - Forum Huawei
5 réponses
Utilisateur anonyme
21 août 2003 à 17:19
21 août 2003 à 17:19
Salut,
Ben heu, c'est un peu obscure comme ca... Montre ton code, qu'on puisse jeter un coup d'oeil.
Tu dois avoir une erreur quelque part. :)
Kalamit,
Parle à ma culasse, mon carter est malade. :)
Ben heu, c'est un peu obscure comme ca... Montre ton code, qu'on puisse jeter un coup d'oeil.
Tu dois avoir une erreur quelque part. :)
Kalamit,
Parle à ma culasse, mon carter est malade. :)
Donc voici le code en question
//ici je récupère dans la variable $diapos une partie d'un tableau Mysql
if($page != ''){
$requete = "SELECT * FROM diapos WHERE page='$page' ORDER BY position ASC";
$diapos = mysql_query ($requete,$db);
}
//Là c'est la premiere boucle while qui marche trés bien
while ($donne = mysql_fetch_object($diapos))
{
print ("$donne->img1\, $donne->img2, $donne->url");
}
//Et pour finir la boucle qui ne fonctionnne qu'en desactivant la premiere
while ($donnee = mysql_fetch_object($diapos))
{
print ("test = $donnee->nom retest = $donnee->url");
}
Voilà je seche... mais la seul solution que j'ai trouvé c'est fermer par une fonction ces boucle mais là c'est un truc que je connait pas encore
//ici je récupère dans la variable $diapos une partie d'un tableau Mysql
if($page != ''){
$requete = "SELECT * FROM diapos WHERE page='$page' ORDER BY position ASC";
$diapos = mysql_query ($requete,$db);
}
//Là c'est la premiere boucle while qui marche trés bien
while ($donne = mysql_fetch_object($diapos))
{
print ("$donne->img1\, $donne->img2, $donne->url");
}
//Et pour finir la boucle qui ne fonctionnne qu'en desactivant la premiere
while ($donnee = mysql_fetch_object($diapos))
{
print ("test = $donnee->nom retest = $donnee->url");
}
Voilà je seche... mais la seul solution que j'ai trouvé c'est fermer par une fonction ces boucle mais là c'est un truc que je connait pas encore
la fonction mysql_fetch_object recupere une ligne de ta requete
la boucle s'arrete quand tu as tout extrait
si apres tu refais un mysql_fetch_object il ne feras plus rien car tu as tout extrait
Essaye ca:
if($page != ''){
$requete = "SELECT * FROM diapos WHERE page='$page' ORDER BY position ASC";
$diapos = mysql_query ($requete,$db);
}
while ($donne = mysql_fetch_object($diapos))
{
print ("$donne->img1\, $donne->img2, $donne->url");
}
if($page != ''){
$diapos2 = mysql_query ($requete,$db);
}
while ($donnee = mysql_fetch_object($diapos2))
{
print ("test = $donnee->nom retest = $donnee->url");
}
la boucle s'arrete quand tu as tout extrait
si apres tu refais un mysql_fetch_object il ne feras plus rien car tu as tout extrait
Essaye ca:
if($page != ''){
$requete = "SELECT * FROM diapos WHERE page='$page' ORDER BY position ASC";
$diapos = mysql_query ($requete,$db);
}
while ($donne = mysql_fetch_object($diapos))
{
print ("$donne->img1\, $donne->img2, $donne->url");
}
if($page != ''){
$diapos2 = mysql_query ($requete,$db);
}
while ($donnee = mysql_fetch_object($diapos2))
{
print ("test = $donnee->nom retest = $donnee->url");
}
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
21 août 2003 à 19:24
21 août 2003 à 19:24
Bsr Percherie
En effet à l'issue de ta 1ère boucle le pointeur interne est positionné à la fin du jeu d'enregistrements retournés par ta requête sql.
Autrement dit dès que tu éxécutes de nouveau mysql_fetch_object() au début de la seconde boucle le résultat retourné est FALSE : la boucle se termine aussitôt.
L'astuce : replacer le pointeur au départ, tout simplement !
En plus ca t'évite de réexécuter la même requête : simplification & optimisation que demander de plus.
Et la syntaxe est :
bool mysql_data_seek ( resource result_identifier, int row_number)
Donc avant ta seconde boucle tu mets :
Et ca roule ... ;-)
@+
PhP [Push the button,Don't push the
. button,Trip the station,Change the channel]
En effet à l'issue de ta 1ère boucle le pointeur interne est positionné à la fin du jeu d'enregistrements retournés par ta requête sql.
Autrement dit dès que tu éxécutes de nouveau mysql_fetch_object() au début de la seconde boucle le résultat retourné est FALSE : la boucle se termine aussitôt.
L'astuce : replacer le pointeur au départ, tout simplement !
En plus ca t'évite de réexécuter la même requête : simplification & optimisation que demander de plus.
Et la syntaxe est :
bool mysql_data_seek ( resource result_identifier, int row_number)
Donc avant ta seconde boucle tu mets :
mysql_data_seek($diapos,0);
Et ca roule ... ;-)
@+
PhP [Push the button,Don't push the
. button,Trip the station,Change the channel]
Ok j'avais penssai a ça aussi mais j'etait pas remonter aussi loin dans cette logique
Comme la toute premiere partie du code ce trouve avec les parametre de connection a la base je vais essayé ceci :
$requete = "SELECT * FROM diapos WHERE page='$page' ORDER BY position ASC";
$diapos = mysql_query ($requete,$db);
$diapos2 = mysql_query ($requete,$db);
Perso en debut d'aprés midi j'avais tenter ceci : $diapos2 = $diapos mais sans succés... a moins qu'il fallait repeter la requete depuis le debut
Enfin quoi qu'il en soit je vais tester ça cette nuit (faut s'occuper des gosses là) et je vous tient au courant
Comme la toute premiere partie du code ce trouve avec les parametre de connection a la base je vais essayé ceci :
$requete = "SELECT * FROM diapos WHERE page='$page' ORDER BY position ASC";
$diapos = mysql_query ($requete,$db);
$diapos2 = mysql_query ($requete,$db);
Perso en debut d'aprés midi j'avais tenter ceci : $diapos2 = $diapos mais sans succés... a moins qu'il fallait repeter la requete depuis le debut
Enfin quoi qu'il en soit je vais tester ça cette nuit (faut s'occuper des gosses là) et je vous tient au courant
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question