Problème avec actualisation d'un formulaire d'enregistrement

Résolu
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38480 Date d'inscription   Statut Modérateur Dernière intervention   - 27 juil. 2020 à 11:20
Bonjour, j'ai un souci avec le formulaire d'enregistrement que j'ai conçu, en fait la requête d'insertion s'exécute bien, mais j'ai juste rémarqué une petite anomalie, j'ai remarqué lorsque j'insère une donnée, celle-ci bien que inséré dans la base de donnée, celle-ci reste bloqué quelque part, lorsque j'actualise la page, la requête précédemment inséré à la BD s'exécute une fois de plus, et du coup j'ai deux fois les mêmes données dans la BD``

voici mon code d'insertion :


 try {
  
   $sql = 'INSERT INTO agent(notemat, typenote,idmat,idagent, nbre, mois, an) VALUES(:notemat, :typenote,  :idmat, :idagent, :nbre, :mois, :an)';
    $datas = array(':notemat' => $notemat, ':typenote' => $typenote,':idmat' => $idmat, ':idagent' => $idagent ,  ':nbre' => $nbre ,':mois' => $mois , ':an' => $annee );
	  
    try {
      $req = $bdd->prepare ( $sql );
      if ( $req->execute ( $datas ) ) {
       
      } else {
        echo "<br> Erreur lors de l'enregistrement... <br>";
        print_r ( $datas );
        exit;
      }
    } catch ( Exception $e ) {
      // en cas d'erreur :
      echo "<br> Erreur lors de l'enregistrement en BDD ! " . $e->getMessage ();
      print_r ( $datas );
      exit;
    }
  } catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }
	


Comment puis-je faire pour arrêter cela?
A voir également:

1 réponse

jordane45 Messages postés 38480 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
Bonjour,

j'ai du relire plusieurs fois ta question avant de comprendre de quoi il s'agissait...
Donc,
Tu valides ton formulaire... ta requête insert se fait.
Ensuite tu refresh ta page (via F5 par exemple...) et là... la requête se fait encore...
normal... puisque lorsque tu refresh, ça rejoue la dernière "requete html" envoyée.. à savoir le submit de ton formulaire.

Plusieurs façons de faire..
Soit tu utilises les variables de session
- Tu génère un id aléatoire unique (un token) dans ton formulaire ( dans un input hidden ) => Chaque fois que tu affiches ton formulaire, il faut un id aléatoire différent !
- Tu stockes cet id dans une variable de session
- Au moment de traiter le "submit" de ton formulaire , tu compares la valeurs stockées en session avec celle emises par l'input hidden. Si identique, tu traites la requête... sinon.. ben tu ne la joue pas.
- Une fois ta requête faite, tu supprime la variable en session.


Autre solution... tu joues simplement avec les redirections
Une fois la requête sql traitée... tu fais une redirection vers ta page
header("location: tapage.php");


0
jordane45 Messages postés 38480 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
NB: Cette question n'a rien à voir avec le SQL ... c'est purement un "souci" au niveau de ton code PHP.
Je déplace donc ta question dans le bon forum ( ENCORE... ??!! )

A l'avenir, merci de placer tes questions dans le BON FORUM en fonction du souci concerné !
Tout n'est pas SQL !!!
0
modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention   2 > jordane45 Messages postés 38480 Date d'inscription   Statut Modérateur Dernière intervention  
 
Merci, problème résolu
0
jordane45 Messages postés 38480 Date d'inscription   Statut Modérateur Dernière intervention   4 746 > modemo2018 Messages postés 226 Date d'inscription   Statut Membre Dernière intervention  
 
Dans ce cas, marque le sujet en RESOLU
0