8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,
je cherche à envoyer le contenu d'un panier d'achat grâce à mail().
Pour ça, j'ai tenté de définir le contenu du mail comme ça :
$message=EnvoiCommande();

où la fonction EnvoiCommande() est mon panier php :
function EnvoiCommande(){
	if (creationPanier())
	{
		$nbArticles=count($_SESSION['panier']['libelleProduit']);
	  	if ($nbArticles <= 0)
	   	echo "<p>Votre panier est vide</p>";
	  	else
	  	{
		  	echo "<table border=\"0\" cellspacing=\"1\" cellpadding=\"0\">";
		    echo "<tr>";
		    echo "<th>libell&eacute;</th>";
		    echo "<th>caract&eacute;ristiques</th>";
		    echo "<th>quantit&eacute;</th>";
		    echo "<th>prix/plaque</th>";
		    echo "</tr>";
	    
	   		for ($i=0 ;$i < $nbArticles ; $i++)
	   		{
			    echo "<tr>";
			    echo "<td class=\"tableproduit\">".htmlspecialchars($_SESSION['panier']['libelleProduit'][$i])."</ td>";
			    echo "<td class=\"tableproduit\">".($_SESSION['panier']['caracProduit'][$i])."</ td>";
			    echo "<td class=\"tableproduit\"><input type=\"text\" size=\"4\" name=\"QteArticle[]\" value=\"".htmlspecialchars($_SESSION['panier']['qteProduit'][$i])."\"/></td>";
			    echo "<td class=\"tableproduit\">".htmlspecialchars($_SESSION['panier']['prixProduit'][$i])." euros</td>";
			    echo "</tr>";
	   		}
	   		echo "</table>";
	  	}
	}
}


Bon, mais y'a rien qui passe ; le mail est vide.
J'imagine que j'utilise pas la bonne méthode mais je ne sais pas du tout comment faire…
Quelqu'un pourrait-il m'aider ?
Merci d'avance

fschaff
Salut,

euh... il y a comme une confusion : tu fais des echo que tu tentes de récupérer dans une variable ? Smiley rolleyes

Il faudrait plutôt remplacer tous les echo par $chaine. = '<th>....</th>'; et terminer la fonction par return $chaine;
Modérateur
Salut,

+1

* Je dirais qu'il est préférable d'utiliser return qu'un simple echo pour une meilleur « portabilité ».
* De mémoire les paires de tags s'associent avec <thead></thead> et par la suite <tbody></tbody>, etc.

<table>
	<thead>
		<tr>
			<th>Weekday</th>
			<th>Date</th>
			<th>Manager</th>
			<th>Qty</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>Mon</td>
			<td>09/11</td>
			<td>Kelsey</td>
			<td>639</td>
		</tr>
		<tr>
			<td>Tue</td>
			<td>09/12</td>
			<td>Lindsey</td>
			<td>596</td>
		</tr>
		<tr>
			<td>Wed</td>
			<td>09/13</td>
			<td>Randy</td>
			<td>1135</td>
		</tr>
		<!-- ETC.-->
	</tbody>
</table>


* Pour finir, il me semble que ton code php (function EnvoiCommande()) a une erreur de syntaxe (gestion des accolades).

Bonne soirée
Modifié par Nolem (05 Jul 2009 - 21:12)
Salut Nolem, Smiley cligne

Nolem a écrit :
* 1
* 2
* 3
1) ce n'est pas "préférable" : en l'état echo ne peut pas fonctionner.
2) ce n'est pas obligatoire.
3) euh... non. Smiley smile
Modérateur
Hello Heyoan, Smiley smile

1. J'utilise régulièrement return. Cela permet de mieux gérer par la suite. Là en lisant le code, je ne comprends pas trop la fonction creationPanier() et son contenu.

2. Il me semblait.

3. Je viens de m'apercevoir qu'il y a plusieurs types d'écriture. Pas très logique Smiley ohwell

Par ailleurs, est ce normal de voir un tag <input ... /> sans les balises form ?

ps : Là où je suis, je ne peux pas tester le script.:/


++
Modifié par Nolem (05 Jul 2009 - 21:47)
Nolem a écrit :
je ne comprends pas trop la fonction creationPanier() et son contenu.
Eh bien je suppose que c'est une fonction qui effectue un test et qui renvoie true ou false. Smiley cligne

Nolem a écrit :
Par ailleurs, est ce normal de voir un tag <input ... /> sans les balises form ?
Puisqu'il s'agit à priori d'alimenter une variable $message il se peut qu'elle soit ensuite insérée dans un élément FORM... mais effectivement cela semble curieux.
ça marche nickel !
En effet la fonction creationPanier() effectue un test
Par contre le input est bien une erreur…

Merci pour votre aide et bonne soirée,
fschaff