Page 1 sur 1

aficher les valeur d'une boucle deux par deux.

Posté : 27 févr. 2008, 16:55
par hakazizi
j'explique.
sur mon site je voudrais afficher mes articles deux par deux et les limiters au nombre de 4.
avoir quelque chose comme ceci.

Code : Tout sélectionner

<table border="0"> <tr> <td align="center"> </td> <td align="center"> </td> </tr> <tr> <td align="center"> </td> <td align="center"> </td> </tr> </table>
maintenant le php.
voici ce que j'ai
$mod1 = mysql_query("SELECT * FROM `produit` WHERE `type` = '$type'  AND `stock` > 0 LIMIT ".$page1.",4");
while ($mod=mysql_fetch_array($mod1))
{
}
?>
Je voudrais savoir comment agencer mon script afin de n'avoir qu'une seul requete sql a faire.
merci.

Posté : 27 févr. 2008, 17:04
par Genova
Bonjour,
tu peux utiliser l'opérateur % (modulo) de PHP afin de gérer des cas une fois sur deux, comme ceci :
$mod1 = mysql_query("SELECT * FROM `produit` WHERE `type` = '$type'  AND `stock` > 0 LIMIT ".$page1.",4");
$i = 0;
while ($mod=mysql_fetch_array($mod1))
{
   if (($i % 2) == 0)
   {
      // $i est paire, ici tu ouvres une ligne et tu affiches ta première colone
   }
   else
   {
       // $i est impaire, ici tu affiches ta seconde colone et tu finis ta ligne
   }
   $i++;
} 

Posté : 27 févr. 2008, 17:28
par hakazizi
merci Genova
sa marche niquel.

Posté : 27 févr. 2008, 17:36
par h0_noMan
Faut aussi traiter le cas ou tu as un nombre impair.
Car sur la dernière ligne tu n'auras qu'une seule cellule ce qui n'est pas syntaxiquement correct.

Tu devras alors mettre une cellule vite a droite de la dernière.
$mod1 = mysql_query("SELECT * FROM `produit` WHERE `type` = '$type'  AND `stock` > 0 LIMIT ".$page1.",4");
$i = 0;
while ($mod=mysql_fetch_array($mod1))
{
   if (($i % 2) == 0)
   {
      // $i est paire, ici tu ouvres une ligne et tu affiches ta première colone
   }
   else
   {
       // $i est impaire, ici tu affiches ta seconde colone et tu finis ta ligne
   }
   $i++;
}
if( $i%2 == 0)
echo '<td>&nbsp;</td></tr>' ;