Autor Zpráva
Monkeys
Profil *
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..
Toto funguje ale je to zbytocne dlhe.
Urcite sa to da riesit aj kratsie


M.
tiso
Profil
...a snažíš sa urobiť čo? Lebo z tvojho kódu mi to nie je jasné.
Monkeys
Profil *
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
Ošetři isset
tiso
Profil
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 *
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; 
raději
 
$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 *
abc:

Ten tvoj terarny zapis je lepsi

dik
M.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0