Autor | Zpráva | ||
---|---|---|---|
kopi Profil |
Zdravím,
formulářem odesílám vždy různý počet checkboxů, ty dávám do pole a cyklem foreach zpracuju. funguje mi to ale jen v přpadě, že checkboxy zaškrtávám, když je chci ale odškrtnout, tak se nic neděje. $bonusy = array(); if(isset($_POST['bonus'])) { // jsou data pro 'bonusy' v postu $bonusy = array_keys($_POST['bonus']); // do pole $bonusy se uloží id bonusu } if(!empty($bonusy)) { foreach($bonusy as $bonusyId) { $update_bonus = mysqli_query($conn,"UPDATE bonusy SET ".$bonusyId." = 1 WHERE id=$id"); } } chápu, že se zpracovávají jen checkboxy, které mají hodnotu a když je odškrtnu, tak hodnotu nemají, a proto se neupdatují. Poradíte mi, jak to mám zakomponovat do kodu? děkuji. |
||
Keeehi Profil |
#2 · Zasláno: 21. 2. 2017, 16:49:34
kopi:
Spíš jde o to, že nezaškrtnuté checkboxy se vůbec neposílají. Ale hlavně problém je už v návrhu databáze a v tom, že bonusy máte jako sloupce a ne řádky. |
||
kopi Profil |
#3 · Zasláno: 21. 2. 2017, 16:53:00
Keeehi:
chápu, že nezaškrtnuté se neodesílají. Jaké navrhujete řešení? Kombinuju produkty a bonusy. každý řádek je ID_produkt a buď 1 nebo 0, podle toho, jestli se na produkt váže daný bonus nebo ne. |
||
Keeehi Profil |
#4 · Zasláno: 21. 2. 2017, 17:44:51
kopi:
tabulka bonusy: id, jméno, .... tabulka produkty_bonusy: id_produkt, id_bonus Když se k nějakému produktu váže určitý bonus, bude záznam v tabulce produkty_bonusy. |
||
kopi Profil |
#5 · Zasláno: 21. 2. 2017, 17:56:18
Keeehi:
Děkuju. Předělám. Ale to neodstraní problém s těmi neodeslanymi checkboxy |
||
Keeehi Profil |
kopi:
Ale ano, protože pak zavoláš mysqli_query($conn, "DELETE FROM produkty_bonusy WHERE id_produkt = $id AND id_bonus NOT IN (".implode(',', $bonusy).")"); Nebo můžeš rovnou smazat všechny záznamy pro daný produkt a pak přidat ty nové. mysqli_query($conn, "DELETE FROM produkty_bonusy WHERE id_produkt = $id"); |
||
kopi Profil |
#7 · Zasláno: 21. 2. 2017, 22:15:22
Takže myslíš, že to mám udělat na dva dotazy? když odešlu formulář, tak nejdříve přes foreach zaškrtnout a pak v druhém dotazu toto:
mysqli_query($conn, "DELETE FROM produkty_bonusy WHERE id_produkt = $id AND id_bonus NOT IN (".implode(',', $bonusy).")"); ?
|
||
kopi Profil |
#8 · Zasláno: 21. 2. 2017, 23:16:11
Už jsem si dal 1 a 1 dohromady :D Moc děkuju za pomoc
|
||
Časová prodleva: 8 let
|
0