glachant
Messages postés39Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention24 novembre 2010
-
30 août 2007 à 14:34
glachant
Messages postés39Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention24 novembre 2010
-
3 sept. 2007 à 12:46
Bonjour,
voilà j'ai un problème.
J'ai un formulaire que je valide pour insertion dans MYSQL, jusque là tout va bien.
quand je fais un refresh de la page juste après avoir soumis la requete, le script se reexecute une deuxième fois !
du coup, j'ai des tentatives de INSERT avec les mêmes clés d'enregistrement !!! Le résultat est assez moche !
est-ce normal ? si oui, comment l'éviter ?
pour info, mon script x.php qui soumet le formulaire est lui même rappelé pour pour executer la soumission.
merci de vorte aide.
audayls
Messages postés373Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention11 août 2008 31 août 2007 à 19:18
Ola je comprends pas là -_-"
Pour le cas 1 tu peux très bien lancée une recherche sans la clé d'enregistrement mais avec tous les champs que l'utilisateur t'a soumis.
Pour le cas 2 il suffit de supprimer la variable "$_SESSION['form_exec']" avec "unset($_SESSION['form_exec'])" sur la page du formulaire. De cette manière le verrou est posé lorsque tu postes le formulaire et il est enlevé lorsque tu affiches le formulaire.
audayls
Messages postés373Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention11 août 2008 30 août 2007 à 20:46
Salut,
@raven44 : Nan si tu fais un refresh le formulaire entier (avec le champs caché) sera également réenvoyer.
Tu as 2 solutions dans ce cas :
1 - Soit tu fais une recherche dans ta base pour vérifier que l'INSERT a déja été executée.
2 - Soit juste après la requete tu enregistres une variable une variable "$_SESSION". Celà donnera un script du genre :
<?php
session_start();
if (!isset($_SESSION['form_exec'])) {
// requete INSERT
$_SESSION['form_exec'] = TRUE;
}
?>
glachant
Messages postés39Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention24 novembre 2010 31 août 2007 à 10:09
Merci pour ces réponses ...MAIS :
le cas 1 - je l'oublie pour la raison suivante : je ne peux pas tester la clé d'enreg puisque auto incrémentée.
il reste donc la 2- : Que se passe-t-il si l'utilisateur veut créer 2 fois d'affilée.
La première ça marchera, ça pas de pb; par contre, la 2ème $_SESSION['form_exec'] = TRUE empêchera au script de créer un deuxième enregistrement !
le problème c'est que je ne peux pas me baser sur la clé de l'enreg créé puisqu'elle est auto incrémentée et que ce n'est pas l'utilisateur qui la choisit.
vraiment je bloque !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 31 août 2007 à 11:42
Hello,
soit tu fais un select pour voir si un enregistrement identique (je parle de tout sauf la clé auto-incrémentée bien sûr) existe, ou alors à chaque fois que tu génères une page de formulaire, tu mets un numéro unique dedans, et c'est lui que tu mets en session quand la page est remplie :
$_SESSION['form_exec_2684685'] = true;
là, la page de formulaire qui a reçu le numéro 2684685 ne pourra plus valider le formulaire, mais une autre page (différente) avec le numéro 121231546 pourra.