Afficher N produits par ligne

cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011 - 15 déc. 2005 à 10:25
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011 - 16 déc. 2005 à 21:04
Hello, le sujet résume ma question. J'ai la requette SQL suiavnte pour récupérer de maniere aléatoire 8 produits
SELECT * FROM produits ORDER BY RAND() LIMIT 8

J'ai la boucle suiavnte pour l'affichage des produits (1 produits par ligne )
<?php
while($row = mysql_fetch_array($result))
{
?>
----

<table width="100%" border="0" cellpadding="0" cellspacing="0" class="txt">
----,

\">
</td>
&nbsp;,

----

Produit :,
<?php echo $row["nom_prod"]; ?>,
&nbsp;,

----

.,

----

&nbsp;,

----

Prix :,
<?php echo $row["prix"]; ?> &euro; TTC,
&nbsp;
</td>
</tr>

<tr>
<td height="25" colspan="6">
<hr width="80%" size="1" NOSHADE color="<?php include("couleur.php"); ?>"> </td>
</tr>
<?php
}
?>
</table>

Par contre je ne sais pas comment faire pour afficher 4 produits par ligne et que le nombre de ligne augmente ou diminu sivant le nombre de produits que je désire afficher.

Merci de votre aide

8 réponses

tetedemul Messages postés 47 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 4 janvier 2006
15 déc. 2005 à 18:04
tu peux faire un truc du style:
$i=0;
print("<table><tr>");
while(...)
{
if(i%4==0 && i<>0)//si i est un multiple de 4, arrive tous les 4 enregistrements...
print("</tr><tr>"); //on ferme la ligne et on commence une nouvelle (on a exclu i=0 car dans ce cas là il n'y a pas de <tr> à fermer
print ("<td>".$produit.</td>"); //arrive tout le temps
i++; //on incrémente i
}

Debutant informatique :-)
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
15 déc. 2005 à 20:05
Le principe est celui que je cherche mais le script ne marche pas.
Apparement il manque un double quot apres : ".$produit.
Pourquoi n'i a t'il pas de fermeture de la balise TABLE et TR ?
Je me permet ces remarques même ci je ne sais pas comment réaliser.
0
tetedemul Messages postés 47 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 4 janvier 2006
15 déc. 2005 à 21:46
Simples oublis
$i=0;
print("\");
while(...)
{
if(i%4==0 && i<>0)//si i est un multiple de 4, arrive tous les 4 enregistrements...
print(\"----
\"); //on ferme la ligne et on commence une nouvelle (on a exclu i=0 car dans ce cas là il n'y a pas de ----
à fermer
print (\"".$produit.", \"); //arrive tout le temps
i++; //on incrémente i
}
print("
");

Cela marche-t-il maintenant ou pas?
Debutant informatique :-)
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
16 déc. 2005 à 09:44
Et Flute ca ne marche pas j'ai une erreur sur la ligne 88 :
Ligne 88 : i++; //on incrémente i
Message : Parse error: parse error, unexpected T_INC in index1.php on line 88

Par contre j'ai completé la ligne : while(...) comme suite : while($row = mysql_fetch_array($result))

Comment doit je corriger cette erreur ?

Merci de ton aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tetedemul Messages postés 47 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 4 janvier 2006
16 déc. 2005 à 11:05
Désolé, tout est de ma faute, j'ai oublié les $ devant les noms de variables ! (je suis sur c++ en ce moment donc j'ai perdu l'habitude).
$i=0;
print("\");
while($row=mysql_fetch_row($result))
{

if($i%4==0 && $i<>0)//si i est un multiple de 4, arrive tous les 4 enregistrements...
print(\"----
\"); //on ferme la ligne et on commence une nouvelle (on a exclu i=0 car dans ce cas là il n'y a pas de ----
à fermer
print (\"".$row[1].", \"); //arrive tout le temps
$i++; //on incrémente i
}
print("
");
Ce code marche, je l'ai testé.
Debutant informatique :-)
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
16 déc. 2005 à 11:51
Merci pour ce code qui fonctionne.
Par contre je viens de m'appercevoir qu'il y a que le premier champ de la table qui s'affiche alors que dans mon exemple au debut du post je shouterai avoir :


- L'image du produit (".$row[10].") en dessous
- Le nom du produit (".$row[2].") en dessou
- Le prix du produit (".$row[4].") en dessou
- Le bouton commander.

A l'heure actuelle j'affiche l'image (contenu dans la DB) comme ça :
Et le bouton commander comme ça : [magasin/cart.php?action=add_item&id=<?php echo $row[ &qty=1">]

Comment l'adapter à ton script ?
Pourquoi utilise on le numero du champ de la table plutôt que son nom ($row[10] correspondait à $row[image])

Merci de ton aide qui a fait grandemant avencer mon projet
0
tetedemul Messages postés 47 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 4 janvier 2006
16 déc. 2005 à 12:59
<?php
print("<td ...>".$row['titre']."
</td>");
?>
Tu peux t'inspirer de ça pour ce dont tu as besoin (le code html peut être intégré en php avec un print ou un echo) . Si vraiment tu comprends pas, tu me dis et je le ferai à partir du fichier html que t'as posté au début (mais ça me lourde et tu dois pouvoir faire ça tout seul).
Debutant informatique :-)
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
16 déc. 2005 à 21:04
Ca tourne trés bien merci de ton aide, mais comme je le soupsonnais, suivant la hauteur de l'image les informations qui se trouvent en dessous (nom du produit, prix, bouton commander) ne sont pas aligné sur le même niveau c'est pour ca que j'aimerai avoir un tableau comme dans mon premier post.
Donc sachant que ca ne t'arrange pas peut tu essayer de faire un tableau pour avoir une mise en page parfaite.

Merci de ton aide et désolé du dérangement.
0
Rejoignez-nous