abdoulayecoumba |
Bonjour
Je voudrais éviter un renvoi répétitif des données de mon formulaire (formulaire .html) dans une table. Les données sont traitées dans une page dénommée (validation. PHP) . Maintenant je vérifie d’abord au niveau de cette page si l’enregistrement envisagé via le formulaire n’existe pas déjà dans le formulaire si oui un message vous signale qu’il existe déjà dans la table et vous invite à effectuer un autre enregistrement jusque-là tout fonctionne nickel j’ai aucun problème. Le seul soucis est ,une fois les données transférées dans la table , si je rafraîchis la page validation.php un message d’avertissement s’affiche
« Pour actualiser cette page votre navigateur web doit de nouveau envoyer les informations que vous avez entrées … » , si j’appuie sur le bouton PRECEDENT de mon navigateur et que je me retrouve sur la page de mon formulaire (formulaire.html) et que j’appuie ensuite sur le bouton SUIVANT de mon navigateur ,les données du formulaire ne sont pas de nouveau enregistrées dans ma table comme je l’avais bien prévu dans mon code et le message vous signalant que cet enregistrement existe déjà dans la table s’affiche . Vous voyez ici mon code fonctionne comme je le souhaite mais le seul problème, est l’apparition du message d’avertissement si je rafraîchi la page validation.php je veux le faire disparaitre. Pour y parvenir j’ai lu un cours sur comment éviter les renvois repetitifs de navigateur sur open classeroom
Ainsi j’ai créé un bout de code sur un page dénommée eviterméssageavertissement.php que je dois inclure dans ma page validation.php mais j’ai des difficultés à savoir le bon emplacement de ce code Aidez moi ca me fatigue j’y suis depuis des jours mais ca ne marche pas.
Voici mon code
formulaire.html
Code :
- <html >
- <body>
- <form action='validation_unique.php' method='POST'>
- Prénom :
- <input type="text" name="prenom"/><br/>
- Adresse de messagerie :
- <input type="text" name="email"/><br/>
- Âge :
- <input type="INT" name="age"/><br/>
- <input type="submit" value="Envoyer"/>
- </form>
- </body>
- </html>
|
validation.php
Code :
- <body>
- <?php
- //Valider toutes les données du formulaire
- $options = array(
- //Enlever les balises.
- 'prenom' => FILTER_SANITIZE_STRING,
- //Valider l'adresse de messagerie.
- 'email' => FILTER_VALIDATE_EMAIL,
- 'age' => array(
- 'filter' => FILTER_VALIDATE_INT, //Valider l'entier.
- 'options' => array(
- 'min_range' => 0 //Minimum 0.
- )
- )
- );
-
- $resultat = filter_input_array(INPUT_POST, $options);
- if($resultat != null)
-
- { //Si le formulaire a bien été posté.
- //Enregistrer des messages d'erreur perso.
-
- $messageErreur = array(
- 'email' => 'L\'adresse de messagerie n\'est pas valide.',
- 'age' => 'Veuillez entrer un nombre entier positif pour votre âge.'
- );
- $nbrErreurs = 0;
-
- foreach($options as $cle => $valeur)
- { //Parcourir tous les champs voulus.
- if(empty($_POST[$cle]))
- { //Si le champ est vide.
- echo 'Veuillez remplir le champ ' . $cle . '.<br/>';
- $nbrErreurs++;
- }
- elseif($resultat[$cle] === false)
- { //S'il n'est pas valide.
- echo $messageErreur[$cle] . '<br/>';
- $nbrErreurs++;
- }
- }
-
- // Si les données saisies dans le formulaire respectent les formes exigées alors...
- if($nbrErreurs == 0)
- {
- if ( isset( $_POST['prenom'] ))
- {
-
- $rechpren = $_POST['prenom'];
- $rechadresse = $_POST['email'];
- $rechage = $_POST['age'];
- // On verrifie d'abord l'eventuelle existence de l'enregistrement dans la table
-
- try
- {
- $bdd = new PDO('mysql:host=localhost;dbname=comptes','root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
- }
- catch(Exception $e)
- {
- die('Erreur : '.$e->getMessage());
- }
- // On récupère d'abord l'engistrement liee a la fiche du client dans la table ''clients''
- $req = $bdd->prepare('SELECT prenom,email,age FROM clients WHERE prenom= :prenom AND email=:email AND age =:age');
- $req-> execute(array(
- 'prenom'=> $rechpren ,
- 'email'=> $rechadresse ,
- 'age'=> $rechage,
-
- ));
- $count = $req->rowCount();
- //On affiche chaque entrée une à une
- while ($donnees = $req->fetch())
- if($count> 0)
-
- // Si le client existe dans la table on affichera
- {
- { echo "Cet enregistrement existe déjà dans la base de données<br> <br/>";
- echo $donnees['prenom'].'.......'.$donnees['email'].'................'.$donnees['age'].'<br><br/>';
- exit;
- }
- }
- $req->closeCursor(); // Termine le traitement de la requête
- }
- else
- // L'enregistrement n'existe pas dans la table on l'effectue
- try
- {
- $bdd = new PDO('mysql:host=localhost;dbname=comptes','root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
- }
- catch(Exception $e)
- {
- die('Erreur : '.$e->getMessage());
- }
-
- {
- $req = $bdd->prepare('INSERT INTO clients (prenom, email,age) VALUES(:prenom, :email,:age)');
- $req->execute(array(
- 'prenom' =>$rechpren ,
- 'email' => $rechadresse,
- 'age' =>$rechage
- ));
-
- {
- echo 'Client enregistre';
- }
-
- $req->closeCursor();
- }
- }
- }
- else
- {
- echo 'effectuez un nouveau enregistrement .';
- }
- ?>
- </body>
|
messageavertissement.php
Code :
- <?php
- session_start();
- if(!empty($_POST) OR !empty($_FILES))
- {
- $_SESSION['sauvegarde'] = $_POST ;
- $_SESSION['sauvegardeFILES'] = $_FILES ;
-
- $fichierActuel = $_SERVER['PHP_SELF'] ;
- if(!empty($_SERVER['QUERY_STRING']))
- {
- $fichierActuel .= '?' . $_SERVER['QUERY_STRING'] ;
- }
-
- header('Location: ' . $fichierActuel);
- exit;
- }
- if(isset($_SESSION['sauvegarde']))
- {
- $_POST = $_SESSION['sauvegarde'] ;
- $_FILES = $_SESSION['sauvegardeFILES'] ;
-
- unset($_SESSION['sauvegarde'], $_SESSION['sauvegardeFILES']);
- }
- ?>
|
|