Afficher N produits par ligne

Signaler
Messages postés
208
Date d'inscription
jeudi 3 octobre 2002
Statut
Membre
Dernière intervention
31 mars 2011
-
Messages postés
208
Date d'inscription
jeudi 3 octobre 2002
Statut
Membre
Dernière intervention
31 mars 2011
-
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

Messages postés
47
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
4 janvier 2006

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 :-)
Messages postés
208
Date d'inscription
jeudi 3 octobre 2002
Statut
Membre
Dernière intervention
31 mars 2011

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.
Messages postés
47
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
4 janvier 2006

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 :-)
Messages postés
208
Date d'inscription
jeudi 3 octobre 2002
Statut
Membre
Dernière intervention
31 mars 2011

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
Messages postés
47
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
4 janvier 2006

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 :-)
Messages postés
208
Date d'inscription
jeudi 3 octobre 2002
Statut
Membre
Dernière intervention
31 mars 2011

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
Messages postés
47
Date d'inscription
vendredi 16 avril 2004
Statut
Membre
Dernière intervention
4 janvier 2006

<?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 :-)
Messages postés
208
Date d'inscription
jeudi 3 octobre 2002
Statut
Membre
Dernière intervention
31 mars 2011

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.