[php] Prendre dernière ligne d'une table

Bonjour,

je voudrais pouvoir crée une nouvelle commande dans la table COMMANDE, comme ceci :
$ins = mysql_query ("INSERT INTO COMMANDE ( Com_id, Prix_total_calculé, client_id ) VALUES ( NULL, '".$prix_total_calcule."', '')");

Et donc mettre NULL pour Com_id, pour que ça se crée automatiquement à la suite des autres commandes.

Et j'aimerai ensuite récupéré cette valeur pour pouvoir l'utilisé par la suite...
Mais je ne vois pas trop comment faire....!

3 réponses

  1. Salut,
    tu as une interface PhpMyAdmin ? Si oui, vérifie que la colonne Com_id a l'option auto_increment : ça veut dire qu'elle se met à jour automatiquement. En général, ce type de colonne est également not null, vérifie.
    C'est ce qu'on appelle parfois un SERIAL, c'est l'équivalent de bigint UNSIGNED not null auto_increment.

    Avec ça tu peux simplifier ta requête en retirant Com_id, le moteur de ta DB gère ça tout seul.

    Pour récupérer l'ID inséré, tu ne peux pas utiliser le résultat $ins car il renvoie seulement un booléen lors d'une requête INSERT. Par contre, la fonction mysql_insert_id() est bien pratique : https://www.php.net/manual/fr/function.mysql-insert-id.php

    Ce qui donne un code qui ressemble à ça :
    $ins = mysql_query ("INSERT INTO COMMANDE ( Prix_total_calculé, client_id ) VALUES ( '".$prix_total_calcule."', '')"); 
    $id = mysql_insert_id();


    ;)
    1. sinon tu peux faire un select MAX sur la table pour récupérer l' id que tu viens de rentrer:
      $ins = mysql_query ("select MAX(Com_id) from COMMANDE "); 
      
      1. Oui mais, sans vouloir te vexer masterchris, ça fait une requête de plus, donc ça va davantage prendre de temps au serveur. C'est moins efficace...