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

Petit nouveau ! | 7 Messages

08 août 2014, 11:06

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

Mammouth du PHP | 2278 Messages

08 août 2014, 12:04

Je suis allé voir et ne comprends pas le problème.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 7 Messages

08 août 2014, 17:24

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 ?

ViPHP
ViPHP | 1996 Messages

08 août 2014, 19:39

Je crois comprendre :

Essayes de retourner vers un lien HTML :
<form id="formulaire" method="post" action="page.php#formulaire">
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 7 Messages

08 août 2014, 20:10

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.

ViPHP
ViPHP | 1996 Messages

08 août 2014, 22:20

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>
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Petit nouveau ! | 7 Messages

09 août 2014, 08:26

Bonjour Aureusms et merci encore.
Oui je vais faire ça, un callage à peu près.
Bonne journée.