Aller au contenu

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


Sujets conseillés

Posté

Bonjour,

Je cherche à récupérer l'id le plus grand de ma table, car celui-ci me servira pour calculer un autre id.

La requête suivante fonctionne très bien, $id est bien mon id le plus grand.

Le problème, c'est quand ma table est vide, car $id est vide, alors pour calculer $newId ($id+1), je ne sais pas comment faire.

Ce qui est étrange, c'est que ce newId est utilisé pour faire des enregistrements dans une autre table, et sytématiquement, dans ce cas là, $newId prend la valeur 0.

Si ma table (ou je récupère mon id n'est pas vide, alors, la récupération de cet id et la création du newId suivant, fonctionne normalenemt.

Exemple, $id=1, $newId=$id+1, soit $newId=2.

Le problème est bien lié au premier enregistrement de ma table.

//je récupère le dernier id de pack de la table pack
  $reqPackId="SELECT pack_id FROM `pack` WHERE pack_id = (SELECT MAX( pack_id )FROM pack )";
  $resPackId=mysql_query($reqPackId);
   while ($row = mysql_fetch_array($resPackId)) {
  $id=$row[0];
  if (($id="")||($id=0)){$id=0;}
  $newId=$id+1;
  }

Si quelqu'un a une idée ?

Merci par avance,

Posté

tu as pensé à l'auto_increment dans mysql

Ca permet d'incrémenter tes Primary Key automatiquement

J'espere ne pas repondre à coté de la plaque

mais je pense que ce serait la solution la plus simple

et lorsque tu fais un enregistrement dans une table mysql en php

tu peux récupèrer la primary key de la derniere ligne "inserté" avec : mysql_insert_id -- Retourne l'identifiant généré par la dernière requête INSERT MySQ

http://fr.php.net/manual/fr/function.mysql-insert-id.php

Posté

Merci bozoleclown,

J'ai vu cette possiblilité, mais je ne peux pas m'en servir.

Je m'explique :

Je dois créer des requêtes d'insert pour des produits, qui comprènent l'ID de la catégorie à laquelle appartienne ces produits.

Le truc, c'est que la catégorie des produit est créée en même temps que le s produits sont créés.

L'id des catégories est en auto incrémént.

Donc pour la première création de produit, je cherche dans ma table des catégories, le plus grand ID.

Si la table est vide, mon plus grand ID "ne vaut rien".

Dans mon code, j'essaie de lui dire, si ID ne vaut rien, alors, qu'il prenne la valeur 0. Comme ca, je peux crée mon newId, qui est l'ID de ma nouvelle catégorie et qui ID+1. J'insère mes produits avec cette ID de catégorie (qui est 1),puis ma requête de création de catégorie est executée, est comme c'est la première catégorie de la table qui est en auto incrément, l'ID de ma catégorie vaut 1.

Le hic, c'est que je n'arrive pas à attribuer la valeur 0 à $id quand il n'y a pas de max id récupéré,

euh...je ne sais pas si c'est clair...

Posté
J'insère mes produits avec cette ID de catégorie (qui est 1),puis ma requête de création de catégorie est executée,

Pourquoi tu ne crées pas la catégorie avant les produits

Comme ca

1) tu créés ta catégorie

2) tu executes mysql_insert_id

ainsi tu récupères l'id de ta catégorie

3) tu créé les produits

Posté

Tu as tout a fait raison,

J'ai changé l'ordre de mes requêtes, ainsi que tu me le suggerais et c'est bien plus logique.

Donc maintenant, j'utilise la fonction mysql_insert_id, comme tu le préconisais dans ta première réponse et tout marche.

Alors merci beaucoup pour ton aide. ;)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...