Page 1 sur 1

Rafraîchissement de la page après l'envoi du formulaire

Posté : 08 août 2014, 11:06
par morea
Bonjour,
Je suis en phase de mise en ligne d'un de mes sites et j'ai un soucis avec le rafraîchissement de la page après l'envoi du formulaire. Je suis très embêtée, j'arrive pas à voir ce qui cloche. Ce site est une onepage et donc, quand on clique sur envoyer la page remonte en entête aussitôt, donc l'internaute ne voit pas si son formulaire est bien parti.

Voici le lien. Vous pouvez cliquer sur webmaster (c'est moi) et m'envoyer un message : pour faire la manip jusqu'au et mieux vous rendre compte.
http://www.sodecinternational.fr/page.php

voici le code en entête du HTML :
<?php
    if(!empty($_POST)){
        extract($_POST);
        $valid = true;
 
        if(empty($nom)){
            $valid = false;
            $erreurnom = 'vous devez indiquer votre nom';
        }elseif(empty($email)){
            $valid = false;
            $erreuremail = 'vous devez indiquer votre email';
        }elseif($email != null && !preg_match('/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i', $email)){
            $valid = false;
            $erreuremail = 'adresse email invalide';
        }elseif(empty($pays)){
            $valid = false;
            $erreurpays = 'vous devez indiquer votre pays';
        }elseif(empty($message)){
            $valid = false;
            $erreurmessage = 'Vous devez écrire un message';
        }elseif(!isset($service)){ // JE VÉRIFIE QUE L'UTILISATEUR À BIEN CHOISIE UN DESTINATAIRE
            $valid = false;
            $erreurservice = 'Vous devez choisir un destinataire';
        }
 
        if($valid){
            switch($service){ // JE TRAITE LE CHOIX DU DESTINATAIRE
                case 'mail1':
                    $to = '[email protected]';
                    break;
                case 'mail2':
                    $to = '[email protected]';
                    break;
                case 'mail3':
                    $to = '[email protected]';
                    break;
                case 'mail4':
                    $to = '[email protected]';
                    break;

            }
 
            $sujet  = $nom.' vous envoi un message';
            $header = "Content-type: text/html; charset=utf-8\r\n";
            $header .= "From: [email protected] \r\n";
            $header .= 'Reply-To: '.$email.' ';
 
            $message = stripcslashes($message);
            $nom     = stripcslashes($nom);
 
            if(mail($to, $sujet, $message, $header)) {
                $ok = 'Votre message est bien parti';
						}
            else {
                $erreur = 'Une erreur est survenue lors de l\'envoi de votre message.';
						}
						//je vide les variables
						unset($nom);
						unset($email);
						unset($pays);
						unset($message);
        }
    }
?>
Et le code du formulaire contact :
			<h1 id="contact">Contacts</h1>
            <?php
            if(isset($ok)) echo '<p class="ok">'.$ok.'</p>';
            if(isset($erreur)) echo '<p class="erreur">'.$erreur.'</p>';
            if(isset($erreurservice)) echo '<p class="erreurservice">'.$erreurservice.'</p>';
            ?>

            <form method="post" action="page.php">
                <fieldset id="caseAcocher">
                    <legend>Cochez la case correspondante à la personne<br>que vous souhaitez contacter,<br>
                        le formulaire ci-contre dirigera votre mail
                    </legend>
                    <ul>
                        <li><input type="radio" name="service" id="gino" value="mail1" />
                            <label for="gino">Direction générale : Gino Ferrara</label>
                        </li>
                        <li><input type="radio" name="service" id="laborde" value="mail2" />
                            <label for="laborde">Direction technique : Bernard Laborde</label>
                        </li>
                        <li><input type="radio" name="service" id="gilles" value="mail3" />
                            <label for="gilles">Responsable : Gilles Ferrara</label>
                        </li>
                        <li><input type="radio" name="service" id="webmaster" value="mail4" />
                            <label for="webmaster">Webmaster : Maria Orea</label>
                        </li>
                    </ul>
                </fieldset>
                <fieldset id="form">
								<p>
									<input type="text" placeholder="Nom" id="nom" name="nom" value="<?php if(isset($nom)) echo $nom; ?>">
									<span class="error-message"><?php if(isset($erreurnom)) echo $erreurnom; ?></span>
								</p>
								<p>
									<input type="email" placeholder="Email" id="email" name="email" value="<?php if(isset($email)) echo $email; ?>">
									<span class="error-message"><?php if(isset($erreuremail)) echo $erreuremail; ?></span>
								</p>
								<p><input type="text" placeholder="Pays" id="pays" name="pays" value="<?php if(isset($pays)) echo $pays; ?>">
									<span class="error-message"><?php if(isset($erreurpays)) echo $erreurpays; ?></span>
								</p>
								<p>
									<textarea id="message" placeholder="Votre message..." name="message" rows="5"><?php if(isset($message)) echo $message; ?></textarea>
										<span class="error-message"><?php if(isset($erreurmessage)) echo $erreurmessage; ?></span>
								</p>
								<p><input type="submit" value="Envoyer votre message" id="envoyer" name="submit" /></p>
                </fieldset>
            </form>
	</section><!--fin de la section 5-->

Merci infiniment par avance si quelqu'un peut me donner un petit coup de main, ce serait super.
morea

Re: Rafraîchissement de la page après l'envoi du formulaire

Posté : 08 août 2014, 12:04
par sirakawa
Je suis allé voir et ne comprends pas le problème.

Re: Rafraîchissement de la page après l'envoi du formulaire

Posté : 08 août 2014, 17:24
par morea
Bonjour sirakawa,
merci d'avoir regardé.
C'est quoi que tu ne comprends pas ? mon code ? ou bien c'est moi qui suis pas claire dans mes explications ?
En résumé, quand l'internaute a rempli son formulaire et qu'il fait "envoyer" il devrait rester sur le formulaire et voir si son formulaire est bien parti. Au lieu de cela la page remonte au header.
Y-a-t-il moyen de trouver une solution ?

Re: Rafraîchissement de la page après l'envoi du formulaire

Posté : 08 août 2014, 19:39
par Aureusms
Je crois comprendre :

Essayes de retourner vers un lien HTML :
<form id="formulaire" method="post" action="page.php#formulaire">

Re: Rafraîchissement de la page après l'envoi du formulaire

Posté : 08 août 2014, 20:10
par morea
merci beaucoup Aureusms, ça marche !
C'est pas calé exactement où il faut, du coup il faut faire défiler un peu pour voir le message de l'envoi réussi, mais au moins ça remonte pas tout en haut et ça reste dans la partie formulaire. ça va aller comme ça.
merci encore.

Re: Rafraîchissement de la page après l'envoi du formulaire

Posté : 08 août 2014, 22:20
par Aureusms
Ok bah triches un peu... Colles une
<div style="width:1px; height:1px;"  id="formulaire">
où tu veux que la fenêtre se cale. Le "calage" sera toujours à partir du haut.

Essayes ici, pour comprendre :
<p>
<textarea id="message" placeholder="Votre message..." name="message" rows="5"><?php if(isset($message)) echo $message; ?></textarea>
<span class="error-message"><?php if(isset($erreurmessage)) echo $erreurmessage; ?></span>
</p>
<div style="width:1px; height:1px;"  id="formulaire">
 <p><input type="submit" value="Envoyer votre message" id="envoyer" name="submit" /></p>

Re: Rafraîchissement de la page après l'envoi du formulaire

Posté : 09 août 2014, 08:26
par morea
Bonjour Aureusms et merci encore.
Oui je vais faire ça, un callage à peu près.
Bonne journée.