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 …)