Formulaire, problème insertion de données - PHP - Programmation
Marsh Posté le 11-04-2005 à 13:12:07
up.
ça m'interesse dans le cadre de developpement de mon formulaire d'inscription aussi. surtout savoir comment je peux éviter les doublons.
ça peut se faire avec un mysql_num_rows() ?
Marsh Posté le 11-04-2005 à 13:23:32
pmusa a écrit : up. |
euh je vois pas le rapport avec un mysql_num_rows ...
ton INSERT est tout simplement dans page2, donc à chaque rafraichissement il se refait .. Logique..
Pour eviter ça tu as cas faire une page entre les 2 qui fait l'insert, et renvoi sur ta page2 ...
Mais doit y avoir beaucoup plus propre ...
Marsh Posté le 11-04-2005 à 13:31:18
Code :
|
après à lui de l'adapter.
chai pas, moi je fais comme ça, si qqn à plus elegant après... je prends.
Marsh Posté le 11-04-2005 à 13:44:51
GaSPaRD77 a écrit : euh je vois pas le rapport avec un mysql_num_rows ... |
effectivement, très bonne astuce,mais lorsque tu as plusieurs page de formulaire, c'est pas gérable.
ceci-dit, je suis sûr qu'il est possible de vider la variable HTTP_POST_VARS une fois que l'on se trouve dans la page2, car c'est bien cette variable qui contient toutes les valeurs du formulaire , non ??
sinon, j'ai essayé un autre moyen, c'est d'initialiser une variable de session, et de faire un contrôle dessus. Ainsi, s'il est déjà initialisée, on ne répéte pas la requête. Mais ceci n'est pas correct non plus .
Marsh Posté le 11-04-2005 à 14:25:13
J'ai aussi pensé à la variable de session, en quoi ce n'est pas correct ?
Marsh Posté le 11-04-2005 à 14:51:08
GaSPaRD77 a écrit : J'ai aussi pensé à la variable de session, en quoi ce n'est pas correct ? |
dans le cadre de mon formulaire, ce n'est pas une méthode propre, car je peux être amené à faire appel à la page1 tout en étant sous la même session. Et là, j'aurais besoin d'insérer de nouvelle données avec la même session. Evidemment, il y a un autre id qui me permet de distinguer les données à insérer pour l'une ou l'autre session.
bon si c flou désolé pour l'explication...
Marsh Posté le 12-04-2005 à 10:07:01
Et alors ? Avec les variables de session tu peux naviguer partout dans ton site avec...
Marsh Posté le 02-05-2005 à 09:13:57
Je n'ai pas testé, mais sinon vous pouvez surement ruser, en testant dans la seconde page que les champs ne sont pas vide, si ils ne le sont pas vous faites l'insertion puis vous réinitialisez les variables.
un truc de ce genre là :
Code :
|
Mais bon, c'est assez bizzare quand meme je ne fais pas ca dans mes scripts (je ne réinitialise pas mes variables) et il me me les insere pas en double pour autant à chaque refresh ou alors j'ai pas compris votre probleme...
Sinon effectivement, le mieux reste surement de passer par un script qui gère l'insertion et renvoie sur la seconde page.
Marsh Posté le 02-05-2005 à 13:34:52
Le plus simple et d'utiliser une page intermediaire.
En gros :
page1 -> page1b -> page2
Dans la page1 il y a le formulaire. Une fois le formulaire envoye, on arrive dans la page1b qui est chargee de faire le traitement des donnes envoyees par le formulaire, ainsi que l'insertion.
Ensuite cette page renvoie sur la page2.
Comme ca, si l'utilisateur fait un refresh sur la page2, il n'y auras pas de nouvelle insertion dans la base.
Marsh Posté le 02-05-2005 à 13:37:08
C'est bien ce que je dis, avec un header au pire qui renvoie sur page1
Marsh Posté le 11-04-2005 à 12:07:37
salut,
J'ai deux pages php, "page1" et "page2".
Sous "page1", il existe un formulaire html. A la validation du formulaire, les données s'insèrent dans une BD MySQL et je passe automatique sur la page 2.
La méthode utilisée pour récupérer les variables du formulaire est POST.
J'ai remarqué que dès lors je rafraîchis la page2 , ces mêmes données sont insérées une seconde foi et ainsi de suite.
J'ai fait exprès de ne pas mettre une clé unique dans la base pour éviter les doublons.
Alors, y a-t-il un moyen simple pour ne pas insérer plusieurs fois les mêmes données si l'utilisateur est amené à rafraîchir la page.
merci