Formulaire qui revalide

  • Auteur de la discussion Auteur de la discussion Mth
  • Date de début Date de début
WRInaute occasionnel
Bonjour,
Je commence à enregister dans ma bdd avec un formulaire.
J'ai juste un problème si après validation du formulaire,
on actualise la page courante du navigateur, l'inscription se répète
même si les cases du formulaires sont vides.

J'ai surement oublié quelque chose.

Merci de votre aide

Code:
<?php
mysql_connect("xxx", "xxx", "xxx");
mysql_select_db("xxx"); 

// si on a un enregistement
// -----------------------------------------

if (!empty($_POST['prix']) AND !empty($_POST['titre']) AND !empty($_POST['region']) AND !empty($_POST['departement']) AND !empty($_POST['cp']) AND !empty($_POST['ville']) AND !empty($_POST['surface']) AND !empty($_POST['pieces']) AND !empty($_POST['detail']) AND !empty($_POST['email']) AND !empty($_POST['tel']) AND !empty($_POST['categorie']))
{

if (!empty($_POST['prix']) != NULL AND !empty($_POST['titre']) != NULL AND !empty($_POST['region']) != NULL AND !empty($_POST['departement']) != NULL AND !empty($_POST['cp']) != NULL AND !empty($_POST['ville']) != NULL AND !empty($_POST['surface']) != NULL AND !empty($_POST['pieces']) != NULL AND !empty($_POST['detail']) != NULL AND !empty($_POST['email']) != NULL AND !empty($_POST['tel']) != NULL AND !empty($_POST['categorie']))

    {
	$prix = htmlentities($_POST['prix'], ENT_QUOTES); 
	$titre = htmlentities($_POST['titre'], ENT_QUOTES); 
	$region = htmlentities($_POST['region'], ENT_QUOTES); 
	$departement = htmlentities($_POST['departement'], ENT_QUOTES); 
	$cp = htmlentities($_POST['cp'], ENT_QUOTES); 
     $ville = htmlentities($_POST['ville'], ENT_QUOTES); 
	 $surface = htmlentities($_POST['surface'], ENT_QUOTES); 
	 $pieces = htmlentities($_POST['pieces'], ENT_QUOTES); 
    $detail = htmlentities($_POST['detail'], ENT_QUOTES); 
    $detail = nl2br($detail); //  textarea, remplacer les Entrées par des <br />
	$email = htmlentities($_POST['email'], ENT_QUOTES); 
	$tel = htmlentities($_POST['tel'], ENT_QUOTES); 
	$categorie = htmlentities($_POST['categorie'], ENT_QUOTES); 
   
   
   
    // enregistrement des données du formulaire
	mysql_query("INSERT INTO annonces VALUES('','" . $prix . "', '" . $titre . "', '" . $region . "','" . $departement . "','" . $cp . "','" . $ville . "', '" . $surface . "','" . $pieces . "','". $detail . "','" . $email . "','" . $tel . "','" . $categorie . "', '" . time() . "')");
	    
}
}
[/code]
 
WRInaute accro
en fait, j'ai résolu ce problème en créant une variable de session lors de la validation du formulaire et et puis surtout je réinitialise lesvariables du formulaire.
ensuite, si cette variable est définie je ne valide plus, ça permet en plus d'éviter la revalidation lors d'un retour arrière
 
WRInaute occasionnel
Merci Leonick de votre réponse.

Si ce n'est pas trop demander, pouvez vous me donner un modèle
de code pour que je puisse adapter, peut etre en MP

car je commence juste à m'approcher du PHP et c'est au moins
aussi intéressant que difficile.

Merci beaucoup
 
WRInaute accro
Pour récupérer les variables du formulaire
$nom = (isset($_POST['nom'])?$_POST['nom']:"");
$email = (isset($_POST['email'])?$_POST['email']:"");
$commentaire = (isset($_POST['commentaire'])?$_POST['commentaire']:"");

pour envoyer
if ($nom!="" && isEmail($email) && $commentaire!="" && !isset($msg_envoye))
{ if (email(...))
{
echo "<h1>Mel bien envoyé !</h1>
<p>Nous vous remercions de nous avoir contacté</p>";
$nom="";$email="";$commentaire="";
$msg_envoye=true;
}
else
echo "<h1>Mel non envoyé !</h1>";
}

Le isEmail() étant une fonction pour vérifier que le mel est bien valide
de même, la fonction email() utilise mail() de php, mais fait des vérifs pour éviter le spam, du genre des en-têtes rajoutées dans le commentaire, ...
 
WRInaute occasionnel
Bonjour,

Je reviens vers vous pour mon soucis de revalidation de formulaire.

J'ai pris comme solution un meta refresh sur la page cible du formulaire qui redirige sur une autre page, donc plus de problème avec un rafraichissement de la page et pas de doublon dans la bdd.

Par contre avec page précédente du navigateur, on se retrouve sur le formulaire et tous les champs renseignés.

Ma question actuelle est donc de savoir si on peut ajouter dans le formulaire un code après

<input type="submit" value=">>> Validez " />

qui fasse que les champs s'initialisent, pour être obligé de tout remplir avant une nouvelle validation.

Merci beaucoup de vos réponses
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Haut