Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][PHP]Formy.
krzysiu99995
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 27.11.2010
Skąd: Warszawa

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


  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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
bastard13
post
Post #2





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


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





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 27.11.2010
Skąd: Warszawa

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


Problem w tym że piszę aplikacje pod ipb i muszę wszystko zwracać. Chodzi mi o działanie form, na inne błędy nie patrzcie. (IMG:style_emoticons/default/snitch.gif)
Go to the top of the page
+Quote Post
kalmaceta
post
Post #4





Grupa: Zarejestrowani
Postów: 183
Pomógł: 24
Dołączył: 4.12.2010

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


to na co patrzeć/ pomyśl jak masz 'go' w POST to nie mozesz miec 'ee' - sprawdzasz jedno w drugim
Go to the top of the page
+Quote Post
thek
post
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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. (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
bastard13
post
Post #6





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


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





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 27.11.2010
Skąd: Warszawa

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


To może zadam takie pytanie:

Czy w funkcji:

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

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

Mogę zrobić następną?
Go to the top of the page
+Quote Post
bastard13
post
Post #8





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


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





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 27.11.2010
Skąd: Warszawa

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


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





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


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





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 27.11.2010
Skąd: Warszawa

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


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

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

 



RSS Aktualny czas: 23.08.2025 - 07:48