Connaitre l'ID autoincrement AVANT l'enregistrement ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Connaitre l'ID autoincrement AVANT l'enregistrement ?

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par moogli » 30 juin 2011, 11:05

peut être aurait il était bien de préciser que customer c'est le nom de la table ?

d'ailleurs le sprintf, lui, n'a aucun intérêt :)

enfin bref un an après c'est surement pas utile ^^

@+

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par Lénawaii » 30 juin 2011, 01:40

Ouais et en plus en une seule requête, ce n'est pas du grand art ça ???

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par Lénawaii » 30 juin 2011, 01:27

Coreection du code que j'ai mis plus haut pour que cela soit valide :

$Q_C = sprintf("SHOW TABLE STATUS LIKE 'customers'");
$C = mysql_query($Q_C, $user) or die(mysql_error());
$row_C = mysql_fetch_assoc($C);
$id_custom = $row_C['Auto_increment'];[/quote]

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par Skw33d » 30 juin 2011, 01:12

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é ;)
Lors d'une transaction ne peut on pas verrouiller, ou plutôt la table n'est t'elle pas verrouillée pour éviter ce genre de problème ? Je ne suis pas sûr de ce que j'affirme mais il est possible aussi de les verrouiller sans transaction si celles ci sont en InnoDB ?

Edit : Je viens de voir que le sujet à subit un déterrement de Lénawaii. ^^

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par Lénawaii » 30 juin 2011, 00:34

Voici le code qui pourrait t'aider mon ami :

$Q_C = sprintf("SHOW TABLE STATUS LIKE 'customers'");
$C = mysql_query($Q_C, $user) or die(mysql_error());
$id_custom = $row_C['Auto_increment'];

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par telnes » 29 avr. 2010, 16:24

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.
donc il fait une requet avant cqfd

^^

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par zeus » 13 avr. 2010, 17:12

Ce n'est pas de la jalousie. C'est juste que, comme je t'en avais déjà fait part, si tu faisais preuve de plus d'analyse des questions avant de répondre, et que tu prenais un peu plus de temps pour construire tes réponses (plus que 3 mots et un lien), je suis sûr que tes interventions seraient de qualités.

Mais là, on dirais que tu te dépêches de répondre à tout ce que tu peux, et tellement vite, que tu n'expliques rien, ou alors tu te contentes de jeter une solution, alors que nous sommes avant tout là pour aider à progresser, par pour cracher du code ;)

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par stealth35 » 13 avr. 2010, 16:44

soit pas jaloux :wink:

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par zeus » 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é"

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par AB » 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:

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par stealth35 » 09 avr. 2010, 20:10

simplicité, efficacité, rapidité

Image

:mrgreen:

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par visualight » 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

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par Calimero » 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:

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par devlop78 » 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 ??

Re: Connaitre l'ID autoincrement AVANT l'enregistrement ?

par AB » 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.