loulou Posté 7 Mars 2006 Posté 7 Mars 2006 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,
bozoleclown Posté 7 Mars 2006 Posté 7 Mars 2006 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
loulou Posté 7 Mars 2006 Auteur Posté 7 Mars 2006 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...
bozoleclown Posté 7 Mars 2006 Posté 7 Mars 2006 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
loulou Posté 7 Mars 2006 Auteur Posté 7 Mars 2006 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant