Bonsoir,

J'utilise souvent le traitement mail du tuto, mais la impossible et je suis perdu.

le thème : http://themeforest.net/item/cordata-onepage-template/153828

<div class="slide-panel" id="contact">
        <h1 class="sTitle">Contact - Sacha Le-Berre - Auto Entrepreneur - Amiens</h1>
        <div class="scrollWrap">
            <div class="scrollbar">
                <div class="track">
                    <div class="thumb">
                        <div class="end"></div>
                    </div>
                </div>
            </div>
            <div class="viewport">
                <div class="overview">
                    <div class="colS" style="width:215px;">

                            <form method="post" action="contacts-send.php" id="cForm">

                                <div>
                                <label for="nom">Nom (*)</label>
                                <input type="text" name="nom" id="nom" />
                                </div>

                                <div>
                                <label for="email">Email (*)</label>
                                <input type="text" name="email" id="email" />
                                </div>

                                <div>
                                <label for="sujet">Sujet</label>
                                <input type="text" name="propos" id="propos" />
                                </div>

                                <div>
                                <label for="message">Message (*)</label>
                                <textarea id="message" rows="10" cols="40" name="message"></textarea>
                                </div>

                                <div><input id="form_submit" type="submit" name="submit" value="Envoyer" /></div>

                                <p class="hide" id="response"></p>

                             </form>

                    </div>
                    <div class="colS" style="width:220px;">
                    <br />
                        <img src="./images/avatar.jpg" alt="avatar" class="conImg"/>
                    </div>
                    <div class="colS" style="width:180px;">                    
                    <br />
                    <p style="line-height: 18px;"><img src="./images/flashcode.png" alt="flashcode"/></p>

                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<?php
if(!empty($_POST)){
    extract($_POST);
    $valid = true;
if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$email)){
        $valid=false;
        $erreuremail = "Email non-valide !";
    }

    if(empty($nom)){
        $valid=false;
        $erreurnom="Votre nom ?";
    }
    if(empty($email)){
        $valid=false;
        $erreuremail="Votre Email ?";
    }
    if(empty($message)){
        $valid=false;
        $erreurmessage="Votre message ?";
    }   

    if($valid){
        $to = "contact@losojosdesign.fr";
        $sujet = "$nom contact Los Ojos Design";
        $header = "From: $nom <$email>";
        $message = stripslashes($message);
        if (mail($to,$sujet,$message,$header)){
            $erreur = "So Good !";
            unset ($nom);
            unset ($email);
            unset ($message);
    }
    else{
        $erreur = "une erreur est survenue !";
    }   
    }
}
?>
<div align="center" style="font-size:9px; text-align:left; padding: 3px;" class="w_list_item w_border w_bg_light w_radius">

                        <a href="#" name="accordion"><?php if(isset($erreurnom)) echo $erreurnom; ?></a>

                        <a href="#" name="accordion"><?php if(isset($erreuremail)) echo $erreuremail; ?></a>
                        <a href="#" name="accordion"><?php if(isset($erreurmessage)) echo $erreurmessage; ?></a>

                        <a href="#" name="accordion"><?php if(isset($erreur)) echo $erreur; ?></a>

                    </div>

Merci

14 réponses


Tit-LoW
Réponse acceptée

En faite, ta première partie (HTML) Affiche ton formulaire. L'utilisateur le rempli.
Lors du post on entame la seconde partie de ton programme. Lui il récupère les informations des champs (Sans les traiter) et les envois à ton fichier PHP.
Ton fichier php reçoit les données et les traites.

Donc pour finir a la place du code contenu dans ton fichier ajax.js, tu met le code suivant :

$(function(){  

    //Do what we need to when form is submitted.      
    $('#form_submit').click(function(){  

    //Setup any needed variables.  
    var input_name = $('input[name=nom]').val(),  
        input_email = $('input[name=email]').val(),  
        input_subject = $('input[name=sujet]').val(),  
        input_message = $('#message').val(),  
        response_text = $('#response');  
        //Hide any previous response text   
        response_text.hide();  

        //Change response text to 'loading...'  
        response_text.html('Loading...').show();  

        //Make AJAX request   
        $.post('contact-send.php', {nom: input_name, email: input_email, sujet: input_subject, message: input_message}, function(data){  
            response_text.html(data);  
        });  

        //Cancel default action  
        return false;  
    });  

});

Et le problème est réglé (Testé sur mon serveur)

Bonjour,
Si tu nous disait exactement ou est le problème...
Car à part que la variable "$sujet" ne pourra jamais remonté car le champs s'appelle "propos" je ne vois rien...

<div>  
<label for="sujet">Sujet</label>  
<input type="text" name="propos" id="propos" />  
</div>

En effet, petite erreur de ma par !

Mais là n'est pas le problème, en gros la vérification des champs est inactive (même complété, il demande encore le nom, le message etc.)

Et le traitement mail ne fonctionne pas !

http://losojosdesign.fr/new/index.php

Merci

A mon avis le problème est du a la doublure de la fonction empty...

if(!emptyempty($_POST))
if(emptyempty($nom))
if(emptyempty($email))
if(emptyempty($message))

A mon avis regarde dans ce sens. La fonction emptyempty(); n'existe pas en PHP. Le syntaxehighlighter les différencies.

Je n'est pas de double empty dans mon code c'est bizarre !

J'ai quelques notions php, mais je ne comprend pas toute les ligne, du coup je suis perdu.

Voici mon inculude contact qui est dans l'index.php (le site est constitué que d'une seule page.

<div class="slide-panel" id="contact">
        <h1 class="sTitle">Contact - Sacha Le-Berre - Auto Entrepreneur - Amiens</h1>
        <div class="scrollWrap">
            <div class="scrollbar">
                <div class="track">
                    <div class="thumb">
                        <div class="end"></div>
                    </div>
                </div>
            </div>
            <div class="viewport">
                <div class="overview">
                    <div class="colS" style="width:215px;">

                            <form method="post" action="contacts-send.php" id="cForm">

                                <div>
                                <label for="nom">Nom (*)</label>
                                <input type="text" name="nom" id="nom"/>
                                </div>

                                <div>
                                <label for="email">Email (*)</label>
                                <input type="text" name="email" id="email"/>
                                </div>

                                <div>
                                <label for="sujet">Sujet</label>
                                <input type="text" name="sujet" id="sujet"/>
                                </div>

                                <div>
                                <label for="message">Message (*)</label>
                                <textarea id="message" rows="10" cols="40" name="message"></textarea>
                                </div>

                                <div><input id="form_submit" type="submit" name="submit" value="Envoyer" /></div>

                                <p class="hide" id="response"></p>

                             </form>

                    </div>
                    <div class="colS" style="width:220px;">
                    <br />
                        <img src="./images/avatar.jpg" alt="avatar" class="conImg"/>
                    </div>
                    <div class="colS" style="width:180px;">                    
                    <br />
                    <p style="line-height: 18px;"><img src="./images/flashcode.png" alt="flashcode"/></p>

                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Déjà il n'appel pas l'index mais le contacts-send.php

<?php
if(!empty($_POST)){
    extract($_POST);
    $valid = true;
if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$email)){
        $valid=false;
        $erreuremail = " email non valide !";
    }

    if(empty($nom)){
        $valid=false;
        $erreurnom="votre nom !";
    }
    if(empty($email)){
        $valid=false;
        $erreuremail="votre email !";
    }
    if(empty($message)){
        $valid=false;
        $erreurmessage="votre message !";
    }   

    if($valid){
        $to = "losojosdesign@gmail.com";
        $sujet = "$nom contact Los Ojos Design - $sujet";
        $header = "From: $nom <$email>";
        $message = stripslashes($message);
        if (mail($to,$sujet,$message,$header)){
            $erreur = "votre message nous ai bien parvenu.";
            unset ($nom);
            unset ($email);
            unset ($message);
    }
    else{
        $erreur = "une erreur est survenue !";
    }   
    }
}
?>

<div align="center" style="font-size:9px; text-align:left; padding: 3px;" class="w_list_item w_border w_bg_light w_radius">   

                        <a href="#" name="accordion"><?php if(isset($erreurnom)) echo $erreurnom; ?></a>

                        <a href="#" name="accordion"><?php if(isset($erreuremail)) echo $erreuremail; ?></a>
                        <a href="#" name="accordion"><?php if(isset($erreurmessage)) echo $erreurmessage; ?></a>

                        <a href="#" name="accordion"><?php if(isset($erreur)) echo $erreur; ?></a>

                    </div>

<?php
if(!empty($_POST)){
extract($_POST);
$valid = true;

if(!preg_match("/^[a-z0-9-_.]+@[a-z0-9-_.]+.[a-z]{2,3}$/i",$email)){
$valid=false;
$erreuremail = " email non valide !";
}

if(empty($nom)){
$valid=false;
$erreurnom="votre nom !";
}
if(empty($email)){
$valid=false;
$erreuremail="votre email !";
}
if(empty($message)){
$valid=false;
$erreurmessage="votre message !";
}

if($valid){
$to = "losojosdesign@gmail.com";
$sujet = "$nom contact Los Ojos Design - $sujet";
$header = "From: $nom <$email>";
$message = stripslashes($message);
if (mail($to,$sujet,$message,$header)){
$erreur = "votre message nous ai bien parvenu.";
unset ($nom);
unset ($email);
unset ($message);
}
else{
$erreur = "une erreur est survenue !";
}
}
}
?>

<div align="center" style="font-size:9px; text-align:left; padding: 3px;" class="w_list_item w_border w_bg_light w_radius">

<a href="#" name="accordion"><?php if(isset($erreurnom)) echo $erreurnom; ?></a>

<a href="#" name="accordion"><?php if(isset($erreuremail)) echo $erreuremail; ?></a>

<a href="#" name="accordion"><?php if(isset($erreurmessage)) echo $erreurmessage; ?></a>

<a href="#" name="accordion"><?php if(isset($erreur)) echo $erreur; ?></a>

</div>

Je suis prêt à partager mes fichiers en rar, afin que l'un de vous regarde !

Bien écoute envoi. J'y recarderai.

Le doublon empty est un bug du forum.

Voici le lien : http://db.tt/vHOdS7o

Merci (et je croise les doigts)

Techniquement ton code est correct. A mon avis. Enfin d'après ce que je peux voir c'est ton jQuery qui ne ramasse pas tout les champs.

EDIT :
Effectivement. Dans le fichier ./js/ajax.js :

$(function(){

    //Do what we need to when form is submitted.    
    $('#form_submit').click(function(){

    //Setup any needed variables.
    var input_name = $('input[name=name]').val(),
        input_email = $('input[name=email]').val(),
        input_subject = $('input[name=subject]').val(),
        input_message = $('#form_message').val(),
        response_text = $('#response');
        //Hide any previous response text 
        response_text.hide();

        //Change response text to 'loading...'
        response_text.html('Loading...').show();

        //Make AJAX request 
        $.post('contact-send.php', {name: input_name, email: input_email, subject: input_subject, message: input_message}, function(data){
            response_text.html(data);
        });

        //Cancel default action
        return false;
    });
});

Donc si je comprend bien, c'est le ajax.js qui traite une première fois mon formulaire (vérification des champs ?) donc je remplace dans le contact.php les nom des input par les valeurs du js.
Mais dans le traitment send, je met quoi comme code ?

Je viens de mettre en ligne

ajax.js

$(function(){    

        //Do what we need to when form is submitted.        
        $('#form_submit').click(function(){    

        //Setup any needed variables.    
        var input_name = $('input[name=nom]').val(),    
            input_email = $('input[name=email]').val(),    
            input_subject = $('input[name=sujet]').val(),    
            input_message = $('#message').val(),    
            response_text = $('#response');    
            //Hide any previous response text     
            response_text.hide();    

            //Change response text to 'loading...'    
            response_text.html('Loading...').show();    

            //Make AJAX request     
            $.post('contact-send.php', {nom: input_name, email: input_email, sujet: input_subject, message: input_message}, function(data){    
                response_text.html(data);    
            });    

            //Cancel default action    
            return false;    
        });    

    });

mon send-contact

<?php
if(!empty($_POST)){
    extract($_POST);
    $valid = true;
if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$email)){
        $valid=false;
        $erreuremail = " email non valide !";
    }

    if(empty($nom)){
        $valid=false;
        $erreurnom="votre nom !";
    }
    if(empty($email)){
        $valid=false;
        $erreuremail="votre email !";
    }
    if(empty($message)){
        $valid=false;
        $erreurmessage="votre message !";
    }   

    if($valid){
        $to = "losojosdesign@gmail.com";
        $sujet = "$nom contact Los Ojos Design - $sujet";
        $header = "From: $nom <$email>";
        $message = stripslashes($message);
        if (mail($to,$sujet,$message,$header)){
            $erreur = "votre message nous ai bien parvenu.";
            unset ($nom);
            unset ($email);
            unset ($message);
    }
    else{
        $erreur = "une erreur est survenue !";
    }   
    }
}
?>

<div align="center" style="font-size:9px; text-align:left; padding: 3px;" class="w_list_item w_border w_bg_light w_radius">   

                        <a href="#" name="accordion"><?php if(isset($erreurnom)) echo $erreurnom; ?></a>

                        <a href="#" name="accordion"><?php if(isset($erreuremail)) echo $erreuremail; ?></a>
                        <a href="#" name="accordion"><?php if(isset($erreurmessage)) echo $erreurmessage; ?></a>

                        <a href="#" name="accordion"><?php if(isset($erreur)) echo $erreur; ?></a>

                    </div>

et mon contact

<div class="slide-panel" id="contact">
        <h1 class="sTitle">Contact - Sacha Le-Berre - Auto Entrepreneur - Amiens</h1>
        <div class="scrollWrap">
            <div class="scrollbar">
                <div class="track">
                    <div class="thumb">
                        <div class="end"></div>
                    </div>
                </div>
            </div>
            <div class="viewport">
                <div class="overview">
                    <div class="colS" style="width:215px;">

                            <form method="post" action="contacts-send.php" id="cForm">

                                <div>
                                <label for="nom">Nom (*)</label>
                                <input type="text" name="nom" id="nom"/>
                                </div>

                                <div>
                                <label for="email">Email (*)</label>
                                <input type="text" name="email" id="email"/>
                                </div>

                                <div>
                                <label for="sujet">Sujet</label>
                                <input type="text" name="sujet" id="sujet"/>
                                </div>

                                <div>
                                <label for="message">Message (*)</label>
                                <textarea id="message" rows="10" cols="40" name="message"></textarea>
                                </div>

                                <div><input id="form_submit" type="submit" name="submit" value="Envoyer" /></div>

                                <p class="hide" id="response"></p>

                             </form>

                    </div>
                    <div class="colS" style="width:220px;">
                    <br />
                        <img src="./images/avatar.jpg" alt="avatar" class="conImg"/>
                    </div>
                    <div class="colS" style="width:180px;">                    
                    <br />
                    <p style="line-height: 18px;"><img src="./images/flashcode.png" alt="flashcode"/></p>

                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Et encore une fois il me signale les champs comme vide, et ne traite pas le mail. (comme si les fichiers n'avaient pas changés)

Miracle, après quelques F5 mon fichiers est good.

Le traitement fonctionne, cool !

Merci à toi Titnome.

Bonne soirée.