| 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: 15 let
|
|||
0