Auto incrémantation

bibo -  
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

3 réponses

Yoan Messages postés 11905 Statut Modérateur 2 332
 
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.
0
bibo
 
bon j'ai déja utiliser les session dans mon site mais pour que j'utilise un variable dans plusieurs page de mon site mais pour cette fonction j'ais pas bien compris stp explique moi un peut dans mon cas j'ai une session alors mnt il faut créer une variable $_SESSION['deja_consulte'] ou exactement ??? dans n'importe quel page et c koi son role



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
0
wAxxx Messages postés 455 Statut Membre 46
 
avant d'inserer dans la base faites un petit test sur quelques champs s'il sont dupliquer alors refuse cette insersion sinon accepter la.
0
Yoan Messages postés 11905 Statut Modérateur 2 332
 
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 :
<?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.
0