Auto incrémantation
Fermé
bibo
-
3 avril 2009 à 17:11
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 - 4 avril 2009 à 00:28
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 - 4 avril 2009 à 00:28
3 réponses
Yoan
Messages postés
11795
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
10 décembre 2023
2 330
3 avril 2009 à 17:20
3 avril 2009 à 17:20
ben non, c'est à cause que ton code il est exécuté également quand tu recharges la page.
Ce que tu peux faire c'est utiliser les sessions :
1- Ouvre une session
2- Vérifie que la variable $_SESSION['deja_consulte'] n'existe pas.
Si elle n'existe pas, créé-la, ouvre ta base et met-la à jour.
Si elle existe, ne fais rien à part charger la page.
Ce que tu peux faire c'est utiliser les sessions :
1- Ouvre une session
2- Vérifie que la variable $_SESSION['deja_consulte'] n'existe pas.
Si elle n'existe pas, créé-la, ouvre ta base et met-la à jour.
Si elle existe, ne fais rien à part charger la page.
wAxxx
Messages postés
421
Date d'inscription
mardi 24 juin 2008
Statut
Membre
Dernière intervention
29 septembre 2015
46
3 avril 2009 à 23:51
3 avril 2009 à 23:51
avant d'inserer dans la base faites un petit test sur quelques champs s'il sont dupliquer alors refuse cette insersion sinon accepter la.
Yoan
Messages postés
11795
Date d'inscription
mardi 1 février 2005
Statut
Modérateur
Dernière intervention
10 décembre 2023
2 330
4 avril 2009 à 00:28
4 avril 2009 à 00:28
Ha oui, je vois. J'avais pas compris comme ça. Il te faut un anti-doublon en fait.
Il y a plusieurs possibilités en fonction de ton application.
Tu peux effectivement faire une sélection avant chaque insertion puis vérifier avec mysql_num_rows() que la sélection ne renvoie rien.
Mais il est possible que tu aies besoin de stocker plusieurs n-uplet "identiques" (hormis l'ID, quoi), dans ce cas utilise une session comme je t'ai dit plus haut. La session il faut l'ouvrir dans le script qui va se charger d'insérer le n-uplet dans la base. Tu le fais en tout début de ton script, par exemple :
Il y a plusieurs possibilités en fonction de ton application.
Tu peux effectivement faire une sélection avant chaque insertion puis vérifier avec mysql_num_rows() que la sélection ne renvoie rien.
Mais il est possible que tu aies besoin de stocker plusieurs n-uplet "identiques" (hormis l'ID, quoi), dans ce cas utilise une session comme je t'ai dit plus haut. La session il faut l'ouvrir dans le script qui va se charger d'insérer le n-uplet dans la base. Tu le fais en tout début de ton script, par exemple :
<?php @session_start; if(isset($_SESSION['enregistre'])) { // Si cette session a déjà enregistré récemment un n-uplet, alors on ne modifie rien et on quitte exit('L\'enregistrement a déjà été effectué !'); } else { // Si cette session n'a pas enregistré récemment de n-uplet alors on le fait et on indique qu'on vient de le faire en donnant une valeur à la variable de session. // insertion du n-uplet dans la base ... $_SESSION['enregistre']=1; }Sachant que l'utilisation des sessions n'est pas sûre. La session peut avoir expirée lorsque l'utilisateur recharge la page ou ce dernier peut avoir volontairement vidé ses cookies, etc.
3 avril 2009 à 20:36
je veut dire encore mon probleme et d'enregistrer des donné dans ma base de donné avec un champs auto incrément mais apres l'enregistrement et sur le mm page web lorsque je fait actualiser je trouve que les donnés s'enregistrer encore donc apres 5 fois actualiser je trouve les mm donnes 5 fois dans ma table