21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
PHP-Slon
Profil *
Zdravím,

mám následující problém. Mám hlavní kategorii a ta má podkategorie. Snažím se o editaci a načítání dat pomocí POST. Tzn. načtu kategorii a všechny její podkategorie, vznikne mi tento formulář:
INPUT název kategorie
INPUT název podkategorie
INPUT název podkategorie
INPUT název podkategorie

Na formuláři udělám POST a $nameCategory = $_POST['nazev-kategorie']; je v pořádku a podkategorie chci tahat jako pole. Inputy u podkategorií mají id="nazev-podkategorie-0", id="nazev-podkategorie-1", id="nazev-podkategorie-2" ...kvůli labelum ve formuláři, které se na ně odkazují pomocí atributu for="podkategorie-0" atd... doposud v pořádku.

Situace kdy dám name takto (např. name="nazev-podkategorie[ID]").

Každý input mi ošetřuje funkce setInputTextValue() na vrácení atributu value="" po proběhnutí POSTU, třeba kvůli chybám ve formuláři.

Ukázka:
 <input type="text" placeholder="<?php echo l('Název podkategorie'); ?>" id="nazev-podkategorie-<?php echo $i; ?>" name="nazev-podkategorie[<?php echo $i; ?>]" maxlength="64" class="form-control"<?php setInputTextValue('odeslat', 'nazev-podkategorie[' . $i . ']', @$dataSubcatQuery['name']) . ']'; ?>>

Ukázka funkce:
function setInputTextValue($formName, $inputName, $value) {

//TADY když si dám echo $_POST[$inputName], tak nevypíše nic, protože to ztratil v POSTU kvůli tomu, že mám v name znaky [] 
....
}

Vzhledem k tomu, že ztratil focus kvůli [], fajn to je řešitelné kdy místo závorek dám nazev-podkategorie-ID ale ani v obouch případech ty data prostě potom nenačtu jednoduše do pole pomocí $_POST['nazev-podkategorie'], protože tam mám buď závorky a v nich ID a nebo -ID. Tzn. předpokládam, že pro načítání dat z formuláře do pole musí být stejný name ale pak mi nebude fungovat ta moje funkce na vrácení value. Nechá se s tím něco dělat?

Předem díky za nějaký hinty.
juriad
Profil
PHP-Slon:
Tak si v té funkce setInputTextValue rozeber $inputName.
function setInputTextValue($formName, $inputName, $value) {
  $indices = preg_split('/[][]/', $inputName, -1, PREG_SPLIT_NO_EMPTY);
  $val = $_POST;
  foreach ($indices as $index) {
    $val = $val[$index];
  }
  
  echo $val; # tady uděláš něco chytřejšího
}
$inputName pak může být třeba nazev-podkategorie[0], případně cokoli složitějšího.

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