Autor Zpráva
Jcas
Profil *
Zatím testuji funkčnost.
Za <select> se mi zobrazila 1 a nemůžu pochopit, kde se tam vzala.
- pak jsem si přidal "ahoj" abych ověřil volání funkce.
- pak jsem si přidal $elem[1] .= $prvek[0];, abych si ověřil, že z Db se skutečně vybral záznam. (Zatím tam je jeden jediný - "hlodavci")
Kde se tam bere ta jednička a proč se nezobrazí option?

 data z DB a volání FC
        case 1:
        
        $sql = "SELECT `skupina` FROM `zvirata` GROUP BY `skupina`";
        if ($result = $mysqli->query($sql)) {
                while ($row = $result->fetch_assoc()) { 
                $option[] = $row['skupina'];
                }
                $result->close();        
        } else { presmerujNaChybu(56, 1534); }
    
        $action = 'action="index.php?pridat&step=2" ';
        echo zobrazForm('skupina', $option, $action);    
        break;

// část funkce pro zobrazení formuláře
function zobrazForm($what, $prvek, $action=' ') {
    $hodnota=array();
    $elem = array();
    
    if($what=='skupina' || $what=='plemeno' || $what=='zvire') {    // select na výběr, neb input pro nové plemeno, či zvíře

        $elem[1] = '<select name="'.$what.'">';
        $elem[1] .= $prvek[0];
        $elem[1] .= array_walk($prvek, "zobrazOption", $what);
        $elem[1] .= $what=='skupina' ? zobrazOption('Jiná', 'jina', $what) : zobrazOption('Jiné', 'jine', $what) ;
        $elem[1] .= '</select>';
        
        $opt = array('name' => 'new_'.$what, 'type' => 'text');
        if(isset($_POST['new_'.$what])) {$opt['value'] = $_POST['new_'.$what];}
        else {$opt['disabled'] = ' ';}
        $elem[2]  = zobrazInput($opt);

// a zobrazení option
function zobrazOption($value, $key, $prvek) {
    $t = 'ahoj';
    $t .= '<option name="'.$key.'" value="'.$value.'" ';
    if($_POST[$prvek]==$value) { $t .= 'selected '; }
    $t .= '>';
    $t .= $value;
    $t .= '</option>';
    return $t;
}    

No a jaký mám výstup:
<form method="post" name="form_chz" action="index.php?pridat&amp;step=2">
<select name="skupina">
Hlodavci1ahoj
<option name="jina" value="Jiná">Jiná</option>
</select>
<input name="new_skupina" type="text" disabled="">
<input name="enter" type="submit" value="Uložit"></form>
Mike8748
Profil
Jcas:
$elem[1] .= array_walk($prvek, "zobrazOption", $what);
ta jednička se bere tady.

funkce array_walk vrati true/false podle toho jestli je procházení pole úspěšné nebo ne. nevrací (tak ty předpokládáš) výsledek volání callback funkce.

edit: co ty nejspíš chceš bude použít array_map pro vytvoření nového pole (v kterém budou výsledky callback funkce, tedy string s optionem) a do $elem[1] potom přiřadit výsledek join("",$novePole);
Jcas
Profil *
Takže špatné použití array_walk = lépe číst manuál.

Díky

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: