boucle while et condition if ou je me trompe ?

n-287
Invité n'ayant pas de compte PHPfrance

11 mars 2006, 10:48

Salut tout le monde !

Je suis en train de programmer un petit truc et j'ai un probleme :
$requete_util_images=("select image from ".$utilisateur."_image where categorie=\"categorie1\"");
$req = mysql_query($requete_util_images) or die('Erreur SQL !<br>'.$requete_util_images.'<br>'.mysql_error());

while($data = mysql_fetch_assoc($req)) 
    {
    echo '<a href='.$data['image'].'><img src='.$data['image'].' border=0 width=60 height=60></a>&nbsp;&nbsp;';
	$data = mysql_fetch_assoc($req);
	echo '<a href='.$data['image'].'><img src='.$data['image'].' border=0 width=60 height=60></a>&nbsp;&nbsp;';
	$data = mysql_fetch_assoc($req);
	echo '<a href='.$data['image'].'><img src='.$data['image'].' border=0 width=60 height=60></a>&nbsp;&nbsp;';
	$data = mysql_fetch_assoc($req);
	echo '<a href='.$data['image'].'><img src='.$data['image'].' border=0 width=60 height=60></a><br><br>';
    } 
En fait je veut afficher les images contenu dans une table et qui sont de categorie1 (un champs de la table).
Mais je veut qu'il y en est que 4 par ligne, donc j'ai mis 4 fois un echo. Et la le probleme est que meme s'il y en a moins de 4 a la derniere ligne sa me les affichent quand meme. :roll:

J'ai essayé de mettre des condition if mais ca ne marche pas. Quelqu'un sait comment faire :D ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 mars 2006, 12:22

Je pense que ce post pourrait t'aider car il correspond bien à ton problème

http://www.phpfrance.com/forums/voir_su ... modulo.php
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

n-287
Invité n'ayant pas de compte PHPfrance

11 mars 2006, 12:46

merci je vai y jeter un oeil

meme deux :roll:

n-287
Invité n'ayant pas de compte PHPfrance

11 mars 2006, 12:54

je n'ai pas tres bien compris tout le code qui y est, mais moi les images que je veut mettre ne sont pas tous les enregistrement de ma table. car l'image doit avoir le champs categorie écrit "categorie1". Et il ne faut pas afficher celle de categorie2 par exemple.

Voici ma table :
ID - image - categorie

et les premieres entrer par exemple :
1 - http://salut.com/image.jpg - categorie1
2 - http://lalala.com/image.jpg - categorie2

Et je ne veut afficher que les images ayant categorie1 en commun et 4 par ligne. :wink:

Eléphanteau du PHP | 15 Messages

12 mars 2006, 15:47

Bonjour

Le principe c'est d'initialiser un compteur (qu'on appelle traditionnellement $i, je ne sais d'ailleurs pas trop pourquoi). A chaque boucle tu l'incrémentes et tu le testes
$requete_util_images=("select image from ".$utilisateur."_image where categorie=\"categorie1\"");
$req = mysql_query($requete_util_images) or die('Erreur SQL !<br>'.$requete_util_images.'<br>'.mysql_error());

//initialisation du compteur
$i=0;

while($data = mysql_fetch_assoc($req)) 
{
//$compteur +1
$i++;

echo '<a href='.$data['image'].'><img src='.$data['image'].' border=0 width=60 height=60></a>&nbsp;&nbsp;';

//si le reste de la division du compteur par 4 est 0, donc si le compteur est égal à 4, 8, 12 etc, on va à la ligne
if($i%4==0) echo '<br><br>';

} 
Tu vois le principe ?
Raf
Entre deux solutions, toujours choisir la troisième

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 mars 2006, 17:25

Il existe une instruction php que l'on nomme modulo (%) et qui permet de connaitre si un nombre est un multiple d'un autre

Si tu veux afficher 4 éléments par ligne, il faut que tu récupères les élements à afficher et que tu utilise un modulo
//Parcours de la totalité des images
for($i = 1; $i <= $nb_images; $i++) {
  //Affichage de l'image courante
  echo $a_images[$i];
  //Si le numéro d'image courant est un multiple de 4, retour à la ligne
  if ($i % 4)
    echo "<br />";
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 11 Messages

12 mars 2006, 20:41

Merci beaucoup !
Je me disais bien avoir vu un truc avec $i sur un site, mais je ne l'ai plus retrouvé.
en tous cas merci.
Je me suis inscrit lol
nairolf287 ...