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
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 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
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
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 421 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 29 septembre 2015 46
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.
0
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
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