Envoyer le contenu d'une boucle avec la fonction mail() [Résolu]

Signaler
Messages postés
46
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
14 mai 2009
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Bonjour à tous,

Je vais essayer d'être clair si possible.
J'aimerais envoyer avec la fonction mail () de php, le contenu d'une petite commande qu'un utilisateur aurrait passé sur mon site.

J'arrive sans problème à afficher un tableau ( en utilisant une boucle for) récapitulatif de cette commande dans mon navigateur.

En revanche lorsque j'essaye de m'envoyer le contenu de cette commande en utilisant la fonction mail(), le script m'envoi un mail vide et m'affiche le contenu de ma boucle dans mon navigateur.

Un exemple de code sera plus explicite :

<?

function boucle_commande() {


$nb_de_ref = $_SESSION['nb_de_ref'];


for ( $nombre = 1 ; $nombre <= $nb_de_ref ; $nombre++ ) {


// Ce code est effectuer à chaque boucle
echo 'ref : '.$_SESSION['ref_'.$nombre.''].' | Quantité : '.$_SESSION['qte_'.$nombre.''].' | Prix U : '.$_SESSION['prix_u'.$nombre.''].' |

';
}
}

$destinataire= "mon_adresse_email";
$suject = "Une commande a été passé sur le site";
$message = "Voici le contenu de la commande";
$message .= boucle_commande();

$headers = 'From: adresse_email_webmaster'. "\r\n" .
'Reply-To: adresse_email_webmaster' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';



mail($destinataire, $suject, boucle_commande(), $headers);
?>

Voilà, en gros j'aimerais envoyer le contenu de la fonction boucle_commande() dans le corps $message de mon message, mais je n'y arrive pas c'est certainement pas grand chose mais j'ai besion d'un petit coup de pousse, car pour l'instant lorsque j'appelle la page contenant ce code cela m'envois bien "Voici le contenu de la commande" mais le tableau de la commande contenu dans la fonction boucle_commande() est affiché à l'écran au lieu de m'être envoyé par mail .

Merci d'avance pour votre aide, j'espère que mes explications sont assez claires

4 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
Salut,

<?php

function boucle_commande() {

$return='';


$nb_de_ref = $_SESSION['nb_de_ref'];



for ( $nombre = 1 ; $nombre <= $nb_de_ref ; $nombre++ ) {



// Ce code est effectuer à chaque boucle
$return.= 'ref : '.$_SESSION['ref_'.$nombre].' | Quantité :
'.$_SESSION['qte_'.$nombre].' | Prix U :
'.$_SESSION['prix_u'.$nombre].' |

';
}


echo $return;


return $return;



}

$destinataire= "mon_adresse_email";
$suject = "Une commande a été passé sur le site";
$message = "Voici le contenu de la commande";
$message .= boucle_commande();

$headers = 'From: adresse_email_webmaster'. "\r\n" .
'Reply-To: adresse_email_webmaster' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';




mail($destinataire, $suject, boucle_commande(), $headers);

?>



ta fonction ne faisait qu'afficher, elle ne renvoyait rien !!!



en plus, tu avais des $var.''.... dans ce cas, les guillemets sont
inutiles... et t'avais des <? à la place de <?php, et quelques
erreurs...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
46
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
14 mai 2009

Pardon,

Petite modif sur la dernière ligne de code

J'utilise cette ligne de code :
mail($destinataire, $suject, $message, $headers);

et nom pas :
mail($destinataire, $suject, boucle_commande(), $headers);

Merci à tous.
Messages postés
46
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
14 mai 2009

Merci à toi,

Ca marche nickel , j'ai juste enlevé le "echo
$return"
à la fin de la fonction pour que la commande ne s'affiche plus dans le navigateur au moment de l'envoi par mail().

Et génial ca fonctionne. Merci aussi pour les autres conseils.
Je débute en php et un perfectionnement ne me ferais pas de mal.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
de rien
lis ça :



http://coucou747.hopto.org/index.php?action=lire_page&id=4&mois=11-2005



pour bien programmer ça pourrait t'aider un peu...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)