Insertion des données MySQL
Résolu/Fermé
hassene_23
Messages postés
4
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
13 novembre 2009
-
13 nov. 2009 à 16:41
hassene_23 Messages postés 4 Date d'inscription vendredi 13 novembre 2009 Statut Membre Dernière intervention 13 novembre 2009 - 13 nov. 2009 à 21:58
hassene_23 Messages postés 4 Date d'inscription vendredi 13 novembre 2009 Statut Membre Dernière intervention 13 novembre 2009 - 13 nov. 2009 à 21:58
A voir également:
- Insertion des données MySQL
- Fuite données maif - Guide
- Insertion table des matières word - Guide
- Trier des données excel - Guide
- Insertion liste déroulante excel - Guide
- Touche insertion clavier - Guide
5 réponses
Bonjour
Si ton script est exécuté deux fois avec les mêmes données, c'est normal qu'il fasse deux fois la même chose :)
Pour éviter ça, tu peux vérifier si les données ne sont pas déjà enregistrées, par exemple.
Personnellement, j'utilise une autre technique. Chaque fois que j'affiche un formulaire, je crée un identifiant unique (uniqid() en php) que je mets dans un champ hidden du formulaire et dont je garde une copie dans une variable de session.
Quand je reçois le formulaire, je vérifie si la valeur du champ hidden correspond bien à celle de la variable de session. Si c'est OK, je traite le formulaire et j'efface la variable de session.
Si on réactualise la page, je reçois à nouveau la même valeur du champ hidden, mais ma variable de session n'existe plus (ou j'en ai peut-être une nouvelle si j'ai renvoyé un formulaire, ais elle est différente)
C'est un peu long à expliquer mais ça tient en quelques lignes de programme.
Si ton script est exécuté deux fois avec les mêmes données, c'est normal qu'il fasse deux fois la même chose :)
Pour éviter ça, tu peux vérifier si les données ne sont pas déjà enregistrées, par exemple.
Personnellement, j'utilise une autre technique. Chaque fois que j'affiche un formulaire, je crée un identifiant unique (uniqid() en php) que je mets dans un champ hidden du formulaire et dont je garde une copie dans une variable de session.
Quand je reçois le formulaire, je vérifie si la valeur du champ hidden correspond bien à celle de la variable de session. Si c'est OK, je traite le formulaire et j'efface la variable de session.
Si on réactualise la page, je reçois à nouveau la même valeur du champ hidden, mais ma variable de session n'existe plus (ou j'en ai peut-être une nouvelle si j'ai renvoyé un formulaire, ais elle est différente)
C'est un peu long à expliquer mais ça tient en quelques lignes de programme.
hassene_23
Messages postés
4
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
13 novembre 2009
13 nov. 2009 à 17:18
13 nov. 2009 à 17:18
Merci pour votre réponse, est ce que vous pouvez me donner un exemple de code de votre méthode?
hassene_23
Messages postés
4
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
13 novembre 2009
13 nov. 2009 à 17:37
13 nov. 2009 à 17:37
Je pense que j'ai trouvé une solution (idéale ou non???) , J'ai créer une page qui traite le formulaire avec redirection vers la page qui affiche le résultat:
<?php include ("../conn.php"); $lib=$_POST['lib']; $requet="INSERT INTO `marque` (`ID_MARQUE`,`LIB_MARQUE`) VALUES ('','$lib');"; mysql_query($requet,$connexion) or die("Ecriture impossible"); header ("location:marque.php"); ?>
L'inconvénient de ta méthode, c'est que si on utilise le bouton 'revenir en arrière' du navigateur, on retrouve l'ancien formulaire et on peut le valider à nouveau : même problème
Mon code :
(ne pas oublier le session_start(); au début pour avoir les sessions)
Mon code :
(ne pas oublier le session_start(); au début pour avoir les sessions)
// traitement du formulaire reçu // on vérifie que c'est le bon formulaire if (isset($_SESSION['uniqid']) && isset($_POST|'uniqid']) && ($_SESSION['uniqid'])==$_POST|'uniqid'])) { unset($_SESSION['uniqid']); // on détruit la variable de session pour ne pas ré-utiliser le même formulaire ... reste du traitement } // envoi du formulaire echo '<form etc... $_SESSION['uniqid']=uniqid(); echo '<input type="hidden" value="'.$_SESSION['uniqid'].'" />'; ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
hassene_23
Messages postés
4
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
13 novembre 2009
13 nov. 2009 à 21:58
13 nov. 2009 à 21:58
Merci bien je vais essayer ta méthode