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

Poulap -  
Groarh Messages postés 682 Date d'inscription   Statut Membre Dernière intervention   -
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....!
A voir également:

3 réponses

Groarh Messages postés 682 Date d'inscription   Statut Membre Dernière intervention   185
 
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();


;)
0
masterchris Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   5
 
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 "); 
0
Groarh Messages postés 682 Date d'inscription   Statut Membre Dernière intervention   185
 
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...
0