Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Formy.
Forum PHP.pl > Forum > Przedszkole
krzysiu99995
  1. echo '<form method="post">
  2.  
  3. [Tu coś do postu...]
  4.  
  5. <fieldset class="submit">
  6. <input type="submit" class="input_submit" name="go" value="Go" />
  7. </fieldset>';
  8.  
  9.  
  10. if(isset($_POST['go']))
  11. {
  12. echo 'Tu mam takie coś:
  13. <form method="post">
  14.  
  15. [Tu coś do postu...]
  16.  
  17. <fieldset class="submit">
  18. <input type="submit" class="input_submit" name="ee" value="Go" />
  19. </fieldset>'
  20. if(isset($_POST['ee']))
  21. {
  22. echo 'hi';
  23. }
  24. }


Chodzi o to ze pierwsza funkcja isset działa dobrze, a po kliknięciu drugiej zamiast wyświetlić echo, przechodzi na stronę pierwszej funkcji.
bastard13
brakuje średnika po echo.
Poza tym kod wyglądałby lepiej, gdybyś html'a nie wypisywał za pomocą echo, tylko zamykał i otwierał w odpowiednim miejscu bloki php.
krzysiu99995
Problem w tym że piszę aplikacje pod ipb i muszę wszystko zwracać. Chodzi mi o działanie form, na inne błędy nie patrzcie. snitch.gif
kalmaceta
to na co patrzeć/ pomyśl jak masz 'go' w POST to nie mozesz miec 'ee' - sprawdzasz jedno w drugim
thek
To proste. Masz zagnieżdżone ee w go. Jeśli klikniesz go to pokaże się strona pierwsza ale spełniony będzie warunek go, więcpokaże także ee. Ale gdy klikniesz ee to strona się przeładuje znowu, ale warunek go nie będzie spełnony, więc ee się nie pokaże. Tak więc hi NIGDY się nie pokaże bo niemożliwe jest jednoczesne spełnienie by kliknięte były go i ee. Znaczy jest możliwe, ale opiera się o fałszowanie (właściwie preparowanie) danych wysyłanych do serwera z Twojego kompa. wink.gif Sama przeglądarka nigdy tego nie zrobi. Jeśli chcesz by to zadziałało to musisz sprawdzanie czy jest ee wyrzucić poza nawias fragmentu gdzie sprawdzane jest go. Wtedy sprawdzanie będzie niezależne, a tym samym możliwe do zajścia.
bastard13
Jak dodasz do drugiego formularza:
<input type="hidden" name="go" value="<?php echo $_POST['go']?>" />
to zadziała i wyświetli hi po drugim submicie.

Za drugim razem nie wchodzi ci po prostu do bloku if(isset($_POST['go'])), bo nie przesyłasz tego parametru.
krzysiu99995
To może zadam takie pytanie:

Czy w funkcji:

if(isset($_POST['group'])) {

if(isset($_POST['eh']))
{tu coś}
}

Mogę zrobić następną?
bastard13
if to nie funkcja tylko instrukcja warunkowa. Możesz je zagnieżdżać, ale zbyt duży stopień zagnieżdżenia, to nie jest coś, co powinno się robić.
krzysiu99995
  1. if($_GET['modules'] == leader)
  2. {
  3.  
  4. $this->output = '
  5. // Tu mam różne opcje wyboru i taki przycisk.
  6. <form method="post">
  7. <li>
  8. <input type="submit" name="lid" class="input_submit alt" value="Przejdź" />
  9. </li> </form>
  10. ';
  11.  
  12. if(isset($_POST['lid'])) // Ta instrukcja warunkowa działa dobrze, jak powinna
  13. {
  14. $value = $_POST['groupType'];
  15.  
  16. if($value==fra) {
  17.  
  18. // Mój value == fra i właśnie do tej instrukcji ma mnie przenieść. Problem zaczyna się gdy chcę aby po naciśnicieciu buttona test, wyrzuciło mi te zmienną test. Zamiast tego przenosi mnie do instrukcji if($_GET['modules'] == leader)
  19. $this->output = '
  20. <form method="post">
  21.  
  22. <fieldset class="submit">
  23. <input type="submit" class="input_submit" name="group" value="Test" />
  24. </fieldset>
  25. </form>'; }
  26.  
  27. if(isset($_POST['group']))
  28. {
  29. $this->output = 'test';
  30. }
  31.  
  32.  
  33. }
  34.  
  35.  
  36. }


To mój kod skróciłem go trochę, objaśniłem w komentarzach. Z góry wielkie dzięki.
bastard13
Bo, gdy klikasz test, to if(isset($_POST['lid'])) = false. Przesyłasz tylko $_POST['group'].
Z tego powodu nie wchodzi ci nawet do pierwszego bloku.
Jak nie wiesz o co chodzi to dodaj na początku skryptu var_dump($_POST) powinno ci rozjaśnić sprawę.
Dodaj do drugiego formularza pole:
<input type="hidden" name="lid" value="it_doesnt_matter_what_is_in_here" />
i zadziała.
thek
A ja i kilka osób oprócz mnie Ci piszemy po raz kolejny... Zagnieździłeś za bardzo.
Klikając Test wysyłasz formularz, w którym masz TYLKO input o name = "group" a więc $_POST['lid'] NIE ISTNIEJE a więc ZAPOMNIJ że value kiedykolwiek się ustawi bo ani lid ani groupType tym bardziej nie istnieją a więc if je sprawdzający NIGDY nie będzie spełniony i dlatego nie wychodzi Ci to co chcesz. I Ty się dziwisz, że nie działa Ci? Kompletnie nie rozumiesz logiki działania swojego skryptu i przepływu danych w nim. Na samym początku skryptu zrób sobie
  1. <pre><?php var_dump( $_POST ); ?></pre>
a sam zobaczysz, że masz kompletnie rozwalone dane przesyłane formularzem i niezgodne z tym co myślałeś, że nim idzie.
krzysiu99995
Cytat(bastard13 @ 30.03.2011, 21:20:02 ) *
Bo, gdy klikasz test, to if(isset($_POST['lid'])) = false. Przesyłasz tylko $_POST['group'].
Z tego powodu nie wchodzi ci nawet do pierwszego bloku.
Jak nie wiesz o co chodzi to dodaj na początku skryptu var_dump($_POST) powinno ci rozjaśnić sprawę.
Dodaj do drugiego formularza pole:
<input type="hidden" name="lid" value="it_doesnt_matter_what_is_in_here" />
i zadziała.


  1. <fieldset class="submit">
  2. <input type="submit" class="input_submit" name="group" value="Zapisz zmiany" />
  3. <input type="hidden" name="lid" value="it_doesnt_matter_what_is_in_here" />
  4.  


Zrobiłem tak lecz dalej przenosi do tej pierwszej instrukcji warunkowej.


Cytat(thek @ 30.03.2011, 21:23:47 ) *
A ja i kilka osób oprócz mnie Ci piszemy po raz kolejny... Zagnieździłeś za bardzo.
Klikając Test wysyłasz formularz, w którym masz TYLKO input o name = "group" a więc $_POST['lid'] NIE ISTNIEJE a więc ZAPOMNIJ że value kiedykolwiek się ustawi bo ani lid ani groupType tym bardziej nie istnieją a więc if je sprawdzający NIGDY nie będzie spełniony i dlatego nie wychodzi Ci to co chcesz. I Ty się dziwisz, że nie działa Ci? Kompletnie nie rozumiesz logiki działania swojego skryptu i przepływu danych w nim. Na samym początku skryptu zrób sobie
  1. <pre><?php var_dump( $_POST ); ?></pre>
a sam zobaczysz, że masz kompletnie rozwalone dane przesyłane formularzem i niezgodne z tym co myślałeś, że nim idzie.


W 1 przepływ danym jest okej, świadczy o tym np. to że działają wszystkie zapytania, etc. Zaś w drugim nie ma żadnego przepływu danych, gdyż ma on mnie kierować do funkcji która mi coś wyświetli, a kieruje mnie do rozpoczęcia.
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.