Créer tableau imbriqué newsletter [Résolu]

weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention - 19 nov. 2014 à 19:29 - Dernière réponse : weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention
- 20 nov. 2014 à 09:00
Bonjour,

Je cherche a créer une requête pour afficher un tableau imbriqué d'un listing produit qui sera envoyé en tant que newsletter.


Ma requête :

<?php

$result = MYSQL_QUERY("SELECT
produit.nom,
produit.prix,
produit.url_image
FROM produit");

echo "<table width='600px' border='0' cellspacing='0' cellpadding='0'>
<tr>
<td>";

while($row = mysql_fetch_array($result)) {

echo "<table width='200px' border='0' cellspacing='0' cellpadding='0' align='left'>
<tr>";
echo "<td><img src='" . $row['url_image'] . "' width='200' height='auto' alt='" . $row['nom'] . "' border='0' ></td>
</tr>
<tr>";
echo "<td>" . $row['nom'] . "</td>
</tr>
<tr>";
echo"<td>" . $row['prix'] . "</td>
</tr>
</table>";}

echo "</td>
</tr>
</table>";

MYSQL_CLOSE();

?>


Le problème se pose quand il y a plus de 3 produits puisque le retour automatique à la ligne est très capricieux en fonction des navigateurs / logiciels mails.

Donc ma question du soir, comment répéter ce tableau si la requête retourne plus de 3 produits pour avoir comme résultat un tableau pour trois produits qui se répète plusieurs fois ?

Merci pour vos réponses,
Cordialement,
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
jordane45 22942 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention - 20 nov. 2014 à 01:03
1
Merci
Regarde ce que fait ce code :
echo "<table width='600px' border='0' cellspacing='0' cellpadding='0'>
  <tr>
  <td>";
$l = 0;  
$row['url_image']='zzz';
$row['nom'] ='toto';
$row['prix']="45 euros";

for($x=0;$x<12;$x++){
if($l%3==0 && $l>=3){
 echo " </td>
       </tr>
	   <tr>
	    <td>";
}
echo "<table width='200px' border='1' cellspacing='0' cellpadding='0' align='left'>
          <tr>";
            echo "<td><img src='" . $row['url_image'].'_l_'.$l.'-'.'x_'.$x . "' width='200' height='auto' alt='" . $row['nom'].'_l_'.$l.'-'.'x_'.$x . "' border='0' ></td>
          </tr>
          <tr>";
            echo "<td>" . $row['nom'].'_l_'.$l.'-'.'x_'.$x . "</td>
          </tr>
          <tr>";
            echo"<td>" . $row['prix'].'_l_'.$l.'-'.'x_'.$x . "</td>
          </tr>
        </table>";
$l++;
}
        
    echo "</td>
  </tr>
</table>";
 


Ensuite... remplaces le :
for($x=0;$x<12;$x++){
par ton While.
et retires les variables que j'ai initialisé pour les tests :
$row['url_image']='zzz';
$row['nom'] ='toto';
$row['prix']="45 euros";


Et normalement... tu auras bien ce que tu veux ....
3 Tableaux par lignes ... le tout. dans un tableau global.

Merci jordane45 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention - 20 nov. 2014 à 09:00
Très sincèrement, merci pour cette réponse qui correspond exactement et clairement à ma demande.

En fait, je crois que j'étais borné a vouloir répéter le tableau de 600px alors qu'il suffisait simplement de rajouter des lignes.

Dans tous les cas, encore merci ;)
Commenter la réponse de jordane45
NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 22 octobre 2018 Dernière intervention - 19 nov. 2014 à 19:44
0
Merci
Bonsoir,

Pourquoi ne pas utiliser un compteur et si % (modulo) 3 = 0 alors créer une nouvelle ligne ?
jordane45 22942 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention - 19 nov. 2014 à 21:21
Tu as testé ta requête en direct dans ta bdd ?
weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention - 19 nov. 2014 à 21:31
Oui, ma requête retourne tous les résultats et pour les tests, j'ai appliqué une limite de 9 produits :
ORDER BY product.id DESC LIMIT 0, 9


Avec le code donné je n'ai que 3 résultats :

$l = 0;
while($row = mysql_fetch_array($result)) {
$l++;
if($l%3==0 && $l>=3){
echo "<table width='600px' border='0' cellspacing='0' cellpadding='0'>
<tr>
<td>
<table width='200px' border='0' cellspacing='0' cellpadding='0' align='left'>
<tr>
<td><img src='" . $row['url_image'] . "' width='200' height='auto' alt='" . $row['nom'] . "' border='0' ></td>
</tr>
<tr>
<td>" . $row['nom'] . "</td>
</tr>
<tr>
<td>" . $row['prix'] . "</td>
</tr>
</table>
</td>
</tr>
</table>";}
}
jordane45 22942 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention - 19 nov. 2014 à 21:47
Par ce qe tu n'as pas appliqué MON code...
weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention - 19 nov. 2014 à 21:48
Euh... ?
jordane45 22942 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention - 19 nov. 2014 à 22:06
Là. .tel que tu l'a écrit. ..il ne t'affiche que les lignes multiples de 3 ...
Vu que tu as tout englobé dans le IF
Commenter la réponse de NHenry
weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention - 19 nov. 2014 à 22:22
0
Merci
Bon, je verrai ça une autre fois car je joue a pile ou face en mettant des morceaux de codes au pif et au final ça ne donne rien...

J'utiliserai ma requête initiale et je modifierai ma newsletter avant de l'envoyer car ça me demande plus de temps de tâtonner que de modifier mon premier code généré.

Merci pour vos réponses et votre temps,
Bonne soirée,
Commenter la réponse de weetabix40
jordane45 22942 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 octobre 2018 Dernière intervention - 19 nov. 2014 à 22:30
0
Merci
Il ne faut pas coller du code au pif...il faut réfléchir a ce que tu veux et utiliser les codes qu'on te donne intelligemment.


weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention - 19 nov. 2014 à 23:00
Oui, je suis bien conscient du but pédagogique de la réponse mais je dois clairement avoué que les 250 tutoriels que je viens de lire m'ont grillé le peux de cellules grises que j'ai... donc au final mes solutions du soir étaient :

- payer un prestataire pour 3 lignes de code qui me feront gagner 15min tous les jours,
- poster un message sur CCM pour espérer trouver des lignes guides (je vous remercie encore),
- batailler sur les réponses stackoverflow pour trouver quelque chose qui correspond a mes recherches.
- laisser tomber et essayer de finir les 3 tonnes de taches que j'ai en retard pour espérer partir quelques jours à noël.

Bonne soirée,
Cordialement.
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.