Connaitre l'ID autoincrement AVANT l'enregistrement ?

Eléphant du PHP | 428 Messages

09 avr. 2010, 14:24

Bonjour,

Je désirerai savoir si il est possible de connaitre l'ID d'une table (qui est autoincrémentée) avant d'effectuer un insert into dans la table ?
Existe t'il une solution PHP qui permettent de connaître cette ID ?

Merci,
raph

ViPHP
ViPHP | 5462 Messages

09 avr. 2010, 14:25

non

Eléphant du PHP | 428 Messages

09 avr. 2010, 14:32

:cry:

Eléphant du PHP | 422 Messages

09 avr. 2010, 14:42

mais il y a mysql insert last id (ou du genre) qui te retourne le dernier enregistré !

apres tu peut faire une requete du genre max (id) order by id ... mais bon
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

ViPHP
ViPHP | 5462 Messages

09 avr. 2010, 15:00

mais il y a mysql insert last id (ou du genre) qui te retourne le dernier enregistré !

apres tu peut faire une requete du genre max (id) order by id ... mais bon
ouai mais c'est uniquement après le statement

ViPHP
ViPHP | 2287 Messages

09 avr. 2010, 15:21

Bonjour,

Je désirerai savoir si il est possible de connaitre l'ID d'une table (qui est autoincrémentée) avant d'effectuer un insert into dans la table ?
Existe t'il une solution PHP qui permettent de connaître cette ID ?
La vraie question c'est pourquoi as-tu besoin de savoir cela ?

Car en imaginant que ce soit possible (ce qui n'est pas le cas), rien ne te garantirait qu'il ne se soit pas passé une insertion (sur une connexion concurrente) entre le moment où tu demandes le prochain id et le moment ou tu réalises finalement l'insert. Ce qui rendrait l'information inutile car intrinsèquement non fiable.

Selon ta réponse on va peut-être pouvoir t'orienter sur une autre technique, ou alors te réexpliquer les fondamentaux sur l'usage d'un id autoincrémenté ;)
Modifié en dernier par Calimero le 09 avr. 2010, 15:24, modifié 1 fois.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

ViPHP
ViPHP | 5462 Messages

09 avr. 2010, 15:23

si c'est possible suffis de faire une requete mysql, ce qui est pas possible c'est de la faire direct avec une fonction php native

ViPHP
AB
ViPHP | 5818 Messages

09 avr. 2010, 17:31

Bonjour,

Je désirerai savoir si il est possible de connaitre l'ID d'une table (qui est autoincrémentée) avant d'effectuer un insert into dans la table ?
Existe t'il une solution PHP qui permettent de connaître cette ID ?

Merci,
raph
Comme déjà dit la procédure standard est de ne pas renseigner le champ id qui va s'incrémenter tout seul avec la requête d'insertion et ensuite on peut le récupérer juste après avec mysql_insert_id().
Et comme l'a déjà dit aussi Calimero si cela ne te suffit pas, tu as certainement un problème de méthodologie à revoir.

devlop78
Invité n'ayant pas de compte PHPfrance

09 avr. 2010, 17:52

non
C'est quand même stealth qui a eu la bonne note avec 3 lettres ;). Je confirme, mysql_last_id (ou un truc comme ça) est le plus adapté. En même temps, obtenir l'id avant ou après avoir fait la requête, c'est si génant que ça pour ton script ??

ViPHP
ViPHP | 2287 Messages

09 avr. 2010, 18:00

non
C'est quand même stealth qui a eu la bonne note avec 3 lettres ;).
Certes, mais ça n'en fait pas un exemple à suivre... :non:
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 428 Messages

09 avr. 2010, 19:44

Salut,
La vraie question c'est pourquoi as-tu besoin de savoir cela ?

Car en imaginant que ce soit possible (ce qui n'est pas le cas), rien ne te garantirait qu'il ne se soit pas passé une insertion (sur une connexion concurrente) entre le moment où tu demandes le prochain id et le moment ou tu réalises finalement l'insert. Ce qui rendrait l'information inutile car intrinsèquement non fiable.

Selon ta réponse on va peut-être pouvoir t'orienter sur une autre technique, ou alors te réexpliquer les fondamentaux sur l'usage d'un id autoincrémenté ;)
Merci pour vos réponses ...

En fait j'ai eu une idée et pour la mettre en oeuvre sans faire 2 requêtes, je me suis dit que si c'était possible de connaitre l'ID autoincrément AVANT l'insert, ça aurait été chouette...

Mais je suis partis sur l'affirmation très "didacticielle" de stealth35 et j'ai fait deux requetes : 1 pour l'insert et l'autre pour choper l'ID et la retravailler.
Je retiens néanmois la solution : mysql_last_id ... a tester.

a+
raph

ViPHP
ViPHP | 5462 Messages

09 avr. 2010, 20:10

simplicité, efficacité, rapidité

Image

:mrgreen:

ViPHP
AB
ViPHP | 5818 Messages

11 avr. 2010, 22:53


Merci pour vos réponses ...

En fait j'ai eu une idée et pour la mettre en oeuvre sans faire 2 requêtes, je me suis dit que si c'était possible de connaitre l'ID autoincrément AVANT l'insert, ça aurait été chouette...
Si tu avais été un peu plus précis sur cette idée justement, on aurait peut-être pu te renseigner sur le meilleur moyen d'arriver à tes fins :wink:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 avr. 2010, 16:42

simplicité, efficacité, rapidité

Image

:mrgreen:
J'aurais dit "simplicité, manque d'information, manque de pédagogie => utilisateur par satisfait ou mal orienté"
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 5462 Messages

13 avr. 2010, 16:44

soit pas jaloux :wink: