j’aimerais insérer dans le champ « ordre » le numéro 12, le numéro 11 étant le dernier utilisé (« ordre » n’est pas auto_incrément, et c’est pas le but)
quans je fait cette requete
[cpp]INSERT INTO site_menu (ordre,titre,url,new) VALUES ((SELECT (ordre + 1) FROM site_menu ORDER BY ordre DESC LIMIT 1),‹ Mon URL ›,‹ url.htm ›,0)[/cpp]
j’ai une erreur.
pourtant la requete imbriquée [cpp]SELECT (ordre + 1) FROM site_menu ORDER BY ordre DESC LIMIT 1[/cpp] fonctionne correctement tout seule.
je crois que sn veut parler d’une requète INSERT … SELECT :oui:
mais bon, moi je comprends pas pourquoi tu ne fais pas un bête :
INSERT INTO site_menu (ordre,titre,url,new) VALUES ( MAX(ordre)+1 ,‹ Mon URL ›,‹ url.htm ›,0) :??:
au moins, ce serait compatible avec MySQL < 4.1
bah moi c’est comme ça que je faisais avant que je ne comprennes à quoi servais les auto_increment
mais je le faisais peut-être en deux requètes en effet (tu me fais douter lol) …
'fin dans ce cas, un
INSERT INTO site_menu (ordre,titre,url,new) VALUES ((SELECT MAX(ordre) + 1 FROM site_menu),‹ Mon URL ›,‹ url.htm ›,0)
seras de toute façon meilleur que l’espèce de truc machin original proposé par NeqO
les sous requete marche pas dans toutes les version de mysql 4.1+ je crois…
sans-nom te propose de creer ta requete comme un resultat d’une premiere requete…
ps : les requete imbrique comme tu les utilise dans ton insert c dangereux parce que tu ne sais pas comment et dans quel ordre sont gérés les sous requetes…
tu peux utiliser LAST_INSERT_ID() (+1) en sql directement ou en php (faut etre dans la meme transaction quand meme cad le meme fichier script je pense a tester …)