aficher les valeur d'une boucle deux par deux.

Mammouth du PHP | 558 Messages

27 févr. 2008, 16:55

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.

ViPHP
ViPHP | 928 Messages

27 févr. 2008, 17:04

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++;
} 

Mammouth du PHP | 558 Messages

27 févr. 2008, 17:28

merci Genova
sa marche niquel.

Eléphant du PHP | 445 Messages

27 févr. 2008, 17:36

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>' ;