Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 175 Pomógł: 12 Dołączył: 28.06.2007 Skąd: Bytom Ostrzeżenie: (0%)
|
zwykle mialem np "<meta http-equiv=refresh content=\"2; URL=...>" ale tu chodzi o konkretny przypadek.
Mam formularz w ktorym wpisuje dosc sporo danych, jesli ktores pole jest puste, trzeba to poprawic. W przypadku opcji refresh pola formularza sie automatycznie czyszcza, jesli zas klikne wstecz na przegladarce pola formularza ktore juz wpisalem dalej sa wypelnione. Chcialbym wiec sie dowiedizec czy jest jakas opcja zamiast refresh to wstecz, aby po tych paru sekundach bylo automatyczne przekierowanie. Szukalem na google i tutaj w archiwum, ale nie znalazlem, probowalem tez wpisywac back i previous, jednak nie dzialaja. Ten post edytował plurr 30.07.2007, 19:14:20 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 1 Dołączył: 1.03.2008 Ostrzeżenie: (0%)
|
Kiedys napisałem klasę obsługującą formularze, może nie jest za długa na to forum [;
CODE <?php class FormGenerator { private $fields; private $action; private $method; private $name; private $error = false; private $email; private $vcode; private $update; private $userId; function __construct($name,$action,$method,$update=false,$userId=0) { $this->name = $name; $this->action = $action; $this->method = $method; $this->update = $update; $this->userId = $userId; } function addField($label, $name, $type, $value, $style, $required ,$separator = "") { $this->fields[$label][$name]['name'] = $name; $this->fields[$label][$name]['type'] = $type; $this->fields[$label][$name]['value'] = $value; $this->fields[$label][$name]['style'] = $style; $this->fields[$label][$name]['separator'] = $separator; $this->fields[$label][$name]['required'] = $required; } function getSqlQuery($tableName,$vcode = true) { $query = "INSERT INTO ".$tableName." SET "; $password = ""; if (!isset($_POST[$this->name])) $postData = $_SESSION[$this->name]; else $postData = $_POST[$this->name]; foreach ($this->fields as $description => $fields) { foreach ($fields as $fieldName => $value) { if ($value['type'] == "password") { if (!empty($password)) continue; else { $postData[$value['name']] = md5($postData[$value['name']]); $password = "set"; } } if ($value['name'] == 'email') { $this->email = $postData[$value['name']]; $this->vcode = md5(time()); if ($vcode == true) $parameters[] = 'vcode="'.$this->vcode.'"'; } $parameters[] = $value['name']."=\"".htmlspecialchars(trim($postData[$value['name']]))."\""; } } $query .= implode(", ",$parameters); return $query; } function verifyData() { $emptyFields = false; $formData = $_POST[$this->name]; foreach ($formData as $field => $value) { if (empty($value)) $emptyFields[]=$field; } if ($emptyFields != false) $this->modifyFields($emptyFields); } function modifyFields($emptyFields) { $password = ''; foreach($this->fields as $description => &$row) { foreach ($row as $field => &$value) { if (in_array($value['name'],$emptyFields) && $value['required'] == true) { $value['style'] .= "; border: 1px solid #ff0000;"; if ($this->error == false) $this->error = ""; $this->error[] = '<b>Błąd:</b> Nie wszystkie wymagane pola zostały wypełnione.<br />'; } else { if ($value['name'] == 'email') { $database = new Database(DATABASE_NAME); $database->executeQuery("select userId from users where email=\"".$_POST[$this->name]['email']."\""); if ($database->getNumRows() > 0) $this->error[] = "<b>Błąd:</b> wpisany adres istnieje w naszej bazie danych.<br />"; } if ($value['type'] != 'password') $value['value'] = htmlspecialchars(trim($_POST[$this->name][$value['name']])); else { if (!empty($password)) { if ($password != $_POST[$this->name][$value['name']]) $this->error[] = "<b>Błąd:</b> Wpisane hasła się nie zgadzają.<br />"; if (strlen($password) < 5) $this->error[] = "<b>Błąd:</b> Hasło jest krótsze, niż 5 znaków.<br />"; } else { $password = $_POST[$this->name][$value['name']]; } } } } } if (is_array($this->error)) $this->error = array_unique($this->error); } function isError() { if (!isset($_POST["formSent"])) return true; elseif ($this->error == false) return false; else return true; } function getError() { if ($this->error == false) return false; else { $this->error = "<p class='error'>".implode("",$this->error)."</p>"; return $this->error; } } function getName() { return $this->name; } function getEmail() { return $this->email; } function getVcode() { return $this->vcode; } function printForm() { echo("<form action='".$this->action."' method='".$this->method."'>\n"); echo("<table border='0' cellspacing='2' cellpadding='0' width='500'>\n"); echo("<input type='hidden' name='formSent' value='true'>"); foreach ($this->fields as $key => $value) { echo("<tr>\n"); echo("<td align='right'>".$key."</td>\n"); echo("<td>\n"); foreach($value as $field => $options) { echo("<input type='".$options['type']."' name='".$this->name."[".$options['name']."]' value=\"".$options['value']."\" style='".$options['style']."'>".$options['separator']."\n"); } echo("</td>\n"); echo("</tr>\n"); } echo("<tr><td></td><td align='left'><input type='submit' value='Wyślij' style='background-color: #000;color: #fff;font-weight: 700;border: 3px solid #000;'></td></tr>\n"); echo("</table>\n"); echo("</form>\n"); } } ?> Wykorzystywałem ją tak: Kod $form = new FormGenerator("createaccount","create_account.php","POST"); $form->addField("Imię","fname","text","","width: 300px", true); a później: Kod if (isset($_POST['formSent'])) { $form->verifyData(); } if ($form->isError() != false) { echo($form->getError()); $form->printForm(); } Nie jest to może dzieło, ale powinno zadziałać [; Jeśli chodzi o JS, to zbyt łatwo go wyłączyć, aby móc na nim polegać, akurat w tym przypadku. |
|
|
|
plurr [html]automatyczny 'wstecz' po x sekundach 30.07.2007, 19:12:48
kosmowariat teoretycznie da się to zrobić w JSie, praktyczniej... 30.07.2007, 19:51:49
TomASS Poszukaj o JavaScript history back:
Np (plik text... 30.07.2007, 20:59:22
plurr @kosmowariat: to ja wybiore opcje: PHP
@TomASS: c... 30.07.2007, 21:11:36
phpion.com Poczytaj o setTimeout() i właśnie history.back() -... 30.07.2007, 21:16:09
TomASS Cytatdokladnie o auto-wstecz
No nie gadaj, że tego... 30.07.2007, 21:27:47
plurr @phpion.com: dzieki, o to mi chodzilo.
@TomASS: ... 30.07.2007, 21:38:09
kosmowariat sugeruję jednak użycie php gdyż różne przeglądarki... 30.07.2007, 21:53:32 
plurr Cytat(kosmowariat @ 30.07.2007, 22:53... 30.07.2007, 22:04:46
TomASS CytatPrzykladu nie musialem sprawdzac, pisze o aut... 30.07.2007, 23:08:59
Neojawor sprawa jest prosta - na stronie z której masz się ... 31.07.2007, 01:07:29
plurr TomASS: skoro dziala na tych podstawowych przeglad... 31.07.2007, 10:05:22
kosmowariat @tomASS - Neojawor właśnie pokazał jak to zrobić
@... 31.07.2007, 11:02:49
plurr zabraklo by mi miejsca w pasku adresu ale dobrze ... 31.07.2007, 15:15:44
pe_te Witam,
Odświeżam temat... może ktoś raz jeszcze w ... 2.03.2008, 11:47:28
hondek IMHO lepiej po prostu javascriptem sprawdzic czy w... 2.03.2008, 11:56:00
gutek84 Zawsze dane mozna wrzucic do sesji. np $_SESS... 2.03.2008, 14:03:00 ![]() ![]() |
|
Aktualny czas: 13.06.2026 - 06:11 |