Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [html]automatyczny 'wstecz' po x sekundach
plurr
post
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


--------------------
Wyobraźnia bez wiedzy może stworzyć rzeczy piękne.
Wiedza bez wyobraźni najwyżej doskonałe.

Albert Einstein
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
kosmowariat
post
Post #2





Grupa: Zarejestrowani
Postów: 235
Pomógł: 17
Dołączył: 18.07.2007
Skąd: Białystok

Ostrzeżenie: (0%)
-----


teoretycznie da się to zrobić w JSie, praktyczniej to zrobić w JSie i używając cookies. Można to również bardzo prosto zrobić w PHP. Którą bramkę wybierasz questionmark.gif
Go to the top of the page
+Quote Post
TomASS
post
Post #3





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


Poszukaj o JavaScript history back:

Np (plik text.html):
  1. <form action="test.html">
  2. <textarea name="raz"></textarea>
  3. <input name="dwa"/>
  4. <input type="submit"/>
  5. </form>
  6. <button onclick="history.back()";>Powrot</button>


Ten post edytował TomASS 30.07.2007, 20:59:45


--------------------
Go to the top of the page
+Quote Post
plurr
post
Post #4





Grupa: Zarejestrowani
Postów: 175
Pomógł: 12
Dołączył: 28.06.2007
Skąd: Bytom

Ostrzeżenie: (0%)
-----


@kosmowariat: to ja wybiore opcje: PHP

@TomASS: chodzi mi dokladnie o auto-wstecz, tak jak to moglem robic w metatagu, jednak przy refresh pola formularza sie resetują, potrzebna mi wiec opcja wstecz ktora zostawia poprzednio wypelnione pola. JS z tego co wdize, oferuje jedynie wlasnoreczne klikanie - dalej, wstecz, przeladuj, nie widze nic o 'samoistnym powrocie' w przypadku np 'pustych pol' - bo o to mi chodzi smile.gif


--------------------
Wyobraźnia bez wiedzy może stworzyć rzeczy piękne.
Wiedza bez wyobraźni najwyżej doskonałe.

Albert Einstein
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Poczytaj o setTimeout() i właśnie history.back() - połączenie tych dwóch powinno zrealizować to, o co Ci chodzi.
Go to the top of the page
+Quote Post
TomASS
post
Post #6





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


Cytat
dokladnie o auto-wstecz

No nie gadaj, że tego nie mogłeś znaleźć: wywoływanie skrytpu java co x sekund tongue.gif

Cytat
, tak jak to moglem robic w metatagu, jednak przy refresh pola formularza sie resetują, potrzebna mi wiec opcja wstecz ktora zostawia poprzednio wypelnione pola. JS z tego co wdize, oferuje jedynie wlasnoreczne klikanie - dalej, wstecz,

To Ci przecież piszę, że history back robi tak jak chcesz - sprawdzałeś w ogóle mój przykład?


P.S. Możesz pisać bardziej "po polsku"? - proszę smile.gif


--------------------
Go to the top of the page
+Quote Post
plurr
post
Post #7





Grupa: Zarejestrowani
Postów: 175
Pomógł: 12
Dołączył: 28.06.2007
Skąd: Bytom

Ostrzeżenie: (0%)
-----


@phpion.com: dzieki, o to mi chodzilo.

@TomASS: oj google to ja non stop mam uzywane tongue.gif Przykladu nie musialem sprawdzac, pisze o auto-wstecz po x sekundach, a Ty podales 'onclick="history.back()"'.


--------------------
Wyobraźnia bez wiedzy może stworzyć rzeczy piękne.
Wiedza bez wyobraźni najwyżej doskonałe.

Albert Einstein
Go to the top of the page
+Quote Post
kosmowariat
post
Post #8





Grupa: Zarejestrowani
Postów: 235
Pomógł: 17
Dołączył: 18.07.2007
Skąd: Białystok

Ostrzeżenie: (0%)
-----


sugeruję jednak użycie php gdyż różne przeglądarki mogą różnie się zachowywać. jedne moga wyświetlać po cofnięciu dane, inne nie. PHP gwarantuje to na 101%
Go to the top of the page
+Quote Post
plurr
post
Post #9





Grupa: Zarejestrowani
Postów: 175
Pomógł: 12
Dołączył: 28.06.2007
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Cytat(kosmowariat @ 30.07.2007, 22:53:32 ) *
sugeruję jednak użycie php gdyż różne przeglądarki mogą różnie się zachowywać. jedne moga wyświetlać po cofnięciu dane, inne nie. PHP gwarantuje to na 101%


a czy moglbys napisac cos wiecej o tym jak to zrobic w php? Jesli chodzi o header() to dziala tak samo jak wczesniejszy metatag (chyba ze jestem niedoinformowany). Zrobilem wiec setTimeout("window.history.back()",3000); i ladnie dziala, tylko faktycznie kiepsko bedzie jesli na innych przegladarkach pola beda puste. Chociaz jestem 100% przekonany, ze ludzie dla ktorych bedzie ta strona uzywaja wylacznie ie.

Ten post edytował plurr 30.07.2007, 22:10:04


--------------------
Wyobraźnia bez wiedzy może stworzyć rzeczy piękne.
Wiedza bez wyobraźni najwyżej doskonałe.

Albert Einstein
Go to the top of the page
+Quote Post
TomASS
post
Post #10





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


Cytat
Przykladu nie musialem sprawdzac, pisze o auto-wstecz po x sekundach, a Ty podales 'onclick="history.back()"'.

Pokazałem Ci funkcję JS która cofa stronę w historii do tyłu, dodatkowo jak wpiszesz w google to co chciałeś to masz komplet informacji - widzisz, zrobiłeś tak jak pisałem i wyszło ok, o to że jedne przeglądarki mogą wyświetlać a inne nie to się nie martw FF, IE i Op działa, także jest git, moim zdaniem nie ma co wyciągać armaty (PHP) na muchy smile.gif

Cytat
sugeruję jednak użycie php gdyż różne przeglądarki mogą różnie się zachowywać. jedne moga wyświetlać po cofnięciu dane, inne nie. PHP gwarantuje to na 101%

A możesz pokazać jak ? dry.gif


--------------------
Go to the top of the page
+Quote Post
Neojawor
post
Post #11





Grupa: Zarejestrowani
Postów: 106
Pomógł: 1
Dołączył: 2.12.2005
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


sprawa jest prosta - na stronie z której masz się cofnąć pobierasz dane z formularza POST-em i wpisujesz
  1. <meta http-equiv=refresh...>

przesyłając te dane metodą GET z powrotem na stronę na której jest formularz. Dajesz tam if-a sprawdzającego, czy GET-em coś przyszło i jeśli tak, to do INPUT-ów wstawiasz
  1. <?php
  2. echo '<INPUT name="imie" value="' . $_GET['stare_imie'] . '" />';
  3. ?>

może trochę więcej pisania niż w JS, ale masz 100%, że dane zostaną w formularzu
Go to the top of the page
+Quote Post
plurr
post
Post #12





Grupa: Zarejestrowani
Postów: 175
Pomógł: 12
Dołączył: 28.06.2007
Skąd: Bytom

Ostrzeżenie: (0%)
-----


TomASS: skoro dziala na tych podstawowych przegladarkach to gitara guitar.gif

Neojawor: metoda ktora podales przydaje sie w edycji danych, wtedy pola sa defaultowo wypelnione, jednak nie sprawdzi sie w przypadku tworzenia nowego pracownika, bo danych takowych nie ma jeszcze w bazie smile.gif Chyba ze cos zle zrozumialem, z rana nie kumaty jestem biggrin.gif

Ten post edytował plurr 31.07.2007, 10:07:25


--------------------
Wyobraźnia bez wiedzy może stworzyć rzeczy piękne.
Wiedza bez wyobraźni najwyżej doskonałe.

Albert Einstein
Go to the top of the page
+Quote Post
kosmowariat
post
Post #13





Grupa: Zarejestrowani
Postów: 235
Pomógł: 17
Dołączył: 18.07.2007
Skąd: Białystok

Ostrzeżenie: (0%)
-----


@tomASS - Neojawor właśnie pokazał jak to zrobić
@plurr - coś nie kumaty jesteś aaevil.gif dane wstawiane jako wartości brane są $_POST'a lub $_GET'a (tak jak w przykładzie) i nikt nie zaczepia o bazy. jeśli poraz pierwszy wyświetlasz formularz zmienne nie są ustawione. dajesz tylko tłumienie błędów i jest git

  1. <INPUT name="imie" value=" <?=@$_GET['stare_imie'];?>" />


Ten post edytował kosmowariat 31.07.2007, 11:03:18
Go to the top of the page
+Quote Post
plurr
post
Post #14





Grupa: Zarejestrowani
Postów: 175
Pomógł: 12
Dołączył: 28.06.2007
Skąd: Bytom

Ostrzeżenie: (0%)
-----


zabraklo by mi miejsca w pasku adresu biggrin.gif ale dobrze znac.. smile.gif


--------------------
Wyobraźnia bez wiedzy może stworzyć rzeczy piękne.
Wiedza bez wyobraźni najwyżej doskonałe.

Albert Einstein
Go to the top of the page
+Quote Post
pe_te
post
Post #15





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 25.02.2008

Ostrzeżenie: (0%)
-----


Witam,
Odświeżam temat... może ktoś raz jeszcze w miare prosto rozpisać automatyczne odświeżanie ale kodem PHP??
Go to the top of the page
+Quote Post
hondek
post
Post #16





Grupa: Zarejestrowani
Postów: 355
Pomógł: 50
Dołączył: 20.08.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


IMHO lepiej po prostu javascriptem sprawdzic czy wszystkie pola formularza zostaly wypelnione, a jezeli nie zostaly to zwrocic false i alert z komunikatem smile.gif po co motac sie z php?


--------------------
przetwornik yt na czasie :)
Go to the top of the page
+Quote Post
likedat
post
Post #17





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.
Go to the top of the page
+Quote Post
gutek84
post
Post #18





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 9.10.2007
Skąd: Morąg

Ostrzeżenie: (0%)
-----


Zawsze dane mozna wrzucic do sesji. np $_SESSION['imie']="jakies_imie" itp. i formularzu <input type="text" name="imie" value="$_SESSION['imie']"> i jezeli nie wypelnisz sesji to na poczatku bedziesz mial zawsze puste pole. Potem tradycyjnie formularzem wysylasz do pliku php i odbierasz $_SESSION['imie']=$_GET['imie]; i jak bedziesz robil np inserty w bazie to tez odwolujesz sie do zmiennej sesyjnej i po klopocie. A z cofaniem to sprobuj <meta http-equiv=refresh content=\"2; URL=java script:history.go(-1)"> - u mnie dzialalo.

Ten post edytował gutek84 2.03.2008, 14:07:47
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 21:07