eviter les doubles...

eviter les doubles... - PHP - Programmation

Marsh Posté le 19-11-2005 à 23:54:38    

Salut tout le monde, alors j'vais vous exposez mon soucis en esperant que quelqu'un pourra m'aider  :)  
Donc j'ai une page HTML avec un formulaire qui une fois validé nous renvoie sur une page php qui doit nous afficher (et qui affiche d'ailleurs ) les infos rentrées dans le formulaire. Pour ça j'utilise une base de donnée qui m'enregistre toute les infos Jusque là tout va bien...mon problème vient quand je fais une actualisation (F5) de la page, il me demande un renvoie d'information s'qui fait que j'ai deux fois la même entrée ds ma table...normale, sauf que sa me plait pas trop, même pas du tout, dc vous avez devinez ma question...comment demander a mysql de faire une verif avt d'ajouter l'entrée pour voir si elle existe déjà ou pas ? :whistle:  
Voilà j'espère avoir été assez clair, et surtout que quelqu'un pourra m'aider  :)  
J'vous remercie d'avance !!

Reply

Marsh Posté le 19-11-2005 à 23:54:38   

Reply

Marsh Posté le 20-11-2005 à 00:10:40    

Plein de solutions !
 
Pourkoi pas l'tilisation d'une clé primaire dans ta table (te renseigner sur l'utilite d'une telle clé)
 
Tu peux egalement ameliorer la navigation en faisant une redirection dans ce genre :

Code :
  1. Formulaire --validation--> script d'insertion des données dans la table --redirection_via_php--> page de visualisation ou retour au formulaire


De cette maniere l'utilisateur ne renvoie pas les données postées en utilisant F5.

Reply

Marsh Posté le 20-11-2005 à 00:22:52    

ou avant l'insertion tu cherches dans ta base de donnees s'il ce que tu va entrer est deja present ou non.
select ce que tu veux et regardes le nombre de resultats
Mais la cle primaire est pas mal c'est encore plus rapide !

Reply

Marsh Posté le 20-11-2005 à 01:06:33    

Vu que la clé primaire est l'identifiant unique de la table, je vois pas trop pourquoi ça va l'aider... A moins que vous fassiez des bd pas très règles de base proof :D
 
Suffit de vérifier et de toutes manières faut le faire, après balancer un header pour zapper le truc ;)

Reply

Marsh Posté le 20-11-2005 à 14:36:44    

Bon alors j'ai plus ou moin résolu mon prob, en faite après validation du formulaire, l'utilisateur est redirigé sur une page qui enregistre toutes les infos ds la BDD puis qui redirige encore une fois vers la page où on doit voir les infos s'afficher grace à <META HTTP-EQUIV="refresh"  
content="1;URL=http://.....">. Donc après on a beau réactualiser la page, les infos ne sont pas renvoyées ! J'pense pas que se soit la meilleur solution mais bon au moin sa marche :)

Reply

Marsh Posté le 20-11-2005 à 16:28:13    

Y'a pas mal de façons d'attaquer le bazar.
 
Au niveau DBMS:
 
- Trigger sur l'insertion pour vérifier un doublon.
- Index composite unique.
 
Efficace mais plutôt "violent dernier ressort" et présentant pas mal d'inconvénients. Utile mais pas suffisant.
 
Le mieux est sans doute, au niveau applicatif, d'empêcher d'entrer les données en double : utilisation d'un "token" qui indique qu'on est déjà passé par telle page. Une table de transitions t'indique où tu en es, et si l'endroit tu te trouves est légitime ou si la transition est interdite.
 
Fais une recherche sur "double submit(ion)" : un pb classique.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 20-11-2005 à 18:22:35    

Envois plutot un header en php qu'un meta refresh ;) Si t'as un problème lors de l'update et que ça met plus d'une seconde tu l'as dans... :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed