[Résolu] Envoi formulaire

cpalocpalo Member
février 2014 modifié dans Entraide
Bonjour

j'utilise myContact comme formulaire de contact du site et pas de problème.

Mon souci:
dans la sidebar j'aurai voulu rajouter un tout petit formulaire mais il me dit qu'il ne trouve pas le fichier envoi.php
[== PHP ==]
 <form  method="post" action="<?php $plxShow->urlRewrite('?static4/envoi') ?>"
            <p><label for="nom">Votre nom:</label>
            <input type="text" id="nom" required /></p>
            <p><label for="prenom">Votre prénom:</label>
            <input type="text" id="prenom" required /></p>
            <p><label for="email">Votre email:</label>
            <input type="email" id="email" required /></p>
                        
            <p><input type="submit" id="envoi" value="Envoyer" /></p>
 
        </form>    


J'ai créé une page statique (vide) avec le template static-envoi que j'ai appelée (url) envoi

la page static-php est la suivante:
[== PHP ==]
<?php include(dirname(__FILE__).'/header-boutique.php'); ?>
<?php include(dirname(__FILE__).'/envoi.php'); ?>
<?php include(dirname(__FILE__).'/footer-boutique.php'); ?>

et le fichier envoi.php:
[== PHP ==]
<?php 

$msg = "Nom:\t$nom\n";
$msg = "Prénom:\t$prenom\n";
$msg .= "E-Mail:\t$email\n";

$recipient = "monadresse@xxxx.fr";
$subject = "Formulaire";

$mailheaders = "From: Mon test de formulaire<> \n";
$mailheaders .= "Reply-To: $email\n\n";

mail($recipient, $subject, $msg, $mailheaders);

echo "<html><head>";
echo "<title>Formulaire envoyé!</title></head><body>";
echo "<h1 align=center>Merci, $nom </h1>";
echo "<p align=center>";
echo "Votre formulaire à bien été envoyé !</P>";
echo "</body></html>";

?>

Je suis preneur de toutes corrections ou autres idées.
C'est l'avant-dernière difficulté pour mon site.
La dernière étant avec le même bouton envoyer deux actions: ce formulaire et la validation d'un panier.

Cordialement

Réponses

  • Jerry WhamJerry Wham Member
    février 2014 modifié
    Il faut que ta page statique s'appelle envoi (dans le tableau d'administration) qu'elle utilise le template static-envoi.php (fichier qui contiendra l'inclusion de envoi.php), et que ton fichier envoi.php soit dans le dossier de ton thème.
  • Bonjour

    Comme tu le dis si bien, je devais avoir la tête dans le code!!!
    Car en lisant ta réponse c'est exactement ce que j'avais fait......
    à une exception prêt ! en local et j'avais oublié d'uploader le dossier data ne transférant que celui du thème

    Cordialement
  • Mais pas completement résolu.
    Le formulaire est bien envoyé
    Le message de confirmation s'affiche quand il a été envoyé
    Il arrive bien dans la messagerie
    mais avec seulement:
    Nom:
    Prénom:
    Email
    donc sans les données saisies par l'internaute
  • Dans tes input tu dois avoir name="xxx" pour récupérer tes valeurs en post
    [== Indéfini ==]
     <input name="nom" type="text" id="nom" required /></p>
    

    après tu récupères tes valeurs en $_POST["nom"] et pas en $nom

    a+
  • cpalocpalo Member
    février 2014 modifié
    Voilà ça fonctionne
    [== PHP ==]
    <?php 
    
    $prenom = $_POST['prenom'];
    $nom = $_POST['nom'];
    $email = $_POST['email'];
    
    $reception = "monadresse@fai.fr";
    $subject = "Formulaire";
    
    $mailHeaders = "From: Mon test de formulaire<> \n";
    $mailHeaders .= "Reply-To: $email\n\n"; 
    $mailHeaders .='Content-Type: text/plain; charset="utf-8"'."\n"; 
    
    $mailContent = "Message de : $prenom, $nom\n";
    $mailContent .= "Adresse : $email\n";
    
    mail($reception, $subject, $mailContent, $mailHeaders);
    
    echo "<html><head>";
    echo "<title>Formulaire envoyé!</title></head><body>"; 
    echo "<div>";
    echo "<h1 align=center>Merci, $prenom $nom </h1>";
    echo "<p align=center>";
    echo "Votre formulaire a bien été envoyé !</P>";
    echo "</div></body></html>";
    
    ?>
    

    Seul petit problème: le texte 'votre formulaire a bien été envoyé) où les caractères accentués ne s'affichent pas
  • Il suffisait de rajouter la balise meta utf8
    [== PHP ==]
    echo "<html><head><meta charset=";
    echo "utf-8";
    echo "><title>Formulaire envoyé!</title></head><body>"; 
    
Connectez-vous ou Inscrivez-vous pour répondre.