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 l'id d'un insert qu'on vient de faire


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de lisa.a
    Inscrit en
    Mai 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 95
    Points : 49
    Points
    49
    Par défaut récupérer l'id d'un insert qu'on vient de faire
    Bonjour
    voilà la structure de ma base

    une table achat : avec un champ id_achat, un datetime et d'autres infos
    une table item : avec un id_item, nom_item
    un table achat_item : un champ id, un champ id_achat,un champ quantite_item, un champ id_item

    L'idée c'est que je récupère par un formulaire des infos genre

    23janvier :
    3 jeans
    2 pulls

    je veux faire un insert dans la table achat pour cette date, et récupérer l'id_achat qui correspond pour dans la foulée faire

    insert dans achat_itel (id_achat que je viens de récup, 3, id_item du jeans)

    Je sais pas si je suis très claire ...
    Mais bon mon soucis c'est que je ne sais pas comment récupérer la valeur d'un id_achat que je viens de rentrer (sachant qu'il est en autoincrement)

    Est-ce que c'est possible ?
    ou alors il faut que je gère ça avec une variable globale et que je l'insère moi même et pas en auto increment ?

    j'espère que je suis compréhensible

    merci d'avance pour vos conseils !
    ++
    Lisa

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    En mysql, il y mysql_last_insert_id()

  3. #3
    Membre du Club Avatar de lisa.a
    Inscrit en
    Mai 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 95
    Points : 49
    Points
    49
    Par défaut
    excellent ! genial !
    je précise rien ? ni la table ni le nom du champ (qui est pas id mais id_achat)
    ou alors je renomme id_achat en id tout court ?

    c'est possible que qq1 d'autre ait fait un insert en même temps et que je récupère le mauvais ?

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    http://fr2.php.net/mysql_insert_id

    Pas vérifié mais cette fonction faite par un internaute semble pleine de bon sens :

    Citation Envoyé par Dane, dans les discussions du manuel PHP

    I may have solved the problems that a number of you have brought to everyone's attention. Here is a simple function that will always return the correct ID of the afffecting row (i.e., the row that will soon be inserted into)--no matter how many consecutive users are online and updating/inserting into the same table that you are also inserting/updating.

    Retrieving the ID of the row soon-to-be-affected was imperative to my current project, and the various COUNT() solutions just did not cut it.

    Use this before any insert/update statement to retrieve the ID of the row to be inserted into:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    function get_current_insert_id($table)
    {
        $q = "SELECT LAST_INSERT_ID() FROM $table";
        return mysql_num_rows(mysql_query($q)) + 1;
    }
    ?>
    It would be great to read any discussions if anyone considers this function problematic.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    A noter quand meme que mysql_insert_id() ne retourne que le dernier id de la connexion en cours, il n'y a pas de mix-max avec ce que font les autres utilisateurs.

  6. #6
    Membre du Club Avatar de lisa.a
    Inscrit en
    Mai 2004
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 95
    Points : 49
    Points
    49
    Par défaut
    ok
    merci bcp
    ++

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

Discussions similaires

  1. MySQL-ODBC - Récupérer l'id après un Insert()
    Par kurkaine dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/11/2007, 05h47
  2. Récupérer auto-id de l'INSERT qu'on vient de faire
    Par cortex024 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 30/04/2007, 22h34
  3. Réponses: 5
    Dernier message: 11/01/2007, 15h10
  4. [VB NET]: Récupérer l'ID après une insertion
    Par ADONET dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/04/2006, 10h26
  5. Réponses: 8
    Dernier message: 25/01/2006, 12h06

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