Autor | Zpráva | ||
---|---|---|---|
Ota Profil * |
#1 · Zasláno: 12. 3. 2011, 14:52:31
Dobrý den, měl bych otázku ohledně uložení/načtení <select> do sessions.
Pokužívám mnou upravený script od p. Vrány na vícestránkový formulář. Zajímá mě, jakým způsobem se dá nejjednodušeji dosáhnout uložení a znovu načtení selectu do session... když ho vyplním a z druhé strany se vrátím zpět je na defaultní hodnotě. U textových polí používá pro načítání: value="' . htmlspecialchars($registrace["jmeno"]) . '" Jak toho tedy dosáhnout? díky za každou radu ... tady je script... <?php session_start(); $posledni_stranka = 1; if (!$_POST) { $stranka = 0; $registrace = array(); } else { $stranka = intval($_POST["stranka"]); $form_id = (isset($_POST["form_id"]) ? intval($_POST["form_id"]) : count($_SESSION["registrace"])); $registrace = &$_SESSION["registrace"][$form_id]; $chyba = ""; // uložení vyplněných hodnot foreach ($_POST as $key => $val) { if ($key != "form_id" && $key != "zpet" && $key != "stranka") { $registrace[$key] = $val; } } if ($_POST["zpet"]) { $stranka--; } else { // kontrola vyplněných hodnot switch ($stranka) { case 0: if (!strlen($_POST["jmeno"])) { $chyba .= "Jméno nesmí být prázdné.\n"; } break; case 1: if (!check_email($_POST["email"])) { $chyba .= "Vyplňte prosím e-mail.\n"; } if (!$chyba && !mysql_query("INSERT INTO uzivatele (jmeno, email) VALUES ('" . mysql_real_escape_string($registrace["jmeno"]) . "', '" . mysql_real_escape_string($registrace["email"]) . "')")) { $chyba = "Data se nepodařilo uložit."; } if (!$chyba) { header("Location: ok.php"); exit; } break; } if (!$chyba) { $stranka++; } } } // vypsání formuláře echo "<form action='' method='post'>\n"; if ($_POST) { echo "<input type='hidden' name='form_id' value='$form_id' />\n"; echo "<input type='hidden' name='stranka' value='$stranka' />\n"; if ($chyba) { echo "<p>$chyba</p>\n"; } } switch ($stranka) { case 0: echo 'Jméno: <input name="jmeno" value="' . htmlspecialchars($registrace["jmeno"]) . '" />'; echo "<select name='stat'>"; echo "<option value='1'>Česká republika</option>"; echo "<option value='2'>Slovenská republika</option>"; echo "<option value='3'>Německo</option>"; echo "<option value='4'>Rakousko</option>"; echo "</select>"; break; case 1: echo 'E-mail: <input name="email" value="' . htmlspecialchars($registrace["email"]) . '" />'; break; } echo "\n<input type='submit' value='" . ($stranka < $posledni_stranka ? "Další" : "Dokončit") . "' />\n"; if ($stranka) { echo "\n<input type='submit' name='zpet' value='Zpět' />\n"; } echo "Strana: " . ($stranka + 1) . "/" . ($posledni_stranka + 1) . "\n"; echo "</form>\n"; ?> |
||
YoSarin Profil |
#2 · Zasláno: 12. 3. 2011, 15:02:09
optiony změň na:
echo '<option value="1"' . ($registrace['stat'] == 1 ? ' selected="SELECTED"' : '') . '>Česká republika</option>'; |
||
Ota Profil * |
#3 · Zasláno: 12. 3. 2011, 18:04:04
Díky šlo to bez problémů..... stejným způsobem jsem udělal i
echo '<input type="radio" name="pohlavi" value="1"' . ($registrace['pohlavi'] == 1 ? ' checked="checked"' : '') . ' class="styled" />Muž'; echo '<input type="radio" name="pohlavi" value="2"' . ($registrace['pohlavi'] == 2 ? ' checked="checked"' : '') . ' class="styled" />Žena'; Ještě bych měl otázku.... Jak udělám pro tohle kontrolu? Když uživatel načte stránku tak není označená žádná hodnota.. Takže bych chtěl aby v případě nezadání žádné volby to hodilo chybu.. Díky... |
||
G3n3sis19 Profil |
#4 · Zasláno: 12. 3. 2011, 18:09:24
if (!isset($_POST['pohlavi'])) die(neni_zvolena_zadna_moznost); |
||
Darker Profil |
#5 · Zasláno: 12. 3. 2011, 18:10:33 · Upravil/a: Darker
if(!isset($_POST["pohlavi"]))//chyba Byls první. |
||
G3n3sis19 Profil |
#6 · Zasláno: 12. 3. 2011, 18:11:29 · Upravil/a: G3n3sis19
To ať si OP už upraví podle svého ne?
EDIT: jo byl :D |
||
Časová prodleva: 14 let
|
0