formulaire avec checbox vers e-mail

formulaire avec checbox vers e-mail - PHP - Programmation

Marsh Posté le 02-04-2007 à 12:18:52    

Bonjour,
 
j'étudie un peu la réalisation de formulaire simple en html de ce type: (c'est pour apprendre)
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <meta content="text/html; charset=UTF-8" http-equiv="content-type">
  5. <title>test</title>
  6. </head>
  7. <body>
  8. <form name="forml" method="post" action="test.php"><br>
  9. <input name="nom">nom<br>
  10. <input name="email">e-mail<br>
  11. <input name="objet[]" value="objet001" type="checkbox">objet001<br>
  12. <input name="objet[]" value="objet002" type="checkbox">objet002<br>
  13. <input name="objet[]" value="objet003" type="checkbox">objet003<br>
  14. <input name="objet[]" value="objet004" type="checkbox">objet004<br>
  15. <input name="objet[]" value="objet005" type="checkbox">objet005<br>
  16. <br>
  17. <input name="action" value="submitted" type="hidden">
  18. <input value="envoi" name="ok" type="submit"></form><br>
  19. </body>
  20. </html>


 
Il comporte comme vous l'aurez lu des « checbox »
La récupération des entrées j'aimerais la faire en php, vers une adresse e-mail.
Pour les champs classiques, (texte) pas de problème, j'ai trouvé ceci qui fonctionne. Par contre pour les checkbox ?  
C'est la première fois que je fais des essais avec php. J'ai cru comprendre que les checbox étaient lues comme des tableaux et qu'il faut mettre des [].
Si quelqu'un pouvait m'aiguiller sur cette partie de code afin que je comprenne un peu se serait sympa.
 
le code pour récupérer les entrées

Code :
  1. <?php
  2. if($_POST['action'] == 'submitted')
  3. {
  4. $adress = "xxxxxx@xxxxx.xx";
  5. $sujet = "test";
  6. $message = "Un formulaire à été envoyé :\n";
  7. $message .= "Nom: {$_POST['nom']}\n";
  8. $entete = "From: {$_POST['email']}\n";
  9. mail($adress, $sujet, $message, $entete);
  10. }
  11. ?>
  12. <html>
  13. <body>
  14. <div align="center">
  15. <p>Merci.</p>
  16. <p><a target="_top" href="test.html">Retour
  17. &agrave; la page "test"</a>.</p>
  18. </div>
  19. </body>
  20. </html>


 
(une simple entrée supplémentaire: $message .= "objet: {$_POST['odjet']}\n"; ne fonctionnant pas)
 
d'avance merci.

Reply

Marsh Posté le 02-04-2007 à 12:18:52   

Reply

Marsh Posté le 02-04-2007 à 12:33:21    

alors je peu me tromepr ça fait longtemps que j'ai pas triffouiller du formulaire,
mais ça ne serai pas les radio qui sont des tableaux ?
et les checkbox, un nom différent pour chaque, et la valeur est true or false ?
c'est ce qui me parait le plus logique -_-


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 02-04-2007 à 12:37:53    

Il suffit de faire un print_r de $_POST, tu verras toute la structure du tableau associé à la méthode en question.
Tu devrais avoir un tableau nommé objet, enfant direct de $_POST

 

Autre chose, teste

Code :
  1. $_SERVER['REQUEST_METHOD'] == 'POST'

plutôt que

Code :
  1. $_POST['action'] == 'submitted'
 

Du coup

Code :
  1. <input name="action" value="submitted" type="hidden">

ne sert plus à rien.


Message édité par Shinuza le 02-04-2007 à 12:38:13

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 03-04-2007 à 01:01:40    

merci pour les réponses,
 
en fait quand j'ajoute ceci:

Code :
  1. print_r ($_POST);


il renvoi ceci:

Code :
  1. Array ( [nom] => [email] => [objet] => Array ( [0] => objet001 [1] => objet003 [2] => objet005 ) [action] => submitted [ok] => envoi )


 
donc les checkbox fonctionnent si je lis bien. (j'avais coché la 1 & 2 & 3)
En plus j'ai modifié avec ceci: (comme proposé par shinuza)

Code :
  1. $_SERVER['REQUEST_METHOD'] == 'POST'


et ça fonctionne correctement. Par contre je ne comprend pas le tableau que je devrais avoir, c'est une simple ligne.
 
Mais j'ai lu sur un site qu'il était possible de récupérer aussi les infos des checkbox si elles étaient nommées (ce que zecrazytux dit aussi)
soit pour le formulaire:

Code :
  1. <input name="objet01" value="objet001" type="checkbox">objet001<br>
  2. <input name="objet02" value="objet002" type="checkbox">objet002<br>
  3. <input name="objet03" value="objet003" type="checkbox">objet003<br>
  4. <input name="objet04" value="objet004" type="checkbox">objet004<br>
  5. <input name="objet05" value="objet005" type="checkbox">objet005<br>


et pour le php:

Code :
  1. if($_POST["objet01"] != "" ){$message.= $_POST["objet01"]."\n";}
  2. if($_POST["objet02"] != "" ){$message.= $_POST["objet02"]."\n";}
  3. if($_POST["objet03"] != "" ){$message.= $_POST["objet03"]."\n";}
  4. if($_POST["objet04"] != "" ){$message.= $_POST["objet04"]."\n";}
  5. if($_POST["objet05"] != "" ){$message.= $_POST["objet05"]."\n";}


Par contre il faut nommer les chekbox. (pas de [ ] )
 
Je vais tester tout cela dans les jours qui viennent, j'ai pas trop eu le temps ce soir  :(  

Reply

Marsh Posté le 03-04-2007 à 11:35:18    

Oui tu peux, mais autant utiliser le tableau et les propriétés qui en découlent.
 
Au lieu de  
 

Code :
  1. $var != ""


 
Utilise
 

Code :
  1. empty($var)


 
Soit $var la variable que tu veux tester.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Sujets relatifs:

Leave a Replay

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