Ciao a tutti,
ho 3 tabelle per fare una relazione molti a molti in questo modo:
articoli:
- id_art
- nome_art
categorie:
- id_cat
- nome_cat
rel_art_cat (id_art + id_cat sono chiave unica):
id_rel
id_art
id_cat
nella pagina del sito dove inserisco l'articolo ho una serie di checkbox per ogni categoria possibile e l'utente deve scegliere a quale associarlo.
in fase di modifica dell'articolo faccio 3 query:
1 - aggiorno l'articolo
2 - per ogni categoria non selezionata faccio una query per eliminare le relazioni
3 - per ogni categoria selezionata faccio una query per aggiornare la tabella relazioni.
sql 1:
sql 2:Codice PHP:update articoli set nome_art = 'articolo' where id_art = '$id_art';
sql 3:Codice PHP:for($i=0;$i<count($localita_da_eliminare);$i++):
delete from rel_art_cat where id_art = '$id_art' and id_cat = $localita_da_eliminare[$i];
endfor;
Codice PHP:for($i=0;$i<count($localita_da_tenere);$i++):
delete from rel_art_cat where id_art = 'id_art' and id_cat = $localita_da_eliminare[$i];
INSERT INTO rel_art_cat( id_art, id_loc ) VALUES ('$id_art', '$localita_da_tenere[$i]') ON DUPLICATE KEY UPDATE id_art = '$id_art', id_loc = '$localita_da_tenere[$i]';
endfor;
per funzionare funziona però mi sembra eccessivo fare tutte quelle query ogni volta.
ho cercato un po sia nel forum che su google ma non sono riuscito a fare meglio.
mi sembra molto strano che non ci sia un modo più veloce con un nomero inferiore di query, anche perchè in questo modo devo controllare gli errori di n query prima di essere sicuro che l'aggiornamento sia avvenuto correttamente.
qualcuno sa aiutarmi per favore?
anche se sapeste indicarmi qualche store provecure in mysql sarebbe grandioso.
grazie.
m.

Rispondi quotando