Je ne comprends rien à ton "values" et je ne comprends pas pourquoi tu te débarasses de l'id en cas d'ajout...
Il faut absolument que tu me montre tout ton code, sans cela je ne peux pas voir d'où vient l'erreur. Mais à mon avis et le formulaire et les modèles et les associations et le save sont mal organisés. Copie-colle ton code via le bin : http://bin.cakephp.org/ Il me faut le code de tes deux modèles, le code de ton contrôleur qui fait le "add/edit" et le code de ton formulaire. Voici ce que me donne un save sur un formulaire qui contient une HABTM (Agregat HABTM Item) : 35 SELECT `AgregatsItem`.`item_id` FROM `agregats_items` AS `AgregatsItem` WHERE `AgregatsItem`.`item_id` = 334 2 2 1 36 DELETE `AgregatsItem` FROM `agregats_items` AS `AgregatsItem` WHERE `AgregatsItem`.`item_id` IN (334, 334) 2 1 37 INSERT INTO `agregats_items` (`item_id`,`agregat_id`) VALUES (334,'12'), (334,'11') Et d'ailleurs, que ce soit en add() ou en edit(), Cake agira toujours ainsi pour sauvegarder une HABTM. Comme je te le disais, Cake supprime d'abord tout puis refait des insert. Si le formulaire, les modèles, les associations et le contrôleur sont bien formés, ça marche ! Enfin, d'après mes connaissances en SQL et SGBD et d'après quelques éléments glanés auprès d'admin DBA, ajouter des champs dans une table de liaison N:M ne devrait pas se faire... On 18 juil, 15:53, "ayoub hidri" <[EMAIL PROTECTED]> wrote: > je viens de modifier mon action admin_edit() > > je me suis debarassé de l'index 'id' dans $this->data dans le cas d'un ajout > > voilà mon $this->data > > Array > ( > [Annonce] => Array > ( > [category_id] => 1 > [title] => Vente Studio > [description] => jhsvd,b,sdvsdqsd > [date_begin] => > [date_end] => > [published] => 0 > [user_id] => 1 > ) > > [Caractere] => Array > ( > [0] => Array > ( > [id] => 2 > [values] => aze > ) > > [1] => Array > ( > [id] => 8 > [values] => rty > ) > > [2] => Array > ( > [id] => 5 > [values] => uio > ) > > [3] => Array > ( > [id] => 7 > [values] => pqs > ) > > ) > > et voilà ce que j'ai en SQL quand je fais un save(); > > 15 INSERT INTO `annonces` > (`category_id`,`title`,`description`,`date_begin`,`date_end`,`published`,`user_id`,`modified`,`created`) > VALUES (1,'Vente Studio','jhsvd,b,sdvsdqsd','','','0',1,'2008-07-18 > 15:49:26','2008-07-18 15:49:26') 1 12 > 16 SELECT LAST_INSERT_ID() AS insertID 1 1 0 > 17 SELECT `AnnoncesCaractere`.`annonce_id` FROM `annonces_caracteres` AS > `AnnoncesCaractere` WHERE `AnnoncesCaractere`.`annonce_id` = 88 0 > 0 0 > 18 SELECT COUNT(*) AS `count` FROM `annonces_caracteres` AS > `AnnoncesCaractere` WHERE `AnnoncesCaractere`.`annonce_id` = 88 1 > 1 0 > 19 INSERT INTO `annonces_caracteres` (`values`,`annonce_id`) VALUES > ('aze',88) 1 0 > 20 SELECT COUNT(*) AS `count` FROM `annonces_caracteres` AS > `AnnoncesCaractere` WHERE `AnnoncesCaractere`.`annonce_id` = 88 1 > 1 0 > 21 UPDATE `annonces_caracteres` SET `values` = 'rty', `annonce_id` = 88 > WHERE `annonces_caracteres`.`annonce_id` = 88 1 0 > 22 SELECT COUNT(*) AS `count` FROM `annonces_caracteres` AS > `AnnoncesCaractere` WHERE `AnnoncesCaractere`.`annonce_id` = 88 1 > 1 0 > 23 UPDATE `annonces_caracteres` SET `values` = 'uio', `annonce_id` = 88 > WHERE `annonces_caracteres`.`annonce_id` = 88 1 0 > 24 SELECT COUNT(*) AS `count` FROM `annonces_caracteres` AS > `AnnoncesCaractere` WHERE `AnnoncesCaractere`.`annonce_id` = 88 1 > 1 0 > 25 UPDATE `annonces_caracteres` SET `values` = 'pqs', `annonce_id` = 88 > WHERE `annonces_caracteres`.`annonce_id` = 88 > > Cake fait toujours un insert et le reste c'est des update --~--~---------~--~----~------------~-------~--~----~ Groupe "Cakephp-fr". Adresse : [email protected] Pour résilier : [EMAIL PROTECTED] Pour les options : http://groups.google.com/group/cakephp-fr?hl=fr -~----------~----~----~----~------~----~------~--~---
