IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Mail] Mail confirmation résumé panier


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 5
    Points
    5
    Par défaut [Mail] Mail confirmation résumé panier
    Bonjour à Tous,

    Je suis sur le point de finaliser un petit shop en ligne. Tout fonctionne nickel (session, panier, ajout, suppression).

    J'en arrive au checkout où je souhaite simplement envoyer un mail au commerçant et une confirmation à l'acheteur.
    Seulement voilà, comment puis-je intégrer à mon mail le résumé du panier (géré par session) (boucle foreach et while) ?

    Est-il possible, à l'intérieur de la fonction mail(), de faire usage d'une boucle pour lister les produits commandés ? Comment procéder au mieux ?

    Merci de m'éclairer !

    Len

  2. #2
    Membre régulier Avatar de Rodrick
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2005
    Messages : 92
    Points : 83
    Points
    83
    Par défaut
    Il suffit de préparer ton message dans une variable au format HTML et d'envoyer le message au format HTML.
    Je pense qu'il faut inclure quelque chose de spécial pour dire que le mail sera en HTML. Renseigne toi sur ça.
    Allez une tite bière et au boulot!!!

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse Rodrick !

    J'aimerai bien préparer mon message dans une variable.

    Mon problème c'est comment réaliser une boucle afin de stocker le détail des différents articles commandés qui seront envoyés comme confirmation de commande ?

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Encore moi !

    J'explore la piste sugérée par Rodrick (Mail HTML), mais je bute.

    Comment intégrer des variables dans le code HTML contenu dans mon $message=''; ?

    J'ai trouvé passablement d'exemple, mais pas ce dont j'ai besoin !
    Typiquement, je récupère du formulaire précédent le checkout, les données pour l'envoi de la commande (nom, adresse, etc.) Comment les insérer dans mon code HTML du mail ? Je dois me gourrer entre " et '. Si vous aviez un petit exemple !?

    Deplus, cette variante me permettrait-elle d'exécuter une boucle directement (je stock en variable de session le panier que j'aimerai pouvoir confirmer à l'acheteur et au commerçant).

    Un petit coup de pouce serait vraiment sympa !

  5. #5
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Humm... je ne vois pas vraiment ou se situe ton problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $ma_variable = '';
     
    while (toute mes données ne sont pas lue) {
      $ma_variable .= 'mes donnees que je concatene' . '<br />';
    }
     
    mail('adresse@email.com', 'Confirmation de votre commande', $ma_variable, $eventuels_header_pour_envoyer_en_html);
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse Rakken !

    Voilà, ton exemple me permet d'avancer un petit peu.

    En fait, je souhaite faire un tableau dans mon mail html qui me permettrait d'afficher le contenu du panier comme confirmation de commande.

    Comment dans ce cas, "ressortir" les variables stockées via ma boucle ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Bon, ca roule question données du formulaire.

    Il ne me reste plus qu'a traiter les variables de ma session.

    Est-il possible de réaliser une boucle directement dans ma variable $message 1 (cf ci-dessous) et si oui, comment ?

    Merci d'avance !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <? 
    $dest1='info@xxx.xx';
    $email1='mailto:$email';
    $objet1='Commande - xxxx';
    $message1='		
    <html><head></head><body>
    <p>Vous avez reçu la commande Internet suivante : </p><p>Coordonnées de facturation :</p>
    <table >
    <tr>
    <td>Nom/prénom</td>
    <td>:</td>
    <td>'.$nomprenom.'</td></tr>
    <tr><td>Adresse</td>
    <td>:</td>
    <td>'.$adresse.'</td></tr>
    <tr><td>NPA/Localité</td>
    <td>:</td>
    <td>'.$npa.'&nbsp;'.$localité.'</td></tr>
    <tr><td>e-mail</td>
    <td>:</td>
    <td>'.$email.'</td></tr>
    <tr><td>Remarque</td>
    <td>:</td>
    <td>'.$remarque.'</td>
    </tr>
    </table> 
    <p>Détail de la commande :</p>
    <table >
    <tr>
    <th scope="col">Vin</th>
    <th scope="col">Millé.</th>
    <th scope="col">Cond.</th>
    <th scope="col">Px/Pce</th>
    <th scope="col">Qté</th>
    <th scope="col">Prix (CHF)</th>
    </tr>
    boucle commence ici...
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    </table>
    </body>
    </html>
    ' ;	
    $from  = "From:info@xxxx.xx\n";
    $from .= "MIME-version: 1.0\n";
    $from .= "Content-type: text/html; charset= iso-8859-1\n"; 
    mail($dest1, $objet1, $message1, $from); 
    ?>

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Bon ben je m'en sors pas !

    Vu le nombre de réponse, je me demande si ma question est débile ?

    Sur ma dernière page du shop, j'affiche une dernière fois le résumé de ma commande.

    Ce que j'essaie de faire maintenant c'est, lors de ma boucle pour l'affichage de ma commande, de stocker les différents éléments de cette boucle dans des variables indépendantes ce qui me permettrait de compléter les champs manquants dans mon mail de confirmaiton (c'est farfelu, mais je vois pas comment faire autrement !).

    Seulement voilà, comment incrémenter ma variable $vin par exemple, de sorte qu'au premier passage, la variable $vin1 soit égale au premier produit, puis que $vin2 au deuxième, etc. ?

    J'ai essayé comme ca et ca marche pas !

    Puis-je espérer un coup de main ? Si ca manque de clareté dite-le !!

    Ca serais sympa...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <? $i=1;  
    $vin="vin";
    foreach ($panier as $idvin=>$qte) {
    $query1="select * from vin where idvin='$idvin'";
    $res1=mysql_query($query1, $db); 
    while ($enr1=mysql_fetch_array($res1))
    {
    $query31="select * from cond where idcond='$enr1[2]'";
    $res31=mysql_query($query31, $db);
    $enr31=mysql_fetch_array($res31);
    $query41="select * from typevin where idtypevin='$enr1[1]'";
    $res41=mysql_query($query41, $db);
    $enr41=mysql_fetch_array($res41);
    ?>
    <tr>
    <td><? echo "$enr41[3]"; 
    $vin.$i=$enr41[3];?></td>
    <td><? echo "$enr1[3]";?></td>
    <td><? echo "$enr31[1]";?></td>
    <td><? echo "$enr1[4]";?></td>
    <td><? echo "$qte";?></td>
    <td><? $pxligne=$enr1[4]*$qte;
    $pxligneformat=number_format($pxligne, 2,'.',' ');
    $tot=$tot+$pxligne;
    $totformat=number_format($tot, 2,'.',' ');
    echo "$pxligneformat";
    ?></td> 
     
    </tr>
     <?
     
    }
     $i=$i+1; 
    } ?>

  9. #9
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Tu te prend la tête pour rien du tout. Repart au plus simple.
    Comment incrémenter une variable $vin1 pour qu'elle devienne $vin2 ? Eh bien déjà, au lieu d'utiliser plein de variable differente, tu vas utiliser un tableau. $vin[1] et $vin[2]. En d'autre terme $vin[$i] et c'est $i que tu incrémentes.

    Ensuite, il existe quelque chose de génial qui s'appele la concaténation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $vin = 'ma premiere ligne<br />';
    $vin .= 'ma seconde ligne<br />';
    Et quand tu affiche $vin tu obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ma premiere ligne<br />
    ma seconde ligne<br />
    C'est magique ^_^

    Si la notation .= te déroute, tu peux écrire encore plus simplement, pour le même effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $vin = $vin . 'ma seconde ligne<br />';
    Voila, avec ca et un peu de courrage, tu devrais t'en sortir.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Merci infiniment pour ta réponse Rakken ! C'est pas évident quand tu es solo face à un problème et que le temps n'est pas infini !

    Je vais regarder pour les tableaux.

    Par contre, pour la concaténation je suis sceptique, car j'aimerai présenter un tableau dans mon mail de confirmation (affichage colones-lignes). Or, si je stock tous les éléments à la suite, la présentation ne sera pas nickel. Quoique ca me simplifierait grandement la tâche !

    Si je résume et si je te comprends bien, j'incrémente mes variables via un tableau et j'utilise la concaténation pour récupérer les valeurs de ma boulce ?

  11. #11
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Bon, reprennons.

    Imaginons que tu veuilles afficher un tableau, uniquement avec des "echo".
    Tu vas faire comment ?
    Par exemple, comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    echo ('<table border="1">');
    echo ('<tr><td>Une case !</td><td>une autre case</td></tr>');
    echo ('<tr><td>Une case 2</td><td>une autre case 2</td></tr>');
    echo ('</table>');
    Bon, ben maintenant, au lieu de l'afficher, tu veux envoyer ca dans ton mail non ?
    Alors a la place de faire des echo, tu fait une concatenation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $mon_tableau = '';
    $mon_tableau . = '<table border="1">';
    $mon_tableau . = '<tr><td>Une case !</td><td>une autre case</td></tr>';
    $mon_tableau . = '<tr><td>Une case 2</td><td>une autre case 2</td></tr>';
    $mon_tableau . = '</table>';
    Et a la fin, dans ton mail, tu envoie $mon_tableau, et c'est fini.
    Te prend pas la tête a faire des trucs compliqué. Pose toi 5mn, regarde ce que tu veux faire et comment tout ca fonctionne, tu verras que la solution, finalement, est plutot simple.
    Si tu ne te sent pas a l'aise, contente toi "d'afficher" ton mail avec des echos. Et une fois qu'il a la tête que t'as envie de lui donner, remplace les echo par une concatènation, et ca ira tout seul ;-)
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  12. #12
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Bon sang mais bien sûr !

    Effectivement, je suis parti dans un truc inimaginablement compliqué !

    Merci infiniment Rakken pour tes explications pertinentes et détaillées !

    Ca semble si évident maintenant.

    En fait, j'ai concaténé les différents paramètres au fur et à mesure dans ma boucle en y rajoutant les balise <tr> et <td> nécessaire et ca passe nickel ! Inutile de créer je ne sais combien de variables par produit ou je ne sais quoi !

    Je viens de faire un petit test avec 7 produits et le tableau est nickel avec les bons produits, les bonnes quantités et les bons prix ! Fantastique !

    MERCI encore pour cette aide précieuse et indispensable !

  13. #13
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Et la lumière fut !

    Content de t'avoir aidé ^_^
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. envoi mail de confirmation
    Par Samysam25 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/06/2007, 15h49
  2. [Mail] Mail de confirmation
    Par kuja2053 dans le forum Langage
    Réponses: 5
    Dernier message: 19/02/2007, 21h00
  3. [Mail] Problème d'e-mail de confirmation
    Par FSDonwload dans le forum Langage
    Réponses: 3
    Dernier message: 17/12/2006, 21h40
  4. [Mail] Mail de confirmation
    Par tyarak dans le forum Langage
    Réponses: 9
    Dernier message: 13/11/2005, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo