IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Garder "la main" sur un enregistrement après un INSERT [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut Garder "la main" sur un enregistrement après un INSERT
    Bonjour,

    Voici mon problème :

    Lors de l'enregistrement d'un individu dans une table, j'aimerais récupérer l'id auto_increment qui lui est affecté... mysql_insert_id me donne effectivement l'id du dernier enregistrement... J'ai besoin de l'id pour remplir, à posteriori, un champ "identifiant concaténé" du même enregistrement.
    Or, il se peut qu'un autre utilisateur entre un nouvel enregistrement entre l'INSERT de l'enregistrement précédant et l'exécution de mysql_insert_id. L'identifiant concaténé de l'enregistrement précédent aura un numéro correspondant à l'enregistrement suivant, ce qui peut générer des pbs de cohérence...

    Existerait-il une autre méthode, qui me permettrait d'être certain de récupérer l'id de l'enregistrement "en cours", et non celui d'un enregistrement qui aurait pu se faire entre temps ? Est-ce possible de garder la connexion à l'enregistrement fraîchement inséré ?

    Merci d'avance
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

  2. #2
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    Peut-être peux-tu, avant de valider l'insertion dans la base, récupérer la valeur de MAX(id)+1, comme ça tu auras la valeur de ton futur enregistrement.

    Mais bon tu n'es pas à l'abris d'avoir 2 personnes qui ajoutent simultanéement 1 enregistrement, ce qui te fausserait ton résultat.

    Sinon pour être encore plus sûr, récupère la valeur de ton nouvel id (après enregistrement donc) grâce à une requête dans laquelle ta clause WHERE comporterait les données que tu viens d'insérer.

    Sinon, je pense que tu pourrais plus proprement résoudre ton problème grâce à MySql5 et sa capacité à gérer les commandes COMMIT (valider la requête) et ROLLBACK (annuler la requête).

    Bon courage.

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Merci.

    C'est bon à savoir que MySQL5 gère la fonction COMMIT, ça va effectivement simplifier ce problème !

    Je vois que prépare un site pour voyageurs autour du monde, ça m'intéresse grandement ! J'ai passé 4 mois et demi en Nouvelle Zélande l'année dernière, et j'attends des idées pour une prochaine destination ...
    Si tu peux m'envoyer un lien par MP dès qu'une version est en ligne, ça m'intéresse !
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

  4. #4
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    Ok mais rien n'est fait encore.

    tu peux jeter un coup d'oeil sur celui la qui a reçu des prix :
    http://www.tourdumonde.be

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] rester sur page courante apres une insertion..
    Par xavioche77 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/06/2010, 22h37
  2. [AC-2003] Reposition sur un enregistrement après annulation ?
    Par electrosat03 dans le forum VBA Access
    Réponses: 1
    Dernier message: 28/06/2009, 00h11
  3. focus sur 1er enregistrement après requête MAJ
    Par NATOU2 dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/09/2008, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo