Bonjour,

J'ai réussit à mettre mon tableau dans mon mail, mais j'ai quelques petits problèmes de présentation.

 $MailBody .= 
          '<table width="600" border="1">
  <tbody>
    <tr>
      <th scope="col">Réf</th>
      <th scope="col">Désignation</th>
      <th scope="col">Qte</th>
      <th scope="col">Prix</th>
      <th scope="col">Total</th>
    </tr>
    <tr>
      <td>'.$panier['libelleProduit'][$i].'</td>
      <td>'.$panier['designation'][$i].'</td>
      <th>'.$panier['qteProduit'][$i].'</th>
      <td>'.$panier['prixProduit'][$i].'</td>
      <td>'.($panier['qteProduit'][$i] * $panier['prixProduit'][$i]).'</td>
    </tr>
  </tbody>
</table>';          
         


J'ai deux fois Réf Désignation Qte Prix Total et les colonnes ne sont pas alignées. Je suis dessus depuis + 2 heures et je trouve pas de solution.

Merci par avance pour vos lumières.
Modifié par Tintin75 (14 Feb 2018 - 09:28)
Hello Smiley smile

t'es fatigué en ce moment non ?????


$MailBody .= 
          '<table width="600" border="1">
  <thead>
    <tr>
      <th scope="col">Réf</th>
      <th scope="col">Désignation</th>
      <th scope="col">Qte</th>
      <th scope="col">Prix</th>
      <th scope="col">Total</th>
    </tr>
</thead>
<tbody>';
! ATTENTION !!  SEULEMENT CETTE PARTIE CI-DESSOUS DANS LA BOUCLE
debut boucle
$MailBody .= 
    '<tr>
      <td>'.$panier['libelleProduit'][$i].'</td>
      <td>'.$panier['designation'][$i].'</td>
      <td>'.$panier['qteProduit'][$i].'</td>        <---- TD pas TH !! rohhh
      <td>'.$panier['prixProduit'][$i].'</td>
      <td>'.($panier['qteProduit'][$i] * $panier['prixProduit'][$i]).'</td>
    </tr>';
fin boucle
$MailBody .= 
'  </tbody>
</table>';     


voilà Smiley smile
Voici mon code corrigé :

$MailBody .= 
          '<table width="600" border="1">
  <thead>
    <tr>
      <th scope="col">Réf</th>
      <th scope="col">Désignation</th>
      <th scope="col">Qte</th>
      <th scope="col">Prix</th>
      <th scope="col">Total</th>
    </tr>
</thead>
<tbody>';

$MailBody .= 
    '<tr>
      <td>'.$panier['libelleProduit'][$i].'</td>
      <td>'.$panier['designation'][$i].'</td>
      <td>'.$panier['qteProduit'][$i].'</td>       
      <td>'.$panier['prixProduit'][$i].'</td>
      <td>'.($panier['qteProduit'][$i] * $panier['prixProduit'][$i]).'</td>
    </tr>';

$MailBody .= 
'  </tbody>
</table>'; 


Et toujours le même problème. Je suis effectivement fatigué en ce moment Smiley decu
t'as pas vu dans mon code la partie début de boucle fin de boucle ??
là j'en suis certain tout ça est dans un for($i=0;$i< XX;$i++)
du coup ton head de tableau et ton body de tableau sont tous les deux dans la boucle Smiley smile
regarde mon exemple Smiley cligne

c'est juste la partie de tes lignes qui doit être dans la boucle d'affichage de ton récap de commande Smiley cligne
Ok, je regarde, je savais bien qu'il y avait une histoire de boucle. Merci, je teste et je reviens.
Voici mon code complet

<?php         
        /* ATTENTION ne pas déplacer cette ligne ! Envoi détail commande client et gestion de la commande en html */

      $MailBody = '<b><u>Détail de votre commande</u></b><br>';

      $MailBody .= '<br>';   
          
$MailBody .= 
          '<table width="600" border="1">
  <thead>
    <tr>
      <th scope="col">Réf</th>
      <th scope="col">Désignation</th>
      <th scope="col">Qte</th>
      <th scope="col">Prix</th>
      <th scope="col">Total</th>
    </tr>
</thead>
<tbody>';
        
      $panier = $_SESSION['panier']; 
      $nb_produits = count($panier); 
      $do_op = 0; 
      for ($i = 0; $i < count($_SESSION['panier']['libelleProduit']); ++$i) {
      $do_op += $panier['qteProduit'][$i] * $panier['prixProduit'][$i]; 

$MailBody .= 
    '<tr>
      <td>'.$panier['libelleProduit'][$i].'</td>
      <td>'.$panier['designation'][$i].'</td>
      <td>'.$panier['qteProduit'][$i].'</td>       
      <td>'.$panier['prixProduit'][$i].'</td>
      <td>'.($panier['qteProduit'][$i] * $panier['prixProduit'][$i]).'</td>
    </tr>';

$MailBody .= 
'  </tbody>
</table>';       
        } 
        $MailBody .= '<br>';
        $MailBody .= '<u>Montant total de vos achats hors remise</u> : '.$do_op.' Euros';

        $Caddi = $MailBody; 
      ?>


Ca doit pas être grand chose, effectivement il faut passer par une boucle, ce qui est logique.

J'ai mon deuxième article qui n'est pas dans le tableau. Smiley bawling
Modifié par Tintin75 (14 Feb 2018 - 10:54)
ok je reprend que la partie concernée Smiley cligne


$panier = $_SESSION['panier']; 
      $nb_produits = count($panier); 
      $do_op = 0; 
      for ($i = 0; $i < count($_SESSION['panier']['libelleProduit']); ++$i) {
      $do_op += $panier['qteProduit'][$i] * $panier['prixProduit'][$i]; 

$MailBody .= 
    '<tr>
      <td>'.$panier['libelleProduit'][$i].'</td>
      <td>'.$panier['designation'][$i].'</td>
      <td>'.$panier['qteProduit'][$i].'</td>       
      <td>'.$panier['prixProduit'][$i].'</td>
      <td>'.($panier['qteProduit'][$i] * $panier['prixProduit'][$i]).'</td>
    </tr>';
 }   <----- LA
$MailBody .= 
'  </tbody>
</table>';       
       <------- PAS LA [cligne]
Meilleure solution
Merci pour ton aide, ça fonctionne nickel chrome. Tu es un grand chef et moi un âne fini.

Smiley prie Smiley merci
Modifié par Tintin75 (14 Feb 2018 - 11:03)
Une petite question pour la route, je souhaite utiliser un peu de css pour améliorer mon tableau, c'est possible avec mon cas ?

Je souhaite rajouter un truc dans ce genre :
div {
    border-width:1px;  
    border-style:solid;
}


Le truc, c'est que je ne sais pas trop comment mettre le code pour ce cas bien précis Smiley decu
C'est une autre question tu devrais ouvrir un autre sujet Smiley smile

Sinon -> tu ne peux pas vraiment charger une feuille de style extérieure pour ton mail Smiley smile (même si en fait si tu peux mais bon les clients mails aiment pas trop)

Donc tu ajoutes dans ton corps de mail les jolies balises <style> avec ton css spécifique dedans Smiley cligne

like this
<style>
div {
    border-width:1px;  
    border-style:solid;
}
</style>

Modifié par pchlj (14 Feb 2018 - 12:19)