Tester la valeur d'une checkbox et envoi de mail

Tester la valeur d'une checkbox et envoi de mail - PHP - Programmation

Marsh Posté le 04-08-2008 à 09:58:38    

Bonjour,  
 
j'ai une liste de contact, ( nom, prenom, mail ), generée par une base de donnée, à laquelle j'ai associé chaque contact à une check box:  

Code :
  1. echo "<td class=table colspan=2><b>Décochez pour ne pas envoyer</b>";
  2. for($i=0;$i<$nb;$i++){
  3. echo "<tr>";
  4. $o=mysql_fetch_object($result_mail);
  5. $id=$o->news_id;
  6. $nom=$o->news_nom;
  7. $prenom=$o->news_prenom;
  8. $mail=$o->news_mail;
  9. echo "<td class=table>$nom";
  10. echo "<td class=table>$prenom";
  11. echo "<td class=table>$mail";
  12. echo "<td class=table align=center width=140><div class=textadmin><input type=checkbox name=select value=1 checked>";
  13. }


pour but d'envoyer ensuite un mail avec la fonction mail, mais seulement qu'aux contacts qui seront décochés,  
 

Code :
  1. for ($i=0;$i<$nb;$i++){
  2. $query_mail_selec="select * from news ";
  3. $result_mail_selec=mysql_query($query_mail_selec);
  4. $o=mysql_fetch_object($result_mail_selec);
  5. $mail=$o->news_mail;
  6. $send_mail=mail($mail,$objet,$message,$from);
  7. }


je voudrais connaitre la condition à ecrire pour envoyer seulement ce mail qu'aux personnes qui seront restés cochés, je pense qu'il faut mettre une condition apres

Code :
  1. $send_mail=mail($mail,$objet,$message,$from);


mais je ne connais pas la syntaxe,  
quelqu'un pourrait m'aider ?  
merci d'avance

Reply

Marsh Posté le 04-08-2008 à 09:58:38   

Reply

Marsh Posté le 04-08-2008 à 10:29:23    

1. Ton code HTML n'est pas viable, il faut mettre entre "" la valeur de tes arguments.
2. Ton second bloc de code fait trop d'appels à la db, il te suffit de récupérer une fois l'info et ensuite l'envoyer X fois.  
3. Connais-tu les "if" ?

Reply

Marsh Posté le 04-08-2008 à 10:38:53    

pour le code, merci , oui çà fonctionne bien,  
pour le second code je connais les if, j'avais essayé de programmé comme çà , mais çà n'envoie en fait le mail qu'au premier de la liste

Code :
  1. for ($i=0;$i<$nb;$i++){
  2. $query_mail_selec="select * from news ";
  3. $result_mail_selec=mysql_query($query_mail_selec);
  4. $o=mysql_fetch_object($result_mail_selec);
  5. $mail=$o->news_mail;
  6. if($_POST['select']) {
  7. $send_mail=mail($mail,$objet,$message,$from);
  8.       if ($send_mail){
  9.          echo "<br><br><div align=center class=titre2>Mail envoyé avec succés</div>";
  10.          echo "<br><div align=center class=titre><a href='liste.php?lien=news' class=ptt_lien>Retour</a></div>";
  11.       }
  12.       else{
  13.          echo "<br><br><div align=center class=titre>ECHEC</div>";
  14.          echo "<br><div align=center class=titre3><a href='liste.php?lien=news' class=ptt_lien>Retour</a></div>";
  15.       }
  16. }
  17. }

}  
comment placé ou modifié la boucle if, pour que l'envoi s'effectue aussi aux autres membres de la liste selectionnée.?


Message édité par corsichris le 04-08-2008 à 10:42:04
Reply

Marsh Posté le 04-08-2008 à 11:48:39    

j'ai modifié le code, et maintenant çà envoie à toute la liste entiere sans tiendre compte des coché ou non de la checkbox,
quel quelqu'un connaitrait il  la bonne syntaxe?  merci d'avance

Code :
  1. for ($i=0;$i<$nb;$i++){
  2.   $o=mysql_fetch_object($result_mail);
  3.   $mail=$o->news_mail;
  4.   if ($_POST['select']=='1'){
  5.   $send_mail=mail($mail,$objet,$message,$from);
  6.   }
  7.  }
  8.   
  9.  if ($send_mail){
  10.   echo "<br><br><div align=center class=titre2>Mail envoyé avec succés</div>";
  11.   echo "<br><div align=center class=titre><a href='liste.php?lien=news' class=ptt_lien>Retour</a></div>";
  12.  }
  13.  else{
  14.   echo "<br><br><div align=center class=titre>ECHEC</div>";
  15.   echo "<br><div align=center class=titre3><a href='liste.php?lien=news' class=ptt_lien>Retour</a></div>";
  16.  }
  17. }

Reply

Marsh Posté le 04-08-2008 à 12:03:52    

je regarde rapide et déjà une piste
if ($_POST['select']=='1'){  
c'est une donnée statique ca
Tu boucles sur un $i que tu utilises jamais
 
De plus tu boucles sur un $i et dedans tu te deplaces dans une requete, c'est mal
 
Les if après la boucle servent à rien dans ton cas (si plusieurs mails)

Reply

Marsh Posté le 04-08-2008 à 12:06:21    

merci pour ta reponse,
 
mais je ne suis pas assez calé en php pour ressoudre ce probleme,
pourrait tu m'ecrire la bonne syntaxe si tu le veux bien?

Reply

Marsh Posté le 04-08-2008 à 14:17:18    

quelqu'un d'autre aurais une solution sinon?  :??:

Reply

Marsh Posté le 04-08-2008 à 16:01:03    

Désolé moi je fais de l'entre aide, pas du dev gratuit.
 
Faut arrêter de croire ce qu'on dit à droite et à gauche le dev php bien que facile d'accès aux premiers abords reste du dev, et si on a pas de vrais notions d'algo ca sert à rien de se lancer dedans.

Reply

Marsh Posté le 05-08-2008 à 10:35:08    

en fait le probleme est triple, voire quadruple:
 
1) sur ta page de formulaire, il faut déjà que tu fermes tes balises <td>, <tr> et eventuellement <table>
 
2) sur cette meme pas, il faut que tu changes la propriété name de la checkbox : là, pour CHAQUE résultat de ta premiere requete, il n'y a qu'un seul nom pour chacun des checkbox. C'est donc normal que tu envoies le mail à tout le monde.  

Code :
  1. echo "<td class='table' align='center' width='140'><div class='textadmin'><input type='checkbox' name='select".$i."' checked>";


 
3) sur ta page d'envoi de mail, au lieu de faire  

Code :
  1. if($_POST['select'] == '1')


essaie plutot

Code :
  1. if($_POST['select'.$i] == '1')


 
là ça devrait fonctionner, mais je suis pas un expert dans le fonctionnement des checkbox. Apparement ça transmet la valeur de la checkbox ssi elle est cochée. Si effectivement c'est le cas, ça doit fonctionner, sinon, c'est un truc approchant.


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
Reply

Marsh Posté le 05-08-2008 à 10:57:37    

l'idée est la, maintenant faut faire correspondre et s'assurer que les checkboxes du premier correspondent bien aux données du deuxieme, et donc il faut etre sur de la bonne corélation des deux.
 
L'idée est donc de ne plus boucler sur une table qui vit mais sur les données de la première page.
 
Une meilleure idée pour le nom de la checkbox serait par exemple de mettre l'identifiant de la personne comme nom

Reply

Sujets relatifs:

Leave a Replay

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