Page 1 sur 1

Boucle mystérieuse

Posté : 18 janv. 2008, 16:51
par Oxley
$requete = mysql_query("SELECT Photo1,Photo2,Photo3,Photo4
					      FROM Annonce;");
					
	$cpt=1;			
	while($champ = mysql_fetch_array($requete) and $cpt!=4)
	{
	echo"$cpt<br>";
	$photo.$cpt=$champ["Photo$cpt"];
	echo"nom:$photo$cpt<br>";
	if($photo.$cpt=="non_disponible.gif")
		{
		$cpt++;
		
		}
	
	 }	
Ca m'affiche :

1
nom:63532800 1200590473.jpeg

Le boucle s'arrete à la premiere image, je ne comprend pas pourquoi!!!!
Auriez vous une réponse logique amon probléme????

Posté : 18 janv. 2008, 16:56
par d0m
essaie avec des opérateurs PHP corrects :
//pas bon
while($champ = mysql_fetch_array($requete) and $cpt!=4) 

//bon
while($champ = mysql_fetch_array($requete) && ($cpt!=4)) 

Posté : 18 janv. 2008, 17:02
par Oxley
Salut et merci,

Si je suis ta méthode ca me renvoie ceci :

1
nom:

Je pense qu'il doit y avoir un probléme avec mes ' ' ou " "

Dans cette ligne $photo.$cpt=$champ["Photo$cpt"];

Non?

Posté : 18 janv. 2008, 18:00
par Ryle
Ta boucle parcours les enregistrements ("lignes") retournés par ta requête, ce qui est différent de la liste des valeurs qu'ils contiennent... Tu as vraissemblablement donc 1 seul enregistrement retourné, contenant 4 champs, et ce sont ces 4 champs qu'il te faut parcourir après avoir lu le ou les enregistrements.. :)
Fais un print_r() de $champ, tu verras qu'il s'agit d'un tableau contenant les valeurs de chaque enregistrement qu'il te suffit d'afficher (à l'aide d'une boucle ou non) $champ['Photo1'], $champ['Photo2'], ...


@d0m : utiliser "and" à la place de "&&" n'est pas faux, il s'agit de deux opérateurs logiques différents, la différence se situant au niveau de leur priorité, principallement par rapport à l'affectation :
($champ = mysql_fetch_array($requete) and $cpt!=4) 
// équivaut à écrire
$champ = (mysql_fetch_array($requete) && $cpt!=4)
Ce n'est pas faux, ce n'est juste pas pareil ;)

Posté : 18 janv. 2008, 18:13
par Oxley
Oui merci ryle, je savais qu'on pouvait parcourir le tableau comme tu l'as indiqué, mais je veux faire une boucle pour compte le nombre de photo enregistrer

donc quand le nom de la photo est "non disponible" le compteur s'incrémente de 1, et a la fin si il y a par exemple le compteur a 2, ceci voudra dire qu'on pourra rajouter encore 2 photos.

Je voulais passer par une boucle pour eviter de refaire 4 if.

Je pense que ça doit etre possible avec une boucle car le pauvre qui veut faire pareil avec 100photos il est pas couché:p

Posté : 18 janv. 2008, 18:23
par Ryle
vivi, c'est possible avec une boucle, mais il te faut distinguer la boucle qui parcours les enregistrements trouvés en base (ce que fait actuellement ton while) et une seconde boucle qui parcourerait les champs de cet enregistrement :)

Posté : 18 janv. 2008, 19:07
par Oxley
Ah d'accord!!!!!!!!!!!!!

Bon voila le resultat final:
	while($champ = mysql_fetch_array($requete) and $cpt!=4)
	{
	$cpt=0;	
		for($i=0;$i<5;$i++)
		{
			
			if($champ[$i]=="non_disponible.gif")
				{
				$cpt++;
				}
			
		}
		
	
	}		

Tout est nikel merci beaucoup :D