Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Powrót do poprzedniej strony (np. w formularzu)
Forum PHP.pl > Forum > PHP
voytass
Witam,

Jak rozwiązać problem powrotu do poprzedniej strony w formularzu.
nadmienie, ze
Kod
history.back()
nie zawsze działa (nie wiem czemu - moze ktos mnie oswieci).
No wiec jak w prosty sposob zrobic powrót.
przykladem moze byc zle wypelniony formularz i prosba o poprawę.

oczywiscie caly formularz jest w php:
1. generowany jest formularz
2. po wyslaniu formularza sa sprawdzane wszystkie pola
3. przy blednym polu zwraca info o bledzie
4. przydaloby sie powrocic i poprawic
....

a z
Kod
history.back()
wyglada to tak, ze po kliknieciu na odnosnik 'powrot i popraw', w ktorym jest powyzszy JS nie nastepuje nic, tzn nadal pozostaje strona z infem o bledzie i odnosnikiem 'powrot i popraw' (wyglada to tak jakby ona sama byla historią).

moze ktos ma prosty pomysl na rozwiazanie 'powrot i popraw' jak i takze na wytlumaczeni dlaczego powyzszy JS nie dziala

pozdrawiam
Modest
proponuje to zrobic w php tak....
Najpierw sprawdzasz, czy dane z formularza sa odpowiednio wpisane...
Jezeli nie, skrypt wyswietla formularz.
Jezeli tak, przechodzisz do dalszej czesci kodu (formularz nie pojawia sie na stronie, bo dane sa ok) i wykorzystujesz wpisane dane....
Jabol
albo za pomocą header
voytass
No i chyba bede musial tak zrobic jak piszesz Modest. Wyswietli sie formularz ze wskazaniem blednych pol.

Headerow raczej nie bede stosowal bo to jest modul do phpnuke

glowie sie jednak teraz dlaczego
Kod
javascript:history.back()
czasem dziala a czasem nie (oczywiscie w polaczeniu z php).
Fo
w php : [php:1:a80a86cb74]echo "<a href="java script:history.go(-1)">cofnij</a>";[/php:1:a80a86cb74]
a moze tak :?: smile.gif
voytass
Cytat
[php:1:cba058da06]echo "<a href="java script:history.go(-1)">cofnij</a>";[/php:1:cba058da06]


tak tez nie dziala. Co ciekawsze w tym samym skrypcie mam dwa miejsca gdzie jest JS w jednym dziala a w tym nie chce. zastanawiam sie czy to nie ma zwiazku z konstrukcja kodu php (np. kolejnosc wywolywania funkcji - bo ten skrypt oparlem na switch i funkcjach)
Fo
to co napisalem pietro wyzej dziala na 100% ... przynajmniej u mnie... zarzuc troszke kodu moze wina jest wlasnie gdzies podrodze ... tylko pamietaj o odpowiednim bbcode smile.gif
voytass
Cytat
to co napisalem pietro wyzej dziala na 100%
100%, a u mnie nie dziala. Po wieeeelokrotnym przeglądaniu kodu dochodze do wniosku, ze problem jest zwiazany z cache przegladarki bo nie moznabylo powrocic do strony, ktora juz raz była wyswietlona - nie sprawdzalem jednak czy jest zapisana w temp-ie.
Przerobilem skrypt i juz pozbylem sie JSa wiec kodu nie mam. Poszukam jednak bo w drugim skrypcie chyba mialem ten sam problem. Jak znajde to nie omieszkam tu wstapic i go pokazac (oczywiscie zgodnie z obowiazujacym bbcode:) ).
lisu
Wlasnie o to chodzi, zeby tak zrobic by u wszystkich dzialalo:

[php:1:64995040dc]<?php
//plik form.php

if ($_POST[wypelnione]=='yeah')
{
if ($dane=='poprawne') //tutaj sprawdzasz poprawnosc danych z forma
{ Header('Location: dziekujemy.php');}
else
{
$fzmienna1=$_POST[zmienna1];
$fzmienna2=$_POST[zmienna2];
//itd
}
}

?>
<form action=form.php METHOD=post>
<input type=hidden name=wypelnione value="yeah">
<input type=text name=zmienna1 value="<?=$fzmienna1 ?>
<!-- itd -->
</form>


Oczywiscie to tylko idea, bo trzeba wyswietlic userowi, ze zle wypelnil, ktore pola zle wypelnil (I np zaznaczyc na czerwono) itp
?>[/php:1:64995040dc]
voytass
i własnie tak zrobiłem - to są proste rzeczy do czasu kiedy wuskakuja takie kwiatki jak z tym niedziałającym JSem.
jakby ktos miał ten sam problem to niech zarzuci troche kodu bo ja jednak nie znalazłem.
Cudi
Mam ten sam problem... i miałem nadzieje że już go rozwiązaliście a tu widze kiszka...

Robie stronke, prosty sposób, dołanczam do każdej stronki nagłówek, właściwy skrypt który ma sie wykonać no i potem stopke. Wygląda to tak:
[php:1:743103b82f]<?php
ob_start();

$pagetitle = 'Kontakt';
$headertitle = 'Formularz kontaktowy';

require('includes/header.php');
require('contact/contact.php');
require('includes/footer.php');

ob_end_flush();
?>[/php:1:743103b82f]
Napisałem formularz kontaktowy, wysyłam, sprawdzam dane, i jak coś jest nie tak wyświetlam komunikat i daje link powrotny zbudowany tak jak pokazaliście wyżej. Klikam na niego i widze dalej to samo, dopiero po odświeżeniu pokazuje sie spowrotem formularz. Może dam kodzik tego formularza:
[php:1:743103b82f]<?php
if(empty($_POST)){
?>
<FORM METHOD="post">
<TABLE CLASS="tab_form">
<TR>
<TD CLASS="td_desc">Temat listu: </TD>
<TD CLASS="td_input"><INPUT TYPE="TEXT" NAME="topic" SIZE="30"></TD>
</TR>
<TR>
<TD CLASS="td_desc">Treść wiadomości: </TD>
<TD CLASS="td_input"><TEXTAREA NAME="content" COLS="45" ROWS="15"></TEXTAREA></TD>
</TR>
<TR>
<TD CLASS="td_desc">&nbsp;</TD>
<TD CLASS="td_input"><INPUT TYPE="SUBMIT" VALUE="Wyślij" CLASS="button" onMouseOver="on_b(this);" onMouseOut="off_b(this);"> <INPUT TYPE="button" VALUE="Anuluj" CLASS="button" onClick="history.back();" onMouseOver="on_b(this);" onMouseOut="off_b(this);"></TD>
</TR>
</TABLE>
</FORM>
<?php
}
else{
require('contact/email.php');

$_POST['topic'] = stripslashes($_POST['topic']);
$_POST['content'] = stripslashes($_POST['content']);

if(smtp_mail('cudik@wp.pl', $_POST['topic'], $_POST['content'])){
echo 'Wiadomość została wysłana!';
}
else{
echo 'Wiadomość nie została wysłana! <A HREF="java script:history.back();">Popraw</A>';
}
}
?>[/php:1:743103b82f]

I naśmieszniejsze jest to że jak odpalam samą strone ze skryptem link powrotny działa, a jak odpalam ze strony w której dołanczam nagłówek i stopke to nie działa. Napoczątku myślałem że to wina ob_start(), ale usunołem i dalej to samo... Czyli pewnie coś mam nie tak w header.php, tylko nie zabardzo wiem czego szukać. Moge liczyć na jakąś podpowiedź ?
[fisher]
Cytat
Cytat
[php:1:ea06187def]echo "<a href="java script:history.go(-1)">cofnij</a>";[/php:1:ea06187def]

tak tez nie dziala. Co ciekawsze w tym samym skrypcie mam dwa miejsca gdzie jest JS w jednym dziala a w tym nie chce. zastanawiam sie czy to nie ma zwiazku z konstrukcja kodu php (np. kolejnosc wywolywania funkcji - bo ten skrypt oparlem na switch i funkcjach)


sam php bezposrednio nie ma wplywu na dzialanie JS'a
chyba ze wygeneruje niepoprawny kod i wtedy cos nie dziala, ale w tym przypadku to raczej wina programisty niz samego php

a wracajac do problemu, sprobuj tak
Kod
<a href="#" onClick="history.go(-1)">back</a>
lisu
Cytat
oczywiscie caly formularz jest w php:
1. generowany jest formularz
2. po wyslaniu formularza sa sprawdzane wszystkie pola
3. przy blednym polu zwraca info o bledzie
4. przydaloby sie powrocic i poprawic
....


Nie rozumiem czegos. Przeciez w sposobie ktory podalem (i ktory stosujesz) niepotrzebny jest powrot.
Co do JS nie mozesz na nim polegac, bo rozne przegladarki roznie sie zachowuja. Niektore trzymaja dane w fromularzu i mozna do nich wrocic inne nie.
michaloo
Kod
javascript:history.back()

moze czegos nie rozumiem ale dla mnie sprawa z niedzialajacym js jest oczywista: naciskajac back/cofnij wraca do wysylania i sprawdzania formularza i skoro tenze jest pusty to kolejy skrypt wyswietla zle wypelnie nie formularza
Cudi
Widze że musze jeszcze raz wytłumaczyć na czym sprawa polega. JS działa poprawnie, ale z jakichś powodów php generuje jeszcze raz to samo, dopiero po odświeżeniu strony pokazuje się to co trzeba. I co najdziwniejsze, w przykładzie który podałem wraca ale generuje jeszcze raz to samo, ale na tej samej stronie mam inny przykład takiego linka i tam już działa poprawnie... Jestem tylko ciekaw o co tak naprawde chodzi smile.gif
voytass
Cytat
Nie rozumiem czegos. Przeciez w sposobie ktory podalem (i ktory stosujesz) niepotrzebny jest powrot.

dobrze kombinujesz smile.gif
oczywiscie zastosowalem inne rozwiazanie ale tylko dlatego aby obejsc problem z JSem. Nie oznacza to jednak ze 'stchorzylem' - okazalo sie ze bez JSa to lepsze rozwiazanie (mozna wskazac dokladne miejsce bledu).
Mimo, ze teraz nie potrzebuje w swoim skrypcie tego typu rozwiazania chcialbym jednak sie dowiedziec czemu tak sie dzieje, ze nie mozna wrocic do okreslonej strony (nie sadze by to byl blad wygenerowania JSa - raczej cos z chachem przegladarki).

a wszystko wyszlo tak: oto link do skryptu - http://www.icons.com.pl/poz_nuke/modules.p...=Firmy&op=dodaj
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.