Autor | Zpráva | ||
---|---|---|---|
gix Profil * |
#1 · Zasláno: 6. 11. 2010, 12:53:07
Zdravim, mam registracni formular ktery se sklada z nekolika kroku => z nekolika stranek. Na prvni uzivatel vyplni jmeno, na druhe prijmeni,..... s overenim vyplnenych poli a s overenim emailu. Nakonec se vse ulozi do databaze. Vse funguje jak ma az na jednu vec. Kdyz se uzivatel chce vratit na predchozi krok, pole ktere vyplnil je prazdne. Jak docilit toho abych uchoval hodnotu kterou tam zadal? Diky moc za rady.
tohle je kód: <?php include("config.php"); $spojeni=mysql_connect($MySQL_server,$MySQL_user,$MySQL_user_password); $spojenidb=mysql_select_db($MySQL_db); session_start(); $posledni_stranka = 3; 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 = ""; function check_email($email) { $atom = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]'; // znaky tvořící uživatelské jméno $domain = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; // jedna komponenta domény return eregi("^$atom+(\\.$atom+)*@($domain?\\.)+$domain\$", $email); } // uložení vyplněných hodnot foreach ($_POST as $key => $val) { if ($key != "form_id" && $key != "zpet" && $key != "stranka") { $registrace[$key] = stripslashes($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 (!strlen($_POST["prijmeni"])) { $chyba .= "Příjmení nesmí být prázdné.\n"; } break; case 2: if (!strlen($_POST["adresa"])) { $chyba .= "Adresa nesmí být prázdná.\n"; } break; case 3: if (!check_email($_POST["email"])) { $chyba .= "Vyplňte prosím e-mail.\n"; } if (!$chyba && !mysql_query("INSERT INTO uzivatele (jmeno, prijmeni, adresa, email) VALUES ('" . addslashes($registrace["jmeno"]) . "', '" . addslashes($registrace["prijmeni"]) . "', '" . addslashes($registrace["adresa"]) . "', '" . addslashes($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"]) . '" />'; break; case 1: echo 'Příjmení: <input name="prijmeni" value="' . htmlspecialchars($registrace["prijmeni"]) . '" />'; break; case 2: echo 'Adresa: <input name="adresa" value="' . htmlspecialchars($registrace["adresa"]) . '" />'; break; case 3: 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"; ?> |
||
tiso Profil |
#2 · Zasláno: 6. 11. 2010, 13:01:15 · Upravil/a: tiso
gix: takéto rozdelenie formulára po jednotlivých políčkach je blbosť, pre návštevníkov je jednoduchšie vyplniť tieto údaje naraz. Rozdeľovanie na viac stránok sa používa iba pri rozsiahlych formulároch, a pri takých, kde sú ďalšie časti závislé od vyplnenia predchádzajúcich. Tento formulár do týchto skupín nepatrí.
|
||
gix Profil * |
#3 · Zasláno: 6. 11. 2010, 13:11:40
chjo, tohle je jen ukazka.... je jasny ze bych to takhle nikdy v zivote nepouzil... budu delat mnohem vetsi formular ale potrebuju tohle jako vzor. Ma otazka tedy trva..
|
||
xmark Profil |
#4 · Zasláno: 6. 11. 2010, 13:13:37
gix:
Skladuj to třeba v cookies. |
||
gix Profil * |
#5 · Zasláno: 6. 11. 2010, 15:14:16
tak uz jsem to vyresil. Mel bych ale jeste jednu otazku...
Nefunguje mi diakritika pri vlozeni do databaze... soubor je ulozenej jako utf8 , v databazi je taky zvoleno utf8 a na zacatku stranky mam <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>x</title> </head> <body> proc mi to teda vlozi do databaze misto hacku a carek klikyhaky? Diky za odpoved |
||
xmark Profil |
#6 · Zasláno: 6. 11. 2010, 15:23:19
Na konci config.php:
mysql_query("SET character_set_results=utf8"); mysql_query("SET character_set_connection=utf8"); mysql_query("SET character_set_client=utf8"); mysql_query("SET names='utf8';"); |
||
gix Profil * |
#7 · Zasláno: 6. 11. 2010, 15:31:01
xmark:
Diky moc, z části to funguje:) Když vložím "žščřďťň" tak mi to zapíše jako => "ľąčřď»ň" Je to problém samotného kódování? Pokud ano, jaké je nejlepší použít? |
||
xmark Profil |
#8 · Zasláno: 6. 11. 2010, 15:35:49
Není to problém samotného kódování.
Musí se shodovat kódování na těchto místech: 1. uvedené kódování v hlavičce stránky 2. skutečné kódování souboru 3. kódování polí tabulky v databázi (teď z hlavy to přesně nevím, ale je tam něco jako utf8-general) 4. kódování v config.php Resp. ne úplně musí, ale když toto všechno bude utf8, tak nebudeš mít problém. |
||
gix Profil * |
#9 · Zasláno: 6. 11. 2010, 15:52:50
Uz mi to funguje. Diky moc za pomoc
|
||
Časová prodleva: 13 let
|
0