Auto incrémantation
bibo
-
Yoan Messages postés 11905 Statut Modérateur -
Yoan Messages postés 11905 Statut Modérateur -
Bonjour,
pour mon site en php et mysql j'ai un chmps auto incrementation lorsque je click sur m page web sur actualiser le champs dans ma base sera aussi remplir automatiquement a chaque fois que t'appe sur actualiser alors que je cherche a incrémenter le champs seulement lorsque cette page est ouvert
c parcequ'il faut fermer la connexion a la base apres la requette d'insertion et de mise a jours ou bien c'est à cause d'autre chose
merci d'avance et de m'expliquer ce probleme
pour mon site en php et mysql j'ai un chmps auto incrementation lorsque je click sur m page web sur actualiser le champs dans ma base sera aussi remplir automatiquement a chaque fois que t'appe sur actualiser alors que je cherche a incrémenter le champs seulement lorsque cette page est ouvert
c parcequ'il faut fermer la connexion a la base apres la requette d'insertion et de mise a jours ou bien c'est à cause d'autre chose
merci d'avance et de m'expliquer ce probleme
3 réponses
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.
avant d'inserer dans la base faites un petit test sur quelques champs s'il sont dupliquer alors refuse cette insersion sinon accepter la.
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.
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