Formulaire avec "checkbox"

Nouveau WRInaute
Bonjour!

Je n'arrive pas à recevoir le resultat de mon formulaire sur ma boîte email...
Quelqu'un pourrai voir si je n'ai pas oublier quelque chose dans mon code s'il vous plait

D'avance merci!

voici le formulaire:

Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>formulaire.</title>
</head>
<body>
<form name="formulaire" id="formulaire" method="post" action="traitement.php">
<p>
<input type="radio" name="radio" value="bouton radio" /><span class="formulaire">Particulier</span>
<input type="radio" name="radio" value="bouton radio" /><span class="formulaire">Entreprise
<input type="radio" name="radio" value="bouton radio" />Autre</span>
</p>
<p><span class="formulaire">Votre email:
  <input name="email" type="text" size="40" />
</span></p>
<p>
<label>Votre site:
<input name="site" type="text" size="40" />
    </label>
</p>
<p>
<input type="checkbox" name="coq" value="checkbox" />Coq
<input type="checkbox" name="coquelicot" value="checkbox" />Coquelicot 
<input type="checkbox" name="pêcheur" value="checkbox" />Pêcheur
<input type="checkbox" name="glazig" value="checkbox" />Glazig 
<input type="checkbox" name="crustacé" value="checkbox" />Crustacé; 
<input type="checkbox" name="jardin fleuri" value="checkbox" />Jardin fleuri 
<input type="checkbox" name="mer" value="checkbox" />Mer 
<input type="checkbox" name="linge" value="checkbox" />Linge
<input type="checkbox" name="bol à prénom" value="checkbox" />Bol à prénom 
<input type="checkbox" name="le blanc" value="checkbox" />Le Blanc
</label>
</p>
<p>
<label><span class="formulaire"><strong>Votre message:</strong></span></label>

<textarea name="texte" cols="40" rows="5"></textarea>
</p>
<p>
<input name="Submit" type="submit" class="formulaire" value="Envoyer" /> 
  </p>
</form>
</body>
</html>

et voici le traitement.php


Code:
<?php
$adresse="nom@fai.fr";
$from=" $radio $site $email";
mail($from, $texte, $coq, glazig);
?>
 
WRInaute accro
les checkbox sont renvoyéres en PHP comme des matrices.
Dans le formunlaire:
<input type=\"checkbox\" name=\"memo[]\" value=\"ON\">

dans la partie traitement:

if (isset($memo[0]))
{
$memo=$memo[0];
}else{
$memo="";
}

l'Isset est vérifié pour éviter un message d'erreur si la case n'st pas cochée (valeur non définie).
 
Nouveau WRInaute
OK, donc deux chose:
Est-ce qu'à la place de
on peut mette "bol[]\" ?

en fait pour la partie du formulaire (au niveau des checkbox ça donne ça:
Code:
<input type=\"checkbox\" name=\"coq[]\" value=\"ON\">Coq
<input type=\"checkbox\" name=\"coquelicot[]\" value=\"ON\">Coquelicot 
<input type=\"checkbox\" name=\"pecheur[]\" value=\"ON\">Pêcheur
<input type=\"checkbox\" name=\"glazig[]\" value=\"ON\">Glazig 
<input type=\"checkbox\" name=\"crustace[]\" value=\"ON\">Crustacé; 
<input type=\"checkbox\" name=\"jardin[]\" value=\"ON\">Jardin fleuri 
<input type=\"checkbox\" name=\"mer[]\" value=\"ON\">Mer 
<input type=\"checkbox\" name=\"linge[]\" value=\"ON\">Linge
<input type=\"checkbox\" name=\"bol[]\" value=\"ON\">Bol à prénom 
<input type=\"checkbox\" name=\"blanc[]\" value=\"ON\">Le Blanc

et la deuxième chose, c'est est-ce que j'ai bien placer
if (isset($memo[0]))
{
$memo=$memo[0];
}else{
$memo="";
}
dans mon traitement.php:
Code:
<?php
$adresse="loic.heurtebise@creaternet.com";
$from=" $radio $site $email";
mail($from, $texte,);
if (isset($memo[0]))
{
$memo=$memo[0];
}else{
$memo="";
} 
?>
 
WRInaute accro
ups, les code ci-dessus fonctionnent dans un auto invocant, c'est une autre méthode (mais troujours avec matrices pour l'envoi via post ou get sur une autre page).

Auto invocant:

if
{

}
$form="formulaire";
echo $form;


sinon, memo peut être remplacé par n'importe quelle variable.
 
Nouveau WRInaute
Donc côté html ça donne:

Code:
<input type="checkbox" name="memo[]" value="checkbox">Coq
<input type="checkbox" name="memo[]" value="checkbox">Coquelicot 
<input type="checkbox" name="memo[]" value="checkbox">Pêcheur
<input type="checkbox" name="memo[]" value="checkbox">Glazig 
<input type="checkbox" name="memo[]" value="checkbox">Crustacé; 
<input type="checkbox" name="memo[]" value="checkbox">Jardin fleuri 
<input type="checkbox" name="memo[]" value="checkbox">Mer 
<input type="checkbox" name="memo[]" value="checkbox">Linge
<input type="checkbox" name="memo[]" value="checkbox">Bol à prénom 
<input type="checkbox" name="memo[]" value="checkbox">Le Blanc

et côté php ça donne:

Code:
<?php
$adresse="nom@fai.com";
$form="formulaire";
echo $form
?>

c'est bon?
 
WRInaute accro
Plus compliqué que celà. En auto-invocant, tu utilise un seul fichier pour le formulaire et pour les vérifications. C'est un fichier php

voici un exemple de fichier php auto-invocant. Le formulaire est repris dans la fin du développement php.

<?php
if (isset($HTTP_POST_VARS['B1']))
{
// à ce stade, nous ne vérifions pas si l'utilisateur existe
$login=addslashes($HTTP_POST_VARS['login']);
$password= addslashes($HTTP_POST_VARS['password']);
// $memo = $http_post_vars['memo'];
//Contenu des cases à cocher
if (isset($memo[0]))
{
$memo=$memo[0];
}else{
$memo="";
}
echo $login." ".$password." ".$memo;
}

$form="<form method=\"POST\"><p>Nom utilisateur: <input type=\"text\" name=\"login\" size=\"20\"></p>
<p>Mot de passe: <input type=\"password\" name=\"password\" size=\"20\"></p>
<p>Mémoriser la connexion: <input type=\"checkbox\" name=\"memo[]\" value=\"ON\"> </p>
<p><input type=\"submit\" value=\"Envoyer\" name=\"B1\"></p>
</form>";
echo $form;
?>


Cette méthode permet notamment d'afficher des messages d'erreurs en textes, et de ne pas obliger l'utilisateur à rentrer des données, mais le fichier doit être un peu modifié.
 
Nouveau WRInaute
Re-bonsoir !

Le problème de la reception est régler, en fait "presque" tout fonctionne
il y a un dernier petit problème:
Dans mon formulaire j'ai des "checkbox", je veux que l'internaute puisse cocher une ou plusieurs voir toute les cases.
Mon problème c'est que j'ai beau cocher une seule ou plusieurs cases, dans mon email de reception je ne recevrai toujours le choix d'une seule case!
J'espère que je me suis bien fait comprendre... :roll:

Voici le code html :

Code:
<form id="contactform" method="post" action="traitement.php">

            <label for="label6" title="Choisissez une dénomination"></label>
           
            <input type="radio" name="son_statut" id="label6" title="Choisissez une dénomination" tabindex="1" value="entreprise">Entreprise
            <input type="radio" name="son_statut" id="label6" title="Choisissez une dénomination" tabindex="1" value="particulier">Particulier
            <input type="radio" name="son_statut" id="label6" title="Choisissez une dénomination" tabindex="1" value="autre">Autre

            <label for="label7" title="Saisissez votre EMAIL">Email *</label>
            <br />
            <input class="txt" type="text" size="40" name="son_email" id="label7" title="Saisissez votre adresse EMAIL" tabindex="2" value="" />
            <br />
            <label for="label8" title="Saisissez l'URL de votre site">Adresse de votre site </label>
            <br />
            <input class="txt" type="text" size="40" name="son_url" id="label8" title="Saisissez l'URL de votre site" tabindex="3" value="" />
            <br />

            <label for="label9" title="Choisissez un ou plusieurs décors">Objet *</label>
            <br />
            <input type="checkbox" name="son_objet"  id="label9" title="Choisissez un ou plusieurs décors" tabindex="4" value="Coq">Coq
            <input type="checkbox" name="son_objet"  id="label9" title="Choisissez un ou plusieurs décors" tabindex="4" value="Coquelicot">Coquelicot
            <input type="checkbox" name="son_objet"  id="label9" title="Choisissez un ou plusieurs décors" tabindex="4" value="Crustacé">Crustacé
            <br />
            <label for="label10" title="Saisissez votre MESSAGE">Message *</label>
            <br />
            <textarea name="son_message" id="label10" title="Saisissez votre MESSAGE" tabindex="5" cols="40" rows="7"></textarea>
            <br />
            <input class="sub" type="submit" name="envoyer" value="Envoyer" title="Cliquez sur ce bouton pour envoyer le formulaire" tabindex="6" />
            <input class="sub" type="reset" name="reset" value="Effacer" title="Cliquez sur ce bouton pour effacer le formulaire" tabindex="7" />
     
</form>

Et voici le "traitement.php"

Code:
<?php
if (isset($_POST["envoyer"])){ // Si le formulaire a été soumis
    $etat = "erreur"; // On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur

    // On récupère les champs du formulaire, et on arrange leur mise en forme
    if (isset($_POST["son_statut"])) $_POST["son_statut"]=trim(stripslashes($_POST["son_statut"])); // trim()  enlève les espaces en début et fin de chaine

    if (isset($_POST["son_email"])) $_POST["son_email"]=trim(stripslashes($_POST["son_email"])); // stripslashes()  retire les backslashes ==> \' devient '

    if (isset($_POST["son_url"])) $_POST["son_url"]=trim(stripslashes($_POST["son_url"]));

    if (isset($_POST["son_objet"])) $_POST["son_objet"]=trim(stripslashes($_POST["son_objet"]));

    if (isset($_POST["son_message"])) $_POST["son_message"]=trim(stripslashes($_POST["son_message"]));

    // Après la mise en forme, on vérifie la validité des champs
    if (empty($_POST["son_statut"])) { // L'utilisateur n'a pas rempli le champ pseudo
        $erreur="Vous n'avez pas choisi votre statut..."; // On met dans erreur le message qui sera affiché
        }
        elseif (empty($_POST["son_email"])) { // L'utilisateur n'a pas rempli le champ email
            $erreur="Nous avons besoin de votre e-mail pour vous r&eacute;pondre...";
        }
        elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["son_email"])){ // On vérifie si l'email est bien de la forme messagerie@domaine.tld (cf cours d'expressions régulières)
            $erreur="Votre adresse e-mail n'est pas valide...";
        }
        elseif (empty($_POST["son_objet"])) { // L'utilisateur n'a pas rempli le champ objet
            $erreur="Vous devez entrer l'objet de votre message...";
        }
        elseif (empty($_POST["son_message"])) { // L'utilsateur n'a écrit aucun message
            $erreur="Merci de saisir un message...";
        }
        else { // Si tous les champs sont valides, on change l'état à ok
            $etat="ok";
        }
}
else { // Sinon le formulaire n'a pas été soumis
    $etat="attente"; // On passe donc dans l'état attente
}

if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
    if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
        echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant à l'erreur
    }
?>

<!-- Formulaire HTML qu'on affiche dans l'état attente ou erreur -->
<form method="post" action="<?php echo $_SERVER["../PHP_SELF"]; ?>"> <!-- Les données du formulaire seront récupérée avec la méthode POST, et action correspond à la page contenant le formulaire -->
    <p style="text-align:left">
        <label for="son_statut">Pseudo *</label><br /> <!-- Intitulé du champ pseudo -->
        <input type="text" size="40" name="son_statut" id="son_statut" value="<?php
        if (!empty($_POST["son_statut"])) {
        // le pseudo de l'expéditeur a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_statut"],ENT_QUOTES); // htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &amp;
        }
        ?>" />

        <br />

        <label for="son_email">E-mail *</label><br /> <!-- Intitulé du champ e-mail -->
        <input type="text" size="40" name="son_email" id="son_email" value="<?php
        if (!empty($_POST["son_email"])) {
        // l'e-mail de l'expéditeur a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_email"],ENT_QUOTES);
        }
        ?>" />

        <br />

        <label for="son_url">URL de votre site</label><br /> <!-- Intitulé du champ url (facultatif) -->
        <input type="text" size="40" name="son_url" id="son_url" value="<?php
        if (!empty($_POST["son_url"])) {
        // l'url a été saisi --> la réafficher
        echo htmlspecialchars($_POST["son_url"],ENT_QUOTES);
        }
        ?>" />

        <br />

        <label for="son_objet">Objet *</label><br /> <!-- Intitulé du champ objet -->
        <input type="text" size="40" name="son_objet" id="son_objet" value="<?php
        if (!empty($_POST["son_objet"])) {
        // l'objet du message a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_objet"],ENT_QUOTES);
        }
        ?>" />

        <br />

        <label for="son_message">Message *</label><br /> <!-- Intitulé du champ message -->
        <textarea name="son_message" id="son_message" cols="45" rows="7"><?php
        if (isset($_POST["son_message"])) {
        // le message a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_message"],ENT_QUOTES);
        }
        ?></textarea>

        <br />

        <input type="submit" name="envoyer" value="Envoyer" /><input type="reset" name="reset" value="Effacer" />
    </p>
</form>
<!-- FIN du formulaire HTML -->

<?php
}
else { // Sinon l'état est ok donc on envoie le mail
    $son_statut = $_POST["son_statut"]; // On stocke les variables récupérées du formulaire
    $son_email = $_POST["son_email"];
    $son_url = $_POST["son_url"];
    $son_objet = $_POST["son_objet"];
    $son_message = $_POST["son_message"];

    $mon_email = "nom@fai.com"; // Mise en forme du message que vous recevrez
    $mon_pseudo = "Gérant";
    $mon_url = "http://www.chezmoi.com";
    $msg_pour_moi = "- Son pseudo : $son_statut \n
    - Son E-mail : $son_email \n
    - Son site : $son_url \n
    - Objet du message : $son_objet \n
    - Message : \n $son_message \n\n";

    // Mise en forme de l'accusé réception qu'il recevra
    $accuse_pour_lui = "Bonjour,\n
    Votre message nous a bien été envoyé et nous tâcherons de vous répondre le plus rapidement possible.\n\n
    - Votre E-mail : $son_email \n
    - Votre site : $son_url \n
    - L'objet de votre message : $son_objet \n
    - Votre message : \n $son_message \n\n
    Merci et à bientôt !";

    // Envoie du mail
    $entete = "From: " . $mon_statut . " <" . $mon_email . ">\n"; // On prépare l'entête du message
    $entete .= "MIME-Version: 1.0";

    if (@mail($mon_email,$son_objet,$msg_pour_moi,$entete) && @mail($son_email,$son_objet,$accuse_pour_lui,$entete)){ // Si le mail a été envoyé
        echo "<p style=\"text-align:center\"><br /><br />\n"; // On affiche un message de confirmation
        echo "<a href=\"" . $mon_url . "\"></a></p>\n"; // Avec un lien de retour vers l'accueil du site
    }
    else { // Sinon il y a eu une erreur lors de l'envoi
        echo "<p style=\"text-align:center\">Un problème s'est produit lors de l'envoi du message.\n";
        echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a></p>\n"; // On propose un lien de retour vers le formulaire
    }
}
?>

d'avance merci !
 
Nouveau WRInaute
Bonjour!

En fait tu veux dire qu'il suffit simplement de remplacer:

Code:
<input type="checkbox" name="son_objet"  id="label9" title="Choisissez un ou plusieurs décors" tabindex="4" value="Coq">Coq
            <input type="checkbox" name="son_objet"  id="label9" title="Choisissez un ou plusieurs décors" tabindex="4" value="Coquelicot">Coquelicot
            <input type="checkbox" name="son_objet"  id="label9" title="Choisissez un ou plusieurs décors" tabindex="4" value="Crustacé">Crustacé

Par le code suivant:

Code:
<input type="checkbox" name="son_objet"  id="label9" title="Choisissez un ou plusieurs décors" tabindex="4" value="Coq">Coq
            <input type="checkbox" name="son_objet"  id="label20" title="Choisissez un ou plusieurs décors" tabindex="4" value="Coquelicot">Coquelicot
            <input type="checkbox" name="son_objet"  id="label21" title="Choisissez un ou plusieurs décors" tabindex="4" value="Crustacé">Crustacé

J'avoue que là je veux bien un coup de main, je patauge! :oops:
 
WRInaute discret
Pour tes checkbox utiliser un name sous la forme "nomduchamp[]" (le même pour chaque checkbox).

La variable $_POST['nomduchamp'] sera en fait un tableau.

Afin de récupérer toutes les valeurs stockées dans cette variable, tu peux lire ton tableau à l'aide d'un "foreach".

exemple :
$chaine = "";
foreach($_POST['nomduchamp'] as $cle => $valeur){
$chaine .= "Valeur de la cellule ".$cle." = ".$valeur."<br>";
}
 
Discussions similaires
Haut