Autor | Zpráva | ||
---|---|---|---|
Venca190 Profil * |
#1 · Zasláno: 9. 3. 2016, 23:26:23
Dobrý večer,
mám script na vkládání článků a zařazení do kategorií(lze zvolit i více kategorií) pomocí checkboxů. To mi funguje parádně. Mám pro to dvě tabulky,první tabulka slouží pro uložení nadpisu, obsahu článku a druhá tabulka je pro id_clanku, id_kategorie ... tedy když zatrhnu 3 kategorie, budu mít v druhé tabulce 3 řádky se stejným id_článku u id_kategorie každé jiné podle vybrané kategorie. kod mám ... script pro uložení článku ... foreach($_POST['check_list'] as $selected) { $zapis = dibi::query('INSERT INTO `clanky_kategorie`', array( 'id_kategorie' => $selected, 'id_clanku' => $aktual_id, )); } nyní řeším editaci článku a narážím na problém, jak mám udělat, aby když změním kategorie článku se mi podle toho upravila druhá tabulka v db podle aktuálního výběru checkboxu? Protože dejme tomu u přidávání článku jsem zaškrtl 3 kategroie a v editaci odškrtnu 2 kategorie, zbyde mi tedy jedna a v db by to mělo ty co už nejsou zaškrtlí smazat...a naopak, když zatrhnu další mělo by to do DB přidat další řádky atd. Jak se tohle řeší? Napadá mě asi jen možnost, že při editaci to smaže všechny řádky tabulky daného id_clanku a zas vytvoří nový výběr. |
||
Kajman Profil |
#2 · Zasláno: 10. 3. 2016, 00:06:05
Můžete smazat jen ty kategorie u článku, které nejsou zatrhuté (pokud není zatrženo nic, smažte všechny kategorie u článku).
Můžete nechat insert jak při přidání, stačí uvést insert ignore into ... Ale o chlup ryhlejší bývá přidání 3 řádků jedním insertem než dělat 3 inserty jednoho řádku. |
||
Alphard Profil |
#3 · Zasláno: 10. 3. 2016, 00:17:53
„Můžete smazat jen ty kategorie u článku, které nejsou zatrhuté (pokud není zatrženo nic, smažte všechny kategorie u článku).“
K tomu bych doplnil konstrukci delete from tabulka where sloupec not in (seznam id) .
|
||
Kajman Profil |
#4 · Zasláno: 10. 3. 2016, 01:01:48
... and clanek_id=42 |
||
Venca190 Profil * |
#5 · Zasláno: 10. 3. 2016, 20:09:35
Díky, takže pokud to chápu dobře, budu mít dva dotazy (insert ignore into a delete)?
Ještě mám jeden dotaz, jak udělat kontrolu, že je vyžádováno minimálně 1 kategorie zaškrtnout? ted mám if (empty($kategorie)) { $err[] = "Vyber min. jednu kategorie."; } |
||
Monkeys Profil * |
#6 · Zasláno: 10. 3. 2016, 23:05:39
Venca190:
Ak nie je nic zaskrtnute mozete ukladat defaultnu hodnotu, bez toho aby ste s tym otravovali uzivatela. M. |
||
Venca190 Profil * |
#7 · Zasláno: 10. 3. 2016, 23:09:00
Monkeys:
defaultní hodnotu? Ta není definovaná žádná. Mám cca 15 kategorií a není preferovaná žádná. |
||
Kajman Profil |
#8 · Zasláno: 10. 3. 2016, 23:37:36
Venca190:
Ano dva dotazy. Nejde mazat a vkládat jedním dotazem. empty by mělo fungovat, v čem je problém? |
||
Venca190 Profil * |
#9 · Zasláno: 10. 3. 2016, 23:45:01
Kajman:
Už v ničem, měl jsem v proměnný přidanou funkci ochrany(htmlspecialchars,trim a stripslashes), bez ní to funguje. Díky. |
||
Časová prodleva: 9 let
|
0