Envoyer le contenu d'une boucle avec la fonction mail()

Résolu
cs_converse Messages postés 46 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 14 mai 2009 - 27 déc. 2005 à 11:40
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 27 déc. 2005 à 12:52
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

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
27 déc. 2005 à 12:20
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)
3
cs_converse Messages postés 46 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 14 mai 2009
27 déc. 2005 à 11:46
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.
0
cs_converse Messages postés 46 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 14 mai 2009
27 déc. 2005 à 12:42
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.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
27 déc. 2005 à 12:52
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)
0