Autor | Zpráva | ||
---|---|---|---|
aladin Profil * |
#1 · Zasláno: 20. 2. 2013, 14:03:32
Zdravím,
Došel jsem na bod,kde je moje achillova pata..a to Checkboxy hledal jsem tady tohle téma,ale nikde není to,co potřebuji Mám databázi: tabulku a v ní sloupce id | settings | checked | info | title id-> id nastavení settings-> co nastavuji checked-> zda je zaškrtnuté nebo ne info-> informace o tom,co nastavuji title-> nadpis nastavení(třeba Registrace apod..) cíl: vypsat v nastaveni všechny řádky,a zaškrtnout to,co je upravený,například povolení registrace někdo předemnou zaškrtl že budou vypnutý,tak aby to tak zůstalo když tam příjde někdo jiný. a uložení..např když tu registraci chci povolit tak aby se v db změnil na checked mám udělanej script,ten výpis funguje,ale nějak mě blbne to ukládání.. script projde celej,ale neuloží to..domnívám se že mám chybu v definici checkboxu formulář: (je to vzhled typu phtml takže php tam moc dávat nechci) <form name="formSettings" method="POST"> <?php foreach ($settings as $set) : ?> <tr> <td><h3><?= $set['title'] ?></h3></td> <td><input data-no-uniform="true" <?= $set['checked'] ?> type="checkbox" name="checkbox[]" class="toggle"> <input type="hidden" name="id" value="<?= $set['id'] ?>"> </td> <td><h6><?= $set['info'] ?></h6></td> </tr> <?php endforeach ?> <button type="submit" name="settingsSubmitSave" class="btn btn-primary">Uložit změny</button> </form> Třída pro uložení: class checkbox{ public function settings($url) { if(isset($_POST['settingsSubmitSave'])){ $box = $_POST['checkbox']; $id = $_POST['id']; $save['checked'] = implode(',',$_POST['checkbox']); DB::update('site_settings', $save, 'WHERE `id` = ?', array($id)); Message::show(' <div class="alert alert-success"> <button type="button" class="close" data-dismiss="alert">×</button> <strong>Hotovo!</strong> </div> '); } return DB::allQuery('SELECT * FROM `site_settings`'); } } |
||
peta Profil |
Jaky ma smysl radek 6, kdyz na radku 8 $box nepouzijes?
Formular odesila jen zaskrtnute checkboxy, prazdne se neodesilaji. Pomoci print_r($_POST['checkbox']); si to muzes zobrazit. Tj, pokud zaskrtnes vsechny checboxy, tak by se meli vsechny ulozit do db. Ale, kdyz je pak odskrtnes, tak je $_POST['checkbox'] prazdne a do db se neulozi nic, zustanou zaskrtnute.
Jinak dotaz nechapu, nevim, jak se ti to chova, co se neulozi a nevidim do celeho php, treba je problem jeste nekde jinde. Ja predpokladam, ze se to ulozi. |
||
aladin Profil * |
#3 · Zasláno: 20. 2. 2013, 14:42:44 · Upravil/a: aladin
ten box jsem měl na něco jiného..
jinač jak teda udělat aby to ukládalo i ty prázdné?jelikož mám v db ten sloupec checked danej ve value,že se to tam zapíše a pak jen do toho inputu type checkbox připisuje jestli je to checked nebo ne.. prostě aby to z tý db v sloupci checked smazalo...pokud je to vypnuté možná podmínkou by to šlo ne? isset checkbox? jinač pokud vypíšu ten check box tak to vypisuje pořád 1 takže asi nejspíš to je pořád zapnuté takže aby to vypisovalo checked tak budu muset přes podmínku udělat aby to psalo checked ne? if(implode(',',$_POST['checkbox'])==1) $check = "checked"; else $check = ""; ještě se chci zeptat,jelikož je to ve foreach..tak zpráva o uspěšném uložení se zobrazí tolikrát kolik je tam checkboxu(neboli řádků) jde to nějak obejít že by se to zobrazilo pouze jednou? napadlo mě cyklovačem while,ale to si myslím že výsledek bude stejný |
||
peta Profil |
Co ti brani projet cele pole?
isset($_POST['checkbox']) { $ch = array(); for $i=0;$i<1234;$i++) // 1234 checkboxu {$ch[] = isset($_POST['checkbox'][$i]) ? 1 : 0;} // kdyz je set-ly, tak je zaskrtnuty a neni treba resit value, pokud value nema dalsi vyznam } |
||
Časová prodleva: 5 dní
|
|||
aladin Profil * |
#5 · Zasláno: 26. 2. 2013, 20:37:23
peta:
nějak jsem to sesmolil..funguje,ukládá..ale blbě ukládá... jelikož to je ve foreach,tak pokud označím třeba 2,a dám uložit,tak to uloží do db jako checked,checked což je nahouno asi se tam špatně označuje ID toho co nastavuji... jak jsi ted radil procházet celým polem,tak to samé dělá foreach v pohledu ne?(v phtml) nebo jsi myslel projít celým polem přímo při zpracování?tudíž v nastaveni.php ? phtml: (šablona) <form name="formSettings" method="post"> <?php foreach ($settings as $set) : ?> <tr> <td><h3><?= $set['title'] ?></h3></td> <td> <input data-no-uniform="true" <?= $set['checked'] ?> type="checkbox" value="<?php if($set['checked']=='checked'){ echo ''; }else{ echo 'checked'; }?>" name="checkbox[]" class="iphone-toggle"> <input hidden="hidden" name="id" value="<?= $set['id'] ?>"> </td> <td><h6><?= $set['info'] ?></h6></td> </tr> <?php endforeach ?> <button type="submit" name="settingsSubmitSave" class="btn btn-primary">Uložit změny</button> </form> nastaveni.php public function settings($url) { if(isset($_POST['settingsSubmitSave'])){ $box = $_POST['checkbox']; $in=implode(',',$_POST['checkbox']); $id = $_POST['id']; $save=array('checked' => $in); //$save['checked'] = implode(',',$_POST['checkbox']); DB::zmen('site_settings', $save, 'WHERE `id` = ?', array($id)); Zprava::zobraz(' <div class="alert alert-success"> <button type="button" class="close" data-dismiss="alert">×</button> <strong>Hotovo!</strong> '. $in.' a '. $_POST['id'].' </div> '); } return DB::dotazVsechny('SELECT * FROM `site_settings`'); } |
||
Časová prodleva: 11 let
|
0