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 :

Récupérer le dernier ID ajouté d'une table


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Par défaut Récupérer le dernier ID ajouté d'une table
    Hi all,

    Je cherche à récupérer le dernier ajout d'une table, j'ai trouvé plusieurs solution mais la plus simple serait la fonction last_insert_id() de mysql en faisant ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "Select last_insert_id() ";
    Seulement cette fonction prend le dernier ajout dans toutes les tables, hors je ne voudrais que le dernier ajout d'une table spécifique.

    Comment faire ?

    Il a été conseillé par divers site d'utilisé last_insert_id(), plutot que mysql_insert_id().

    Merci pour vos réponses !!

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Par défaut
    Il suffit de faire une requete du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT  * FROM latable WHERE id = ( 
    SELECT MAX( id )  AS idMax FROM latable );

  3. #3
    Membre éprouvé Avatar de Shinji62
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 135
    Par défaut
    Tu peux utiliser cette derniere methode a condition que tu ne supprimes pas le dernier enregistrements.

    Sinon, a moins que tu fasses 15 insert en même temps, tu peux coller ton select @@identity juste apres ton insert ca tu es pratiquement sur d'avoir celui de la table de l'insert juste avant.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Extrait du manuel mysql :
    Retourne le dernier identifiant automatiquement généré par une colonne AUTO_INCREMENT
    http://dev.mysql.com/doc/refman/5.0/...functions.html

  5. #5
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Il y a une fonction mysql prévu pour ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mysql_query("INSERT INTO `table` ... ");
    $newid = mysql_insert_id();

    mysql_insert_id() retourne le dernier identifiant généré par un champ de type AUTO_INCREMENT, sur la connexion MySQL courante ou sûr la connexion spécifiée par link_identifier.

  6. #6
    Membre éclairé Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Par défaut
    Citation Envoyé par jeca
    Oui je sais , C'est pour cela que je me tourne vers vous

    En fait c'est dans un formulaire d'ajout, juste après la requête d'ajout, j'ai besoin de récupérer le dernier ID pour donner ce numéro en tant que nom de répertoire ou je vais ensuite stocker des images.

    Le truc est que Last_insert_id() prend tout les auto-increment et je ne veux pas risquer un conflit dans ce sens

    Seb oui je connais j'en ai parlé dans le tt premier post

    Je vais essayé toutes les méthodes possibles, mais je ne veux pas altérer la table s'il y a plusieurs auto-increment dans la mm table

  7. #7
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Citation Envoyé par doc
    Le dernier ID généré est conservé par le serveur pour chaque connexion. Un autre client ne la modifiera donc pas, même s'ils génèrent une autre valeur AUTO_INCREMENT de leur coté. Ce comportement permet de s'assurer que les actions des autres clients ne perturbe pas les actions du client en cours.
    donc logiquement, si qqn insère en meme temps que toi, le last_insert_id retournera l'id du dernier identifiant que TU as inséré.
    par contre il se peut que je comprenne mal leur phrase!

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    LAST_INSERT_ID() est lié à UNE table pour UNE connexion.
    Si une autre connexion est en cours sur la même table au même moment, cet autre utilisateur récupérera une autre valeur.

  9. #9
    Membre éclairé Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Par défaut
    Citation Envoyé par jeca
    LAST_INSERT_ID() est lié à UNE table pour UNE connexion.
    Si une autre connexion est en cours sur la même table au même moment, cet autre utilisateur récupérera une autre valeur.

    Ok mais comment cette fonction peut-elle être lié à une table si on lui indique pas laquelle ?

  10. #10
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Cette fonction retourne le dernier identifiant automatique attribué lors de la connexion en cours. S'il n'y a pas eu d'INSERT, elle ne fonctionne pas. Elle n'est pas liée à une table.

    Son utilisation typique est immédiatement après une requête INSERT réalisée avec succès, elle n'a pas d'intérêt dans les autres situations :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql = "INSERT INTO membre (nickname, website) VALUES ('Yogui', 'g-rossolini.developpez.com')";
    mysql_query($sql) or die(mysql_error().'<br/>'.$sql);
    $id_membre = mysql_insert_id();
    echo "Le nouveau membre a l'ID : $id_membre";

  11. #11
    Membre éclairé Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Par défaut
    Déjà merci à tous pour vos réponses,

    J'ai testé les deux solutions, je pense avoir un problème dans ma requête, donc je vais d'abord résoudre ce problème et revenir vers vous

Discussions similaires

  1. Récupérer le dernier enregistrement inséré dans une table
    Par pierre24 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/10/2008, 11h45
  2. Erreur lors de l'ajout d'une table
    Par FredMines dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/07/2005, 13h13
  3. récupérer le nom des champs d'une table d'une BDD-page web
    Par mathieu_r dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 09/06/2005, 14h02
  4. big ajout dans une table
    Par bachilbouzouk dans le forum ASP
    Réponses: 4
    Dernier message: 19/04/2005, 10h22
  5. Récupérer la liste D champs d'une table
    Par DBBB dans le forum Bases de données
    Réponses: 6
    Dernier message: 09/06/2004, 09h14

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