par
zeus » 20 août 2007, 09:25
Alors, plusieurs remarques ...
1/ Ta requête ne me semble pas super optimisée. J'aurais fait un
2/ Si je part du fait que tu utilises MySQL (il y a des recommandations lors de la création d'un nouveau post, c'est pas pour faire joli

), il existe la fonction mysql_insert_id() qui permet de récupérer l'identifiant d'une ligne qui vient d'être inséré.
3/ Sinon, dans ta manière de faire (récupérer le plus grand et l'incrémenter), je voulais te montrer une faille :
- Tu as 10 enregistrements dans ta table, la valeur courante de l'auto_increment est 10
- Tu ajoutes un enregistrement, l'id_produit est 11, la valeur courante de l'auto_increment est donc 11
- Tu supprimes ce dernier enregistrement, le plus grand id_produit est donc 10 mais la valeur courante de l'auto_increment reste 11
- Tu ajoutes un nouvel enregistrement, son id_produit est 12 mais ta requête t'as retourné 11
Même si, dans l'immédiat, tu ne comptes pas supprimer d'enregistrements dans cette table, il me semble que c'est un soucis assez grave (risque de rupture de l'intégrité de ta base de données) pour le prendre en compte tout de suite.
MySQL te propose une gestion automatique des auto_increment, profite-en plutôt que de vouloir réinventer la roue

Alors, plusieurs remarques ...
1/ Ta requête ne me semble pas super optimisée. J'aurais fait un
[code]SELECT MAX(id_produit) FROM produit[/code]
2/ Si je part du fait que tu utilises MySQL (il y a des recommandations lors de la création d'un nouveau post, c'est pas pour faire joli :evil:), il existe la fonction mysql_insert_id() qui permet de récupérer l'identifiant d'une ligne qui vient d'être inséré.
3/ Sinon, dans ta manière de faire (récupérer le plus grand et l'incrémenter), je voulais te montrer une faille :
[list][*]Tu as 10 enregistrements dans ta table, la valeur courante de l'auto_increment est 10
[*]Tu ajoutes un enregistrement, l'id_produit est 11, la valeur courante de l'auto_increment est donc 11
[*]Tu supprimes ce dernier enregistrement, le plus grand id_produit est donc 10 mais la valeur courante de l'auto_increment reste 11
[*]Tu ajoutes un nouvel enregistrement, son id_produit est 12 mais ta requête t'as retourné 11[/list]
Même si, dans l'immédiat, tu ne comptes pas supprimer d'enregistrements dans cette table, il me semble que c'est un soucis assez grave (risque de rupture de l'intégrité de ta base de données) pour le prendre en compte tout de suite.
MySQL te propose une gestion automatique des auto_increment, profite-en plutôt que de vouloir réinventer la roue ;)