bonjour,

Je suis sujets au problèmes de formulaires, mais aujourd'hui je ne le comprends pas. J'ai donc réalisé ces 3 formulaires, et aucun message ne m'est retourné lorsque je les teste, alors le problème vient des fichiers php selon moi. Mon code n'est pas extraordinaire ni difficile à comprendre, pourtant l'erreur m'échappe : pourquoi rien ne s'affiche lorsque je clique sur l'un de mes boutons "submit" en ayant bien rempli le formulaire, et pourquoi mon formulaire ne s'envoie simplement pas ?
Je pense que l'erreur est la mêmepartout car ils sont tous les 3 construis de la même façon.

voici le code :

<table id="container">
<tr> 
<td id="col-contain"> <!--Formulaire pour Groupes-->
    <h1> Groupes </h1>
    <form method="post" action="groupes.php" id="commande" autocomplete="on">
        <p><input type="email" name="usermail" placeholder="Adresse Email" required><p>
        <p><input type="text" name="groupname" placeholder="Nom de l'asso/école/entreprise" required><p>
        <p><label for="numbertc">Nombre de Teddy TC Company <b>(?5)</b><br></label>
            <input type="number" name="numbertc" value="0" min="0" max="100" step="1">
        </p>
        <p><label for="numberperso">Nombre de Teddy Personnalisés <b>(?50)</b><br></label>
            <input type="number" name="numberperso" value="0" min="0" max="100" step="1">
        </p>
        <!--<p><select name="color" value="" placeholder="Sélectionnez la couleur">
                <option id="blue">Bleu</option>
                <option id="red">Rouge</option>
                <option id="green">Vert</option>
            </select>
        </p>-->
        <p><label for="SizeColorNb">Couleur + Taille -> Nombre<br></label>
            <textarea name="commentaire" rows="15" cols="40" placeholder="Veuillez préciser le NOMBRE et la COULEUR pour CHAQUE TAILLE.
Exemple : 
TEDDYS TC COMPANY
- Taille S = 1 Rouge, 2 Verts, 5 Bleus
- Taille M = 3 Rouge, 1 Verts, 10 Bleus
...  
TEDDYS PERSONNALISÉS
- Taille S = 1 Rouge, 2 Verts, 5 Bleus
- Taille M = 3 Rouge, 1 Verts, 10 Bleus
... 
Laissez un commentaire si besoin" required></textarea>
        </p>
        <p><input type="submit" value="Demander le Devis" id="commander"/></p>
    </form>
</td>
<td id="col-contain"> <!--Formulaire pour Particuliers-->
    <h1> Particuliers </h1>
    <form method="post" action="particuliers.php" id="commande" autocomplete="on">
        <p><input type="email" name="usermail" placeholder="Adresse Email" required></p>
        <p><label for="numbertc">Nombre de Teddy TC Company<br></label>
            <input type="number" name="numbertc" value="0" min="5" max="100" step="1">
        </p>
        <p><select name="color" value="" placeholder="Sélectionnez la couleur" required>
                <option id="blue">Bleu</option>
                <option id="red">Rouge</option>
                <option id="green">Vert</option>
            </select>
        </p>
        <p><select name="size" value="" placeholder="Sélectionnez votre taille" required>
                <option id="S">S</option>
                <option id="M">M</option>
                <option id="L">L</option>
                <option id="XL">XL</option>
                <option id="XXL">XXL</option>
            </select>
        </p>
        <p><textarea name="commentaire" rows="17" cols="40" placeholder="Si vous souhaitez des Teddys de tailles et couleurs différentes, veuillez écrire les détails ici. 
Exemple : 
- Taille S = 1 Rouge, 2 Verts, 5 Bleus
- Taille M = 3 Rouge, 1 Verts, 10 Bleus
... "></textarea></p>
        <p><input type="submit" value="Demander le devis" id="commander"/></p>      
    </form>
</td>
<td id="col-contain"> <!--Formulaire Contact-->
    <h1> Contactez Nous </h1>
    <form method="post" action="contact.php" id="contact" autocomplete="on">
        <p><input type="email" name="usermail" placeholder="Adresse Email" required></p>
        <p><textarea name="message" rows="20" cols="40" placeholder="Votre Message" required></textarea></p>
        <p><input type="submit" value="Envoyer" id="envoyer"/></p>      
    </form>
</td>
</tr>
</table>

Pour l'explication, chaque formulaire a son rôle et donc son code php approprié.
Voici pour le premier formulaire :

<?php
if(isset($_POST) && isset($_POST'usermail']) && isset($_POST'groupname']) && isset($_POST'numbertc']) && isset($_POST'numberperso']) && isset($_POST'commentaire']))
{
    extract($_POST);
    if(!empty($usermail) && !empty($groupname) && !empty($numbertc) && !empty($numberperso) && !empty($commentaire))
    {
        $destinataire = "monmail@gmail.com";
        $msg = "NOUVELLE COMMANDE DE TEDDYS POUR $groupname ! \n
        Email : $usermail \n
        Nombre Teddy TC Company : $numbertc \n
        Nombre Teddy Perso : $numberperso \n
        Couleurs/Taille/Nombre (+ Commentaire): $commentaire";
        $entete = "From : $groupname \n Reply-To : $usermail";
        mail($destinataire, $msg, $entete);
        echo "Votre demande de devis a bien été reçue, elle sera traitée dans les plus brefs délais.
        Un email de confirmation va vous être envoyée sous peu.
        Merci pour votre visite, et à bientôt !
        L'équipe TC Company.";
        echo "<form><input type="button" value="Retour vers le site" OnClick="window.location.href=\'http://www.monsite.fr'"></form>";
    }
    else
    {
        echo "Vous n'avez pas rempli tous les champs.";
        echo '<form><input type="button" value="Retour vers le formulaire" OnClick="window.location.href=\'http://www.monsite.fr/contact.html\'"></form>';
    }
}
?>

Le deuxième :

<?php
if(isset($_POST) && isset($_POST'usermail']) && isset($_POST'numbertc']) && isset($_POST'color']) && isset($_POST'size']) && isset($_POST'commentaire']))
{
    extract($_POST);
    if(!empty($usermail) && !empty($numbertc) && !empty($color) && !empty($size) !empty($commentaire))
    {
        $destinataire = "monmail@gmail.com";
        $msg = "NOUVELLE COMMANDE DE TEDDY(S) POUR $usermail ! \n
        Nombre Teddy TC Company : $numbertc \n
        Couleur : $color \n
        Taille : $size \n
        Commentaire : $commentaire";
        $entete = "From : $usermail \n Reply-To : $usermail";
        mail($destinataire, $msg, $entete);
        echo "Votre demande de devis a bien été reçue, elle sera traitée dans les plus brefs délais.
        Un email de confirmation va vous être envoyée sous peu.
        Merci pour votre visite, et à bientôt !
        L'équipe TC Company.";
        echo "<form><input type="button" value="Retour vers le site" OnClick="window.location.href=\'http://www.monsite.fr'"></form>";
    }
    else
    {
        echo "Vous n'avez pas rempli tous les champs.";
        echo '<form><input type="button" value="Retour vers le formulaire" OnClick="window.location.href=\'http://www.monsite.fr/contact.html\'"></form>';
    }
}
?>

Le troisième et dernier :

<?php
if(isset($_POST) && isset($_POST'usermail']) && isset($_POST'message']))
{
    extract($_POST);
    if(!empty($usermail) && !empty($message))
    {
        $destinataire = "monmail@gmail.com";
        $msg = "Un nouveau message de $usermail est arrivé depuis la boîte Contact. \n
        Message : $message";
        $entete = "From : $usermail \n Reply-To : $usermail";
        mail($destinataire, $msg, $entete);
        echo "Message recu ! Nous traitons votre requete dans les plus brefs delais. Merci pour votre visite.";
        echo "<form><input type="button" value="Retour vers le site" OnClick="window.location.href=\'http://www.monsite.fr'"></form>";
    }
    else
    {
        echo "Vous n'avez pas rempli tous les champs.";
        echo '<form><input type="button" value="Retour vers le formulaire" OnClick="window.location.href=\'http://www.monsite.fr/contact.html\'"></form>';
    }
}
?>

Merci par avance, je suis certain qu'il n'y a rien de très compliqué mais je ne connais que trop peu le php et malgré mes recherches je ne sais pas ce qui cloche...

Cordialement

6 réponses


F2014
Auteur
Réponse acceptée

Rien ne s'affiche non plus ... est-ce possible que ce soit mon fichier html qui n'est pas bon ? parce que je ne comprends pas pourquoi je n'arrive à aucun affichage, même avec vos lignes de codes pour voir les erreurs, c'est vraiment anormal ça ! ...

Merci en tout cas pour vos réponses, c'est gentil de prendre du temps pour mon problème.

Edit :
Jusqu'alors, je faisais tous mes tests sur chrome sans changer de navigateur (enfin en tout cas pour mon formulaire...) je viens à l'instant de tester sur IE8 et lorsque j'envoi mon formulaire, je me retrouve sur une ERREUR 500, ça peut peut être aider à résoudre le problème...

Edit 2 :
N'ayant pas besoin de barrières de if puisque je bloque les entrées aux abords du formulaires, j'ai fait mes fichier php tout simplement. Donc avec juste les actions de récupération de variables et aussi l'action d'envoi du mail. Tout fonctionne désormais :)

Bonsoir,

1/ La syntaxe de la fonction mail est erronée.
2/ Vous travaillez en local ou sur un serveur ?

F2014
Auteur

La fonction n'avait pas l'air de fonctionner non, en fait je n'avais pas fait attention aux paramètres que prenait cette fonction en paramètre.
Maintenant c'est fait, voici un des trois fichiers php pour exemple :

<?php
if(isset($_POST) && isset($_POST'usermail']) && isset($_POST'groupname']) && isset($_POST'numbertc']) && isset($_POST'numberperso']) && isset($_POST'commentaire']))
{
    extract($_POST);
    if(!empty($usermail) && !empty($groupname) && !empty($numbertc) && !empty($numberperso) && !empty($commentaire))
    {
        $to = "mail@gmail.com";
        $subject = "NOUVEAU DEVIS DE TEDDYS POUR $groupname !";
        $message = "Email : $usermail \n
        Nombre Teddy TC Company : $numbertc \n
        Nombre Teddy Perso : $numberperso \n
        Couleurs/Taille/Nombre (+ Commentaire): $commentaire";
        $additional_headers = "From : $groupname \n Reply-To : $usermail";
        mail($to, $subject, $message, $additional_headers);
        echo "Votre demande de devis a bien été reçue, elle sera traitée dans les plus brefs délais.
        Un email de confirmation vous sera envoye sous peu.
        Merci pour votre visite, et à bientôt !
        L'équipe TC Company.";
        echo "<form><input type="button" value="Retour vers le site" OnClick="window.location.href=\'http://www.monsite.fr'"></form>";
    }
    else
    {
        echo "Vous n'avez pas rempli tous les champs.";
        echo '<form><input type="button" value="Retour vers le formulaire" OnClick="window.location.href=\'http://www.monsite.fr/contact.html\'"></form>';
    }
}
?>

Mais... Rien ne s'affiche pour autant et je ne reçois toujours pas le mail envoyé pour le test...

Je travaille sous serveur mutualisé.

Merci pour vos réponse :)

Essayer ceci pour savoir si votre fonction mail fonctionne et pour afficher les erreurs.

<?php
ini_set('display_errors', 1); 
error_reporting(E_ALL); 
if(isset($_POST) && isset($_POST'usermail']) && isset($_POST'groupname']) && isset($_POST'numbertc']) && isset($_POST'numberperso']) && isset($_POST'commentaire']))
{
    extract($_POST);
    if(!empty($usermail) && !empty($groupname) && !empty($numbertc) && !empty($numberperso) && !empty($commentaire))
    {
        $to = "mail@gmail.com";
        $subject = "NOUVEAU DEVIS DE TEDDYS POUR $groupname !";
        $message = "Email : $usermail \n
        Nombre Teddy TC Company : $numbertc \n
        Nombre Teddy Perso : $numberperso \n
        Couleurs/Taille/Nombre (+ Commentaire): $commentaire";
        $additional_headers = "From : $groupname \n Reply-To : $usermail";
        if(mail($to, $subject, $message, $additional_headers))
            echo "Votre demande de devis a bien été reçue, elle sera traitée dans les plus brefs délais.
                Un email de confirmation vous sera envoye sous peu.
                Merci pour votre visite, et à bientôt !
                L'équipe TC Company.";
            echo "<form><input type="button" value="Retour vers le site" OnClick="window.location.href=\'http://www.monsite.fr'"></form>";
        }
        else
            echo "L'envoie du mail à échoué";

    }
    else
    {
        echo "Vous n'avez pas rempli tous les champs.";
        echo '<form><input type="button" value="Retour vers le formulaire" OnClick="window.location.href=\'http://www.monsite.fr/contact.html\'"></form>';
    }
}
?>
F2014
Auteur

Bonjour, ce code ne me renvoie rien, tout comme pour le mien, rien ne s'affiche...
J'ai ensuite essayé de faire ceci :

<?php
ini_set('display_errors', 1); 
error_reporting(E_ALL); 
if(isset($_POST) && isset($_POST'usermail']) && isset($_POST'groupname']) && isset($_POST'numbertc']) && isset($_POST'numberperso']) && isset($_POST'commentaire']))
{
extract($_POST);
if(!empty($usermail) && !empty($groupname) && !empty($numbertc) && !empty($numberperso) && !empty($commentaire))
{
$to = "mail@gmail.com";
$subject = "NOUVEAU DEVIS DE TEDDYS POUR $groupname !";
$message = "Email : $usermail \n
Nombre Teddy TC Company : $numbertc \n
Nombre Teddy Perso : $numberperso \n
Couleurs/Taille/Nombre (+ Commentaire): $commentaire";
$additional_headers = "From : $groupname \n Reply-To : $usermail";
if(mail($to, $subject, $message, $additional_headers)){
echo "Votre demande de devis a bien été reçue, elle sera traitée dans les plus brefs délais.
Un email de confirmation vous sera envoye sous peu.
Merci pour votre visite, et à bientôt !
L'équipe TC Company.";
echo "<form><input type="button" value="Retour vers le site" OnClick="window.location.href=\'http://www.monsite.fr'"></form>";
}
else
echo "L'envoie du mail à échoué";
}
else
{
echo "Vous n'avez pas rempli tous les champs.";
echo '<form><input type="button" value="Retour vers le formulaire" OnClick="window.location.href=\'http://www.monsite.fr/contact.html\'"></form>';
}
else
echo "Il y a un problème avant le Extract"
}
?>

Pour info, je teste en direct : je charge mon programme dans filezilla et je remplis le formulaire comme n'importe quel utilisateur le ferai... Poeut être que ce n'est pas la manip à faire.

Bonjour,

Juste après le error_reporting, faites un var_dump($_POST);