Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP/include i JavaScript/history.back();
Forum PHP.pl > Forum > Gotowe rozwiązania
JarekM
Cześć.
Poszukuję odpowiedzi na nurtujące mnie pytanie.
Otóż jest kilka formularzy, w których część jest includowana z innego pliku.

Po wypelnieniu formularza i kliknieciu OK nastepuje "action" do
innego pliku w ktorym jest sprawdzana poprawnosc wprowadzonych pól
(select do bazy itp.).

W wypadku kiedy pola nie są poprawne należy wykonać JS zawierający funkcję "history.back()"
(zależy mi na otrzymaniu po powrocie wartości wprowadzonych do formularza).

Wszystko bylo OK, do momentu kiedy nie wywalilem wspólnych elementów do rzeczonego includa.

Zamiast formularza dostaję pustą stronę.
Nie ma komunikatu o blędzie.

Czy includowanie w jakiś sposób zaburza calość koncepcji ?
A może ktoś się spotkal z podobnym problemem i udalo mu się go rozwiązać.

Pozdrawiam
peterj
Można to zrobić bez JavaScriptu. Sprawdzasz czy pola zostały poprawnie wypełnione i jeżeli nie to includuje formularz. W formularzu każde pole powinno mieć wartość
[php:1:905361fbdf]
<?php print("$nazwa_tego_pola") ?>[/php:1:905361fbdf]
Całe pole powinno wyglądać tak:
Kod
<input TYPE="text" name="nazwa_pola" value="<?php print("$nazwa_tego_pola") ?>">



w ten sposób jezeli dane nie zostaną wprowadzone poprawnie zostanie zincludowny formularz i wartości podanych pól będą z powrotem w formularzu.
JarekM
Cytat
Można to zrobić bez JavaScriptu.  
[...]
Albo się nie zrozumielismy, albo ja nie rozumie odpowiedzi smile.gif)

Action formularza wywoluje calkowicie inny plik.
I w tym pliku sprawdzam wartości, po rzeczytaniu ich z tablicy $_REQUEST.

Dlatego chcę się cofnąć w historii.
Zapewne można by bylo to zrobić poprzez wywolanie header z odpowiednimi parametrami, ale wymaga to przeczytania dużej ilości pól i podstawienia ich spowrotem do formularza.

Przy zalozeniu ze ten formularz na poczatku jest wypelniany polami pobranymi z bazy trzeba by tu dodatkowo postawić warunki.

Problem polega na tym, dlaczego include powoduje takie zachowanie
milist
Temat dawno założony, ale aby zostało dla potomności (bo sam sie właśnie borykałem z tym problemem).

taką sytuacje rozwiązują poprostu "dwa kroki wstecz", czyli history.go(-2) w JS
mhmichalh
Prosze oto gotowy sktypt, ktory posiada taka funkcja jaka chciales/as:

plik index.php czyli strona na ktorej jest includowany formularz
Kod
<BR><html><head><BR><title>Przyklad tego formularza</title><BR></head><body><BR><?php<BR>include("forumlarz.php"); #includuje formularz<BR> ?><BR></body><BR></html><BR>





plik forumlarz.php czyli formularz ktory jest includowany
Kod
<BR><html><head><BR><title>Przyklad tego formularza</title><BR></head><body><BR><?php <BR>echo '<form action="sprawdz.php" method="post"><input type="text" name="nic" readonly="readonly" value="tekst" />
<input class="wyglad" type="text" name="pole1" value="'.$_POST['pole1'].'" />
<input type="submit" value=" Sprawdz " /></form>';  #powoduje wyswietlenie pola z tekstem ktory czeba przepisac, pola na wpisanie tekstu i przycisku, jesli chodzi o ten styl to to zostaw tak jak jest.<BR>?><BR></body><BR></html><BR>
plik sprawdz.php czyli skrypt sprawdzajacy dobrze wpisano fomularz
Kod
<BR><html><head><BR><style><BR>.wyglad {<BR> border:solid;<BR> border: 3px;<BR> background-color: #FF9999;<BR> border-top-width: 3px;<BR> border-right-width: 3px;<BR> border-bottom-width: 3px;<BR> border-left-width: 3px;<BR> border-top-style: solid;<BR> border-right-style: solid;<BR> border-bottom-style: solid;<BR> border-left-style: solid;<BR>}<BR></style><BR><title>Przyklad tego formularza</title><BR></head><body><BR><?php <BR>if($_POST['pole1'] == 'tekst') #warunek czy dobrze przepisales tekst<BR>{<BR>  echo "dobrze przepisales tekst";<BR>}<BR>else<BR>{<BR>echo 'zle przepisales tekst

';<BR>include("forumlarz.php"); #tutaj jest uzywany styl do pola "pole1", ten styl wyswietla to pole rózowe, z czerwona ramka<BR>}<BR>?><BR></body><BR></html><BR>


Pryzklad dzialania

Mam nadzieje ze wszystko jest zrozumiale,  jak chcesz o cos pytac to pisz na mail: harmichal@gmal.com




P.s ostatnio ludzie twierdza ze młodzesz tylko gra na komputerach, a ja chcałem powiedzec  ze tak nie jest. Dowodem na to jestem np. ja (nie zebym sie chwalił ;>), mimo ze mam tylko 13lat to zrobilem ten skrypt.
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-2024 Invision Power Services, Inc.