Autor | Zpráva | ||
---|---|---|---|
Monkeys Profil * |
#1 · Zasláno: 19. 1. 2013, 00:04:08
zdravim
mam 2 polia asi takto: // check su checkboxy $check = array(); $check['checkBox'] = $_POST['check']; // data su textove inputy $data = array(); $data['hotovost'] = $_POST['hotovost']; $data['faktura'] = $_POST['faktura']; $data['inaPlatba'] = $_POST['nova_platba']; /---------------------------------------------------------------------------/ // spracovanie $box = array(); $poznamka = array(); foreach ($check['checkBox'] as $val){ if($data[$val] != $val){ //unset($data[$val]); $box[$val] = "C"; // v DB sa ulozi ako info o zaskrknutom checkboxe //($data[$val] == "Poznámka") ? $poznamka[$val."Poznamka"] = "" : $poznamka[$val."Poznamka"] = $this->database->EscapeString($data[$val]); } }//end foreach echo print_r($box); // vypise napr -> Array ( [hotovost] => C [inaPlatba] => C ) Problem nastava ked nie je policko zaskrknute -> napise ze je nedefinovyny index. Uz som to skusal vseliako ale nejde to ... Volakedy som to robil takto ale zda sa mito zbytocne dlhy kod: foreach($_POST['check'] as $hodnota){ if($hodnota == "hotovost"){ $box["hotovost"] = "C"; if($_POST['hotovost'] == "Poznámka"){ $box["hotovostPoznamka"] = ""; }else{ $box["hotovostPoznamka"] = oprav_data($_POST['hotovost']); } }elseif($hodnota == "faktura"){ ... } ... atd.. Urcite sa to da riesit aj kratsie M. |
||
tiso Profil |
#2 · Zasláno: 19. 1. 2013, 00:12:00
...a snažíš sa urobiť čo? Lebo z tvojho kódu mi to nie je jasné.
|
||
Monkeys Profil * |
#3 · Zasláno: 19. 1. 2013, 00:22:43
tiso:
Snazim sa dosiahnut to aby pri spracovani ignoroval textove inputy ktorych checkbox neni zaskrknity. Teraz to sice funguje ale vrati chybu u tych textovych inputoch ktorych checkbox nie je zaskrknuty. M. |
||
abc Profil |
#4 · Zasláno: 19. 1. 2013, 00:30:45
Ošetři isset
|
||
tiso Profil |
#5 · Zasláno: 19. 1. 2013, 00:48:49
No ak na riadku 17 ten prvok odstrániš, nemôžeš sa čudovať, že na riadku 19 už neexistuje a vyhadzuje chybu. Teda ak som to správne dešifroval, že tie riadky máš normálne odkomentované. Inak ten kód vôbec nerobí to, čo popisuješ, že by mal robiť. Skús vysvetliť podrobnejšie čo chceš, ukáž formulár z dátami, ako ich tam dostaneš a podobne.
|
||
Monkeys Profil * |
#6 · Zasláno: 19. 1. 2013, 14:24:14
Vyriesil som to:
$check = array(); (isset($_POST['check'])) ? $check['checkBox'] = $_POST['check'] : $check['checkBox'] = NULL; $data = array(); $null = NULL; (isset($_POST['hotovost'])) ? $data['hotovost'] = $_POST['hotovost'] : $data['hotovost'] = $null; (isset($_POST['faktura'])) ? $data['faktura'] = $_POST['faktura'] : $data['faktura'] = $null; (isset($_POST['nova_platba'])) ? $data['inaPlatba'] = $_POST['nova_platba'] : $data['inaPlatba'] = $null; // spracovanie $box = array(); $poznamka = array(); if(count($check['checkBox']) > 0){ foreach ($check['checkBox'] as $val){ $box[$val] = "C"; ($data[$val] == "Poznámka") ? $poznamka[$val."Poznamka"] = "" : $poznamka[$val."Poznamka"] = $this->database->EscapeString($data[$val]); }//end foreach }else{ $_SESSION["warning"] = '<div class="nazovProduktu"><div class="upozornenieRed"><p>Zadajte aspoň jeden spôsob platby.</p></div></div>'; } HTML <input type="checkbox" name="check[]" value="hotovost" /> <input type="text" name="hotovost" value="Poznámka"/><br /> <input type="checkbox" name="check[]" value="faktura" /> <input type="text" name="faktura" value="Poznámka"/><br /> <input type="checkbox" name="check[]" value="inaPlatba" /> <input type="text" name="nova_platba" value="Poznámka"/><br /> <input name="uloz" type="submit" /> M. |
||
abc Profil |
Lepší/hezčí/čitelnější způsob:
místo (isset($_POST['hotovost'])) ? $data['hotovost'] = $_POST['hotovost'] : $data['hotovost'] = $null; $data['hotovost'] = isset($_POST['hotovost'])? $_POST['hotovost'] : ''; A nechápu, proč si defunuješ proměnnou $null , když do ní uložíš NULL , přitom zápis NULL je o znak kratší
|
||
Monkeys Profil * |
#8 · Zasláno: 19. 1. 2013, 15:15:45
abc:
Ten tvoj terarny zapis je lepsi dik M. |
||
Časová prodleva: 11 let
|
0