envoyer un email différent sur résultars menu déroulant

envoyer un email différent sur résultars menu déroulant - PHP - Programmation

Marsh Posté le 20-04-2010 à 11:12:09    

Bonjour
 
je voudrais pouvoir envoyer un email à un destinataire différent en fonction du choix de l'internaute.
 
Si l'utilisateur choisi dans une liste déroulante une ville alors le mail sera envoyé chez un destinataire se trouvant dans cette ville
 
j'ai fait ça
 
pour les variables :
 
$ville_a="Paris";
$ville_b="Poitiers";
$ville_c="Bordeaux";
$ville_d="Lyon";
$list['f_13']=array(" ",$ville_a, $ville_b, $ville_c, $ville_d);
 
$mail_1="1@gmail.com";
$mail_2="2@gmail.com";
$mail_3="3@gmail.com";
$mail_4="4@gmail.com";
 
 
// conditionnelle pour le mail
 
if( in_array($ville_a, $list['f_13'] ) )
    $mail = $mail_1;
elseif( in_array($ville_b, $list['f_13'] ) )
    $mail = $mail_2;
elseif( in_array($ville_c, $list['f_13'] ) )
    $mail = $mail_3;
elseif ( in_array($ville_d, $list['f_13'] ) )
    $mail = $mail_4;
else
    $mail = $mail_4;
 
 
// adresse mail
 
if(mail($mail, $titre, stripslashes($corps), $tete)){
$ok_mail="true";
}else{
$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
 
 
   
 
Mais voilà tout arrive dans le premier mail quelque soit le choix... peut être à cause de la liste
 
Merci

Reply

Marsh Posté le 20-04-2010 à 11:12:09   

Reply

Marsh Posté le 20-04-2010 à 11:33:32    

Elle est pas pratique la structure de tes données, fais plutôt un truc du genre :

Code :
  1. $ArrayMailsVilles = array(
  2.                                   "Paris" => "1@gmail.com",
  3.                                   "Poitiers" => "2@gmail.com",
  4.                                   "Bordeaux" => "3@gmail.com",
  5.                                   "Lyon" => "4@gmail.com"
  6.                                 );
  7. $MailParDefaut = "4@gmail.com";
  8. $list['f_13'] = array_merge(array(" " ), array_keys($ArrayMailsVilles));  // J'imagine que c'est pour l'affichage de ta liste déroulante, sinon, ça sert à rien
  9. if (!empty($_POST))
  10. {
  11.     $VilleSelectionne = $_POST['NomDuChampListeDeroulante'];  // Provient de ton formulaire qui a été posté
  12.     $mail = $MailParDefaut;
  13.     if (isset($ArrayMailsVilles[$VilleSelectionne]))
  14.     {
  15.          $mail = $ArrayMailsVilles[$VilleSelectionne];
  16.     }
  17.    
  18.     // Envoi du mail et tout le reste...
  19. }


Message édité par rufo le 20-04-2010 à 11:33:55

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-04-2010 à 12:38:32    

Merci Rufo
je vais essayer ça tout de suite

Reply

Marsh Posté le 20-04-2010 à 14:17:13    

Non il n'y a rien à faire
c'est toujours l'option par défaut qui sera choisie
 
je ne sais pas quoi faire pour que cela parte là où il faut !
 
merci

Reply

Marsh Posté le 20-04-2010 à 14:23:39    

trobador a écrit :

Non il n'y a rien à faire
c'est toujours l'option par défaut qui sera choisie
 
je ne sais pas quoi faire pour que cela parte là où il faut !
 
merci


 
Montre tout ton code, en particulier celui qui génère le code html du formulaire. Y'a pas de raison que ça marche pas :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-04-2010 à 16:36:21    


 
 
 
 
Voilà pour le code "html"
 

Code :
  1. <DIV class=row>
  2. <DIV class=left>Ville souhait&eacute;e * :</DIV>
  3. <DIV class=right><select onChange="changeListe();" style='width:200 <?if($errf_13==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_13' size='1'>
  4. <? for($id=0;$id<count($list['f_13']);$id++){
  5. if($id==$f_13){$ct="selected";}
  6. print("<option ".$ct." value=".$id.">".$list['f_13'][$id]."</option>" );
  7. unset($ct);
  8. }
  9. ?> 
  10. </select></DIV>
  11. <DIV class=clear></DIV></DIV>
  12. <DIV class=row>
  13. <DIV class=left>P&eacute;riode de stage * :</DIV>
  14. <DIV class=right><select style='width:200 <?if($errf_12==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_12' size='1'>
  15. <? for($id=0;$id<count($list['f_12']);$id++){
  16. if($id==$f_12){$ct="selected";}
  17. print("<option ".$ct." value=".$id.">".$list['f_12'][$id]."</option>" );
  18. unset($ct);
  19. }?>
  20. </select></DIV>
  21. <DIV class=clear></DIV></DIV>


 
et puis le php
 
 
 
 

Code :
  1. $ville_a="Paris";
  2. $ville_b="Poitiers";
  3. $ville_c="Bordeaux";
  4. $ville_d="Lyon";
  5. $list['f_13']=array(" ",$ville_a, $ville_b, $ville_c, $ville_d);
  6. $mail_1="1@gmail.com";
  7. $mail_2="2@gmail.com";
  8. $mail_3="3@gmail.com";
  9. $mail_4="4@gmail.com";
  10. if($f_13==0){
  11.  $erreur.="<li><span class='txterror'>Le champ &laquo; Ville souhait&eacute;e &raquo; n'a pas &eacute;t&eacute; d&eacute;fini.</span>";
  12.  $errf_13=1;
  13. }
  14. if($erreur=="" ){
  15. $titre="Inscription";
  16.  $tete="From:".$f_5."\n";
  17.  $corps.="Nom : ".$f_1."\n";
  18.  $corps.="Prénom : ".$f_2."\n";
  19.  $corps.="N° de téléphone : ".$f_3."\n";
  20.  $corps.="Autre n° de téléphone : ".$f_4."\n";
  21.  $corps.="Email : ".$f_5."\n";
  22.  $corps.="Adresse : ".$f_6."\n";
  23.  $corps.="Code postal : ".$f_7."\n";
  24.  $corps.="Ville : ".$f_8."\n";
  25.  $corps.="Prénom de l'élève : ".$f_9."\n";
  26.  $corps.="Classe : ".$list['f_10'][$f_10]."\n";
  27.  for($id=0; $id<count($list['f_11']); $id++){
  28.   if($f_11[$id]==1){
  29.    $corps.="Matières choisies : ".$list['f_11'][$id]."\n";
  30.   }
  31.  }
  32.  $corps.="Période de stage : ".$list['f_12'][$f_12]."\n";
  33.  $corps.="Ville et centre de Stage souhaité : ".$list['f_13'][$f_13]."\n";
  34.  $corps.="Ajouter un commentaire : ".$f_14."\n";
  35.  $corps.="Adresse mail : ".$mail."\n";
  36. //  echo $corps; //Mode débuggage :)
  37. //  exit();
  38. $ArrayMailsVilles = array(
  39. $ville_a => $mail_1,
  40. $ville_b => $mail_2,
  41. $ville_c => $mail_3,
  42. $ville_d => $mail_4
  43. );
  44.  
  45. $MailParDefaut = $mail_4 ;
  46. $list['f_13'] = array_merge(array(" " ), array_keys($ArrayMailsVilles)); 
  47. if (!empty($_POST))
  48. {
  49. $VilleSelectionne = $_POST['f_13']; 
  50. $mail = $MailParDefaut;
  51. if (isset($ArrayMailsVilles[$VilleSelectionne]))
  52. {
  53. $mail = $ArrayMailsVilles[$VilleSelectionne];
  54. }
  55. }
  56. //  adresse mail  :)
  57.  if(mail($mail, $titre, stripslashes($corps), $tete)){
  58.   $ok_mail="true";
  59.  }else{
  60.   $erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
  61.  }
  62. }
  63. }


 
avec ta proposition
 
Merci


Message édité par trobador le 20-04-2010 à 16:43:25
Reply

Marsh Posté le 20-04-2010 à 17:15:04    

ben il est ou ton formulaire (balise form et bouton submit) :??: Je vois que des div et une balise select... :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-04-2010 à 17:34:28    

Il y a un fichier javascript "changelist"
le choix du menu déroulant ville  
fait varier aussi le menu déroulant date
mais il y a des formes
 
"# <select onChange="changeListe();" style='width:200 <?if($errf_13==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_13' size='1'>
# <? for($id=0;$id<count($list['f_13']);$id++){
# if($id==$f_13){$ct="selected";}
# print("<option ".$ct." value=".$id.">".$list['f_13'][$id]."</option>" );
# unset($ct);"

Reply

Marsh Posté le 20-04-2010 à 17:49:34    

mais pour qu'un formulaire soit envoyé au serveur, il faut une balise form, donc elle est où  dans ton code :??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 21-04-2010 à 13:56:45    

Finalement  pour obtenir que l'adresse se définisse en fonction d'un choix fait sur un menu déroulant
 
ça marche
Merci à ceux qui m'ont aidé
 
les variables  

Code :
  1. $ville_a="Paris";
  2. $ville_b="Poitiers";
  3. $ville_c="Bordeaux";
  4. $ville_d="Lyon";
  5. $list['f_13']=array(" ",$ville_a, $ville_b, $ville_c, $ville_d);
  6. $mail_1="1@gmail.com";
  7. $mail_2="2@gmail.com";
  8. $mail_3="3@gmail.com";
  9. $mail_4="4@gmail.com";


 

Code :
  1. if( $list['f_13'][$f_13] == $ville_a ){
  2.     $mail = $mail_1;
  3. }elseif( $list['f_13'][$f_13] == $ville_b ){
  4.     $mail = $mail_2;
  5. }elseif( $list['f_13'][$f_13] == $ville_c  ){
  6.     $mail = $mail_3;
  7. }elseif ( $list['f_13'][$f_13] == $ville_d ){
  8.     $mail = $mail_4;
  9. }else{
  10.     $mail = $mail_4;
  11. }


 
ensuite

Code :
  1. $titre="Inscription ";
  2.  $tete="From:".$f_5."\n";
  3.  $corps.="Adresse : ".$f_6."\n";
  4.  $corps.="Code postal : ".$f_7."\n";
  5.  $corps.="Ville : ".$list['f_13'][$f_13]."\n";
  6.  $corps.="Ajouter un commentaire : ".$f_14."\n";
  7.  $corps.="Adresse mail : ".$mail."\n"; // test email


Message édité par trobador le 21-04-2010 à 14:08:46
Reply

Marsh Posté le 21-04-2010 à 13:56:45   

Reply

Marsh Posté le 21-04-2010 à 14:11:04    

Je comprends franchement pas pourquoi t'as pas repris ma structure qui t'aurais évité tous ces tests et surtout, si jamais tu rajoutes une ville, moi, t'as juste à la rajouter dans le tableau, alors que là, faut modifier plusieurs endroits dans le code :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 22-04-2010 à 13:34:46    

Oui tu as certainement raison, mais je n'ai pas réussi à la faire marcher.  
 
Certainement dû à mes très faible connaissance du php. L'autre version me paraissait plus compréhensible
 
Merci

Reply

Marsh Posté le 22-04-2010 à 14:00:54    

Par hasard, t'aurais pas la variable "register_globals" à ON dans ton php.ini :??: Parce que je vois pas où ta var php $f_13 prend sa valeur en provenance de ton formulaire (pas d'appel à $_POST ou $_GET dans ton code). La seule explication est que $f_13 soit une variable globale et qui a le même nom que le champ de ton formulaire, ce qui n'est vraiment pas une bonne chose. En changeant de serveur, ton script ne marchera probablement plus car on préconise pour une question de sécurité que register_globals soit par défaut à OFF :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed