Probleme de checkbox avec formulaire PHP
Dernière réponse : dans Programmation
Bonjour,
Voilà mon problème:
je souhaite réaliser un formulaire dans lequel j'intègre des cases à cocher pour lesquelles il est possible d'en sélectionner plusieures.
Seulement si j'en coche plusieures, il me prend en compte uniquement la dernière cochée.
Pouvez-vous m'aider à rédiger mon code PHP (et HTML si celui-ci est faux)car ça fait plusieurs jour que je me prends la tête? Merci.
Code HTML:
<form method="post" action="test2contact.php">
<p>Civilité:
<input name="civilite" type="checkbox" id="civilite" value="monsieur">
Monsieur
<input name="civilite" type="checkbox" id="civilite" value="madame">
Madame
<input name="civilite" type="checkbox" id="civilite" value="mademoiselle">
Mademoiselle </p>
<p>
<input type="submit" name="Submit" value="Envoyer">
</p>
</form>
CODE PHP:
<?php
$destinataire= "monadresse@domaine.fr";
$objet = "Formulaire de contact";
$headers = "From: monsite.fr\n\r";
$headers .= "MIME-Version: 1.0\n\r";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n\r";
$civilite =
$items = "monsieur";
$items .= "madame";
$items .= "mademoiselle";
for ($i = 0; $i <= $items; $i++) {
$civilite = $_POST['civilite'];}
$msg = "civilite = $civilite";
echo nl2br($msg);
mail($destinataire, $objet, $headers, $msg);
echo("<p><font face=verdana size=2>Votre message a bien été envoyé.<br>Merci d'avoir rempli ce formulaire.</font>"); echo("<p> </p><p> </p><p align=\"center\" ><a href=\"test2contact.htm\"><strong>Retour</strong></a></p>");
?>
Voilà mon problème:
je souhaite réaliser un formulaire dans lequel j'intègre des cases à cocher pour lesquelles il est possible d'en sélectionner plusieures.
Seulement si j'en coche plusieures, il me prend en compte uniquement la dernière cochée.
Pouvez-vous m'aider à rédiger mon code PHP (et HTML si celui-ci est faux)car ça fait plusieurs jour que je me prends la tête? Merci.
Code HTML:
<form method="post" action="test2contact.php">
<p>Civilité:
<input name="civilite" type="checkbox" id="civilite" value="monsieur">
Monsieur
<input name="civilite" type="checkbox" id="civilite" value="madame">
Madame
<input name="civilite" type="checkbox" id="civilite" value="mademoiselle">
Mademoiselle </p>
<p>
<input type="submit" name="Submit" value="Envoyer">
</p>
</form>
CODE PHP:
<?php
$destinataire= "monadresse@domaine.fr";
$objet = "Formulaire de contact";
$headers = "From: monsite.fr\n\r";
$headers .= "MIME-Version: 1.0\n\r";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n\r";
$civilite =
$items = "monsieur";
$items .= "madame";
$items .= "mademoiselle";
for ($i = 0; $i <= $items; $i++) {
$civilite = $_POST['civilite'];}
$msg = "civilite = $civilite";
echo nl2br($msg);
mail($destinataire, $objet, $headers, $msg);
echo("<p><font face=verdana size=2>Votre message a bien été envoyé.<br>Merci d'avoir rempli ce formulaire.</font>"); echo("<p> </p><p> </p><p align=\"center\" ><a href=\"test2contact.htm\"><strong>Retour</strong></a></p>");
?>
Autres pages sur : probleme checkbox formulaire php
Lassé par la pub ? Créez un compte
En fait je tiens à garder civilité. Mais en fait je crois qu'il faut utiliser des [] (name="civilite[]") mais dans mon mail ça m'écris civilite=array (au lieu de monsieur, madame etc...). Tu comprends? et puis je souhaite vraiment recevoir monsieur ET madame dans mon mail si la personne coche ces 2 cases!
<form method="post" action="">
<p>Civilité:
<input name="civilite[]" type="checkbox" id="civilite" value="monsieur">
Monsieur
<input name="civilite[]" type="checkbox" id="civilite" value="madame">
Madame
<input name="civilite[]" type="checkbox" id="civilite" value="mademoiselle">
Mademoiselle </p>
<p>
<input type="hidden" name="poster">
<input type="submit" name="Submit" value="Envoyer">
</p>
</form>
<?php
if (isset($poster)) {
echo $civilite[0];
echo $civilite[1];
echo $civilite[2];
}
?>
<p>Civilité:
<input name="civilite[]" type="checkbox" id="civilite" value="monsieur">
Monsieur
<input name="civilite[]" type="checkbox" id="civilite" value="madame">
Madame
<input name="civilite[]" type="checkbox" id="civilite" value="mademoiselle">
Mademoiselle </p>
<p>
<input type="hidden" name="poster">
<input type="submit" name="Submit" value="Envoyer">
</p>
</form>
<?php
if (isset($poster)) {
echo $civilite[0];
echo $civilite[1];
echo $civilite[2];
}
?>
Cette fois j'ai mieux appliqué ton code et je reçois ENFIN ce que je coche,merci!!!:
<form method="post" action="test2contact.php">
<p>Civilité:
<input type="checkbox" name="civilite[]" value="monsieur">Monsieur
<input type="checkbox" name="civilite[]" value="madame">Madame
<input type="checkbox" name="civilite[]" value="mademoiselle">Mademoiselle </p>
<p>
<input type="hidden" name="poster">
<input type="submit" name="Submit" value="Envoyer">
</p>
</form>
<?php
$destinataire= "monadresse@domaine.fr";
$objet = "Formulaire de contact";
$headers = "From: monsite.fr\n\r";
$headers .= "MIME-Version: 1.0\n\r";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n\r";
if (isset($poster)) {
echo $civilite[0];
echo $civilite[1];
echo $civilite[2];
}
$civilite = $_POST['civilite'][0];
$civilite .= $_POST['civilite'][1];
$civilite .= $_POST['civilite'][2];
$msg = "civilite = $civilite";
echo nl2br($msg);
mail($destinataire, $objet, $headers, $msg);
echo("<p><font face=verdana size=2>Votre message a bien été envoyé.<br>Merci d'avoir rempli ce formulaire.</font>"); echo("<p> </p><p> </p><p align=\"center\" ><a href=\"test2contact.htm\"><strong>Retour</strong></a></p>");
?>
(Je tiens à dire que je teste en local avec easyphp)
Cependant, si je coche monsieur et madame un message d'erreur apparait car mademoiselle n'est pas cochée et voilà ce que mon client est censé lire:"
Notice: Undefined offset: 2 in c:\easyphp1-8\www\test2contact.php on line 18
civilite = monsieurmadame
Votre message a bien été envoyé.
Merci d'avoir rempli ce formulaire. " Comment faire pour que le message de "Notice" n'apparaisse pas quand on ne coche pas une valeur?
Retour
<form method="post" action="test2contact.php">
<p>Civilité:
<input type="checkbox" name="civilite[]" value="monsieur">Monsieur
<input type="checkbox" name="civilite[]" value="madame">Madame
<input type="checkbox" name="civilite[]" value="mademoiselle">Mademoiselle </p>
<p>
<input type="hidden" name="poster">
<input type="submit" name="Submit" value="Envoyer">
</p>
</form>
<?php
$destinataire= "monadresse@domaine.fr";
$objet = "Formulaire de contact";
$headers = "From: monsite.fr\n\r";
$headers .= "MIME-Version: 1.0\n\r";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n\r";
if (isset($poster)) {
echo $civilite[0];
echo $civilite[1];
echo $civilite[2];
}
$civilite = $_POST['civilite'][0];
$civilite .= $_POST['civilite'][1];
$civilite .= $_POST['civilite'][2];
$msg = "civilite = $civilite";
echo nl2br($msg);
mail($destinataire, $objet, $headers, $msg);
echo("<p><font face=verdana size=2>Votre message a bien été envoyé.<br>Merci d'avoir rempli ce formulaire.</font>"); echo("<p> </p><p> </p><p align=\"center\" ><a href=\"test2contact.htm\"><strong>Retour</strong></a></p>");
?>
(Je tiens à dire que je teste en local avec easyphp)
Cependant, si je coche monsieur et madame un message d'erreur apparait car mademoiselle n'est pas cochée et voilà ce que mon client est censé lire:"
Notice: Undefined offset: 2 in c:\easyphp1-8\www\test2contact.php on line 18
civilite = monsieurmadame
Votre message a bien été envoyé.
Merci d'avoir rempli ce formulaire. " Comment faire pour que le message de "Notice" n'apparaisse pas quand on ne coche pas une valeur?
Retour
<form method="post" action="test2contact.php">
<form method="post" action="test2contact.php">
Pour ce truc la :
$civilite = $_POST['civilite'][0];
$civilite .= $_POST['civilite'][1];
$civilite .= $_POST['civilite'][2];
C'est pas une bonne idée de faire ce truc je crois... c'est peut etre pour ça qu'il te met une erreur, car $_POST['civilite'][2] est pas défini, faudrait faire un test pour avoir la dernière valeur du tableau (je connais pas le code... mais y'a une fonction toute faite), et tu fais une boucle qui fait la même chose de 0 au nombre de valeurs que tu trouves moins 1.
(je sais pas si c'est très clair :-D)
$civilite = $_POST['civilite'][0];
$civilite .= $_POST['civilite'][1];
$civilite .= $_POST['civilite'][2];
C'est pas une bonne idée de faire ce truc je crois... c'est peut etre pour ça qu'il te met une erreur, car $_POST['civilite'][2] est pas défini, faudrait faire un test pour avoir la dernière valeur du tableau (je connais pas le code... mais y'a une fonction toute faite), et tu fais une boucle qui fait la même chose de 0 au nombre de valeurs que tu trouves moins 1.
(je sais pas si c'est très clair :-D)
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- solutionsFormulaire php html checkbox
- ForumProbleme d'affichage formulaire php
- ForumProbleme accent formulaire php
- ForumProbleme apostrophe formulaire php
- ForumProbleme formulaire php
- ForumProbleme accents formulaire php
- ForumProbleme redirection formulaire php
- ForumFormulaire php avec checkbox
- ForumProbleme de formulaire php html
- ForumFormulaire php probleme accents
- Voir plus