| Autor | Zpráva | ||
|---|---|---|---|
| Jcas Profil * |
#1 · Zasláno: 13. 6. 2014, 08:22:25
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&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 * |
#3 · Zasláno: 13. 6. 2014, 09:24:00
Takže špatné použití array_walk = lépe číst manuál.
Díky |
||
|
Časová prodleva: 12 let
|
|||
0