[php - sql] Boucle infinie, mais où ?
Résolu/Fermé
Une pattate qui vole
Messages postés
35
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
13 juin 2012
-
24 mai 2012 à 14:31
Une pattate qui vole Messages postés 35 Date d'inscription mardi 22 mai 2012 Statut Membre Dernière intervention 13 juin 2012 - 24 mai 2012 à 15:19
Une pattate qui vole Messages postés 35 Date d'inscription mardi 22 mai 2012 Statut Membre Dernière intervention 13 juin 2012 - 24 mai 2012 à 15:19
A voir également:
- [php - sql] Boucle infinie, mais où ?
- Easy php - Télécharger - Divers Web & Internet
- Blob sql ✓ - Forum Webmastering
- Récupération serveur sql - Télécharger - Gestion de données
- Redmi note 10 redemarre en boucle - Forum Xiaomi
- Php natif - Forum PHP
4 réponses
Templier Nocturne
Messages postés
7734
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
21 mai 2016
1 101
24 mai 2012 à 14:35
24 mai 2012 à 14:35
là :
do
{
if($n == 0)
{
$chaine.="adherant.IDAdherant = '".$id['IDAdherant']."'";
$n=1;
}else{
$chaine.="OR adherant.IDAdherant = '".$id['IDAdherant']."'";
}
}while($id=mysql_fetch_array(mysql_query($sql1)));
ta condition est toujours la même : la requête est exécutée.
ta requête :
SELECT IDAdherant FROM listemandat WHERE listemandat.IdTypeMandat = '$info'
va aller chercher tous les ID dans ta table, et à la boucle suivante... va recommencer.
c'est pour ça que ça tourne en rond, parce que ta condition est toujours vraie ;)
do
{
if($n == 0)
{
$chaine.="adherant.IDAdherant = '".$id['IDAdherant']."'";
$n=1;
}else{
$chaine.="OR adherant.IDAdherant = '".$id['IDAdherant']."'";
}
}while($id=mysql_fetch_array(mysql_query($sql1)));
ta condition est toujours la même : la requête est exécutée.
ta requête :
SELECT IDAdherant FROM listemandat WHERE listemandat.IdTypeMandat = '$info'
va aller chercher tous les ID dans ta table, et à la boucle suivante... va recommencer.
c'est pour ça que ça tourne en rond, parce que ta condition est toujours vraie ;)
Il n'y a qu'un seul = dans ta boucle, tu initialize $id au lieu de le comparer.
Il faut mettre ==
Il faut mettre ==
while($id == mysql_fetch_array(mysql_query($sql1)))
Templier Nocturne
Messages postés
7734
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
21 mai 2016
1 101
24 mai 2012 à 14:38
24 mai 2012 à 14:38
non, là aussi ce sera toujours vrai ;)
Une pattate qui vole
Messages postés
35
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
13 juin 2012
24 mai 2012 à 14:52
24 mai 2012 à 14:52
Bon ... j'avais oublié que l'informatique était plus stupide que le cerveau humain (et que certain humain avait un cerveau informatique).
J'ai modifier mon code un tout petit peu et je n'ai plus de boucle infinie.
J'ai maintenant un autre problème, mais je vais regarder ou ça bloque avant de poser la question.
Merci de vos suggestion, elle m'ont aidé à me dire : « Ça ne mène pas à grand chose, qu'ai-je fait de différent à l'habitude. » Et j'ai trouvé.
J'ai modifier mon code un tout petit peu et je n'ai plus de boucle infinie.
if(isset($_POST['IdTypeMandat'])) { $info=$_POST['IdTypeMandat']; $sql1="SELECT IDAdherant FROM listemandat WHERE listemandat.IdTypeMandat = '$info'"; $chaine=""; $idreq=mysql_query($sql1); $id=mysql_fetch_array($idreq); $n=0; do { echo '<br>IDAdhearant = '.$id['IDAdherant']; if($n == 0) { $chaine.="adherant.IDAdherant = '".$id['IDAdherant']."'"; echo '<br>$n = '.$n; $n=1; echo '<br>$n = '.$n; }else{ $chaine.="OR adherant.IDAdherant = '".$id['IDAdherant']."'"; echo '<br>$n = '.$n; } }while($id=mysql_fetch_array($idreq)); $sql2="SELECT * FROM adherant WHERE ".$chaine; }
J'ai maintenant un autre problème, mais je vais regarder ou ça bloque avant de poser la question.
Merci de vos suggestion, elle m'ont aidé à me dire : « Ça ne mène pas à grand chose, qu'ai-je fait de différent à l'habitude. » Et j'ai trouvé.
L0ci
Messages postés
110
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
9 janvier 2013
30
24 mai 2012 à 15:11
24 mai 2012 à 15:11
Bonjour,
je pense que le problème vient du fait que tu initialises
$id = mysql_fetch_array($idreq);
et que la condition du while est $id = mysql_fetch_array($idreq);
les 2 variables $id et $idreq ont toujours la même valeur donc en gros $id = $id en permanence.
je pense que le problème vient du fait que tu initialises
$id = mysql_fetch_array($idreq);
et que la condition du while est $id = mysql_fetch_array($idreq);
les 2 variables $id et $idreq ont toujours la même valeur donc en gros $id = $id en permanence.
Une pattate qui vole
Messages postés
35
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
13 juin 2012
24 mai 2012 à 15:19
24 mai 2012 à 15:19
non, il n'y a plus de problème. désolé, j'ai pas mis résolu en haut ...
Le problème venait de la syntaxe tout simplement.
Je mettais en une ligne :
mysql_fetch_array entre la requête dans un tableau et fait automatiquement le passage à la valeur suivante du tableau à chaque nouvel appel de la fonction.
Merci quand même ^^
Le problème venait de la syntaxe tout simplement.
Je mettais en une ligne :
$id=mysql_fetch_array(mysql_query($sql1))Je suis donc passé à deux ligne :
$idreq=mysql_query($sql1) $id=mysql_fetch_array($idreq)
mysql_fetch_array entre la requête dans un tableau et fait automatiquement le passage à la valeur suivante du tableau à chaque nouvel appel de la fonction.
Merci quand même ^^