Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Lista rozwijana i zapamiętanie wyboru.
Szunaj85
post
Post #1





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Witam,

Mam formularz i listę rozwijaną.
Czy da się za pomocą metody post zapamiętać wybór, tak aby przy weryfikacji lub po wysłaniu nie powracał do pierwszej pozycji?

Kod
<form name="form" action="test.php" method="post">
<select name="test">
    <option value="aaa">aaa</option>
    <option value="bbb">bbb</option>
    <option value="ccc">ccc</option>
    <option value="ddd">ddd</option>
    <option value="eee">eee</option>
</select>
<input type="submit" value="Wyślij" />
</form>


Ten post edytował Szunaj85 9.10.2012, 16:36:19
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 565
Pomógł: 6315
Dołączył: 27.12.2004




Oczywiście. W zależności od wartości w post poprostu zaznaczaj od razu dany option
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


  1. function checkSelected($fieldValue, $selectName) {
  2. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  3. if ($fieldValue == $_POST[$selectName]) echo ' selected';
  4. }
  5. }


  1. <form action="form" action="test.php" method="post">
  2. <select name="test">
  3. <option value="aaa" <?php checkSelected('aaa', 'test'); ?>>aaa</option>
  4. <option value="bbb">bbb</option>
  5. <option value="ccc">ccc</option>
  6. <option value="ddd">ddd</option>
  7. <option value="eee">eee</option>
  8. <input type="submit" value="Wyślij" />
  9. </form>


Coś w tym stylu.
Go to the top of the page
+Quote Post
bostaf
post
Post #4





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

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


Cytat(Szunaj85 @ 9.10.2012, 17:05:42 ) *
Czy da się za pomocą metody post zapamiętać wybór, tak aby przy weryfikacji lub po wysłaniu nie powracał do pierwszej pozycji?

Tak jak napisali koledzy, da się. Ale się nie przyzwyczajaj. Już niedługo zadasz pytanie "co zrobić żeby formularz się nie submitowal przy odświeżaniu strony, żeby dane dwa razy do bazy nie leciały?", na co odpowiedzią będzie PRG, czyli zmienna POST = null przed wyświetleniem treści. Od razu zacznij kombinować z zapamiętywaniem w sesji lub ciastku.
Go to the top of the page
+Quote Post
Szunaj85
post
Post #5





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Cytat(bostaf @ 9.10.2012, 21:33:41 ) *
Tak jak napisali koledzy, da się. Ale się nie przyzwyczajaj. Już niedługo zadasz pytanie "co zrobić żeby formularz się nie submitowal przy odświeżaniu strony, żeby dane dwa razy do bazy nie leciały?", na co odpowiedzią będzie PRG, czyli zmienna POST = null przed wyświetleniem treści. Od razu zacznij kombinować z zapamiętywaniem w sesji lub ciastku.
W zasadzie do tej pory u mnie listy rozwijane działały na sesjach.
Jednak problem jest taki, że działają do czasu aż zostanie wciśnięty przycisk wyślij czyli formularz zostanie wysłany wtedy traci te dane i wyświetla pierwsze pole z listy.
Myślałem, że post może być rozwiązaniem.
Go to the top of the page
+Quote Post
!*!
post
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(bostaf @ 9.10.2012, 21:33:41 ) *
Tak jak napisali koledzy, da się. Ale się nie przyzwyczajaj. Już niedługo zadasz pytanie "co zrobić żeby formularz się nie submitowal przy odświeżaniu strony, żeby dane dwa razy do bazy nie leciały?", na co odpowiedzią będzie PRG, czyli zmienna POST = null przed wyświetleniem treści. Od razu zacznij kombinować z zapamiętywaniem w sesji lub ciastku.


A jaki miałby w tym cel, aby zapamiętywać cokolwiek w ciastku lub sesji? Po poprawnym wysłaniu formularza powinno lecieć przekierowanie.
Go to the top of the page
+Quote Post
bostaf
post
Post #7





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

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


Cytat(!*! @ 11.10.2012, 18:10:14 ) *
A jaki miałby w tym cel, aby zapamiętywać cokolwiek w ciastku lub sesji? Po poprawnym wysłaniu formularza powinno lecieć przekierowanie.

Zrozumiałem, że po wysłaniu (i przekierowaniu) na liście rozwijalnej ma być wybrana opcja zaznaczona przed wysłaniem. Czyli trzeba wybraną opcję jakoś zapamiętać, i na pewno nie w POST, bo po przekierowaniu POSTa już nie będzie. Czyli zostaje get, plik, baza, ciastko, sesja. Pierwsze trzy odpadają (jak dla mnie) bo są zbyt toporne do tego celu, czyli zostają ciastko i sesja - stworzone dokładnie w tym celu: do zapamiętywania zmiennych użytkownika. No nie?
Go to the top of the page
+Quote Post
Szunaj85
post
Post #8





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Kogo tu posłuchać? (IMG:style_emoticons/default/ohmy.gif)
Jak wcześniej już pisałem u mnie sesje działają do czasu aż zostanie wciśnięty przycisk wyślij czyli formularz zostanie wysłany wtedy traci te dane.
Zauważyłem, że likwiduje ją ten kawałek kodu
  1. $_SESSION = $POST;
znajdujący się w warunku if gdy wiadomość wysłana. Da się ją jakoś uratować?
Go to the top of the page
+Quote Post
!*!
post
Post #9





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(Szunaj85 @ 12.10.2012, 11:30:27 ) *
Kogo tu posłuchać? (IMG:style_emoticons/default/ohmy.gif)
Jak wcześniej już pisałem u mnie sesje działają do czasu aż zostanie wciśnięty przycisk wyślij czyli formularz zostanie wysłany wtedy traci te dane.
Zauważyłem, że likwiduje ją ten kawałek kodu
  1. $_SESSION = $POST;
znajdujący się w warunku if gdy wiadomość wysłana. Da się ją jakoś uratować?


A że tak zapytam, po co Ci te informacje po wysłaniu formularza?

  1. if(isset($_POST))
  2. {
  3. $_SESSION = $_POST;
  4. }


Taki warunek postaw, bo teraz po wysłaniu jest kasowane, czyli POST zwraca null.

Ten post edytował !*! 12.10.2012, 11:24:00
Go to the top of the page
+Quote Post
bostaf
post
Post #10





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

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


Cytat(Szunaj85 @ 12.10.2012, 11:30:27 ) *
Kogo tu posłuchać? (IMG:style_emoticons/default/ohmy.gif)

Wszystkich (IMG:style_emoticons/default/smile.gif) I poskładać do kupy wszystkie informacje (IMG:style_emoticons/default/smile.gif)

Cytat(Szunaj85 @ 12.10.2012, 11:30:27 ) *
Jak wcześniej już pisałem u mnie sesje działają do czasu aż zostanie wciśnięty przycisk wyślij czyli formularz zostanie wysłany wtedy traci te dane.

Eeee, coś kłamiesz. Pewnie zapomniałeś na samym początku strony dać session_start().

No to masz gotowca, skleconego z tego co koledzy już napisali.
  1. <?php
  2. session_start(); // obowiązkowo na samym początku strony
  3. if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['test']))
  4. {
  5. $session['option_test'] = $_POST['test'];
  6. }
  7. function check_selected($field_value)
  8. {
  9. if($field_value === $_SESSION['option_test'])
  10. {
  11. echo ' selected';
  12. unset($_SESSION['option_test']);
  13. }
  14. }
  15. ?>
  16. <form name="form" action="test.php" method="post">
  17. <select name="test">
  18. <option value="aaa" <?php check_selected('aaa');?>>aaa</option>
  19. <option value="bbb" <?php check_selected('bbb');?>>bbb</option>
  20. <option value="ccc" <?php check_selected('ccc');?>>ccc</option>
  21. <option value="ddd" <?php check_selected('ddd');?>>ddd</option>
  22. <option value="eee" <?php check_selected('eee');?>>eee</option>
  23. </select>
  24. <input type="submit" value="Wyślij" />
  25. </form>


Ten post edytował bostaf 12.10.2012, 19:53:50
Go to the top of the page
+Quote Post
Szunaj85
post
Post #11





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Cytat
Eeee, coś kłamiesz.
Tylko po co miałbym to robić?
Cytat
Pewnie zapomniałeś na samym początku strony dać session_start().
Absolutnie nie. (IMG:style_emoticons/default/snitch.gif)
Dzięki za pomoc, na szczęście udało mi się rozwiązać problem, który rozwiązałem w inny sposób.
Go to the top of the page
+Quote Post
bostaf
post
Post #12





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

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


Cytat(Szunaj85 @ 14.10.2012, 19:22:17 ) *
Tylko po co miałbym to robić?

Żarcik, zapomniałem dać ";)" (IMG:style_emoticons/default/wink.gif)

Cytat(Szunaj85 @ 14.10.2012, 19:22:17 ) *
Dzięki za pomoc, na szczęście udało mi się rozwiązać problem, który rozwiązałem w inny sposób.

Jak? Pokaż nam, nie po to się dzielimy z Tobą wiedzą i pomysłami, żebyś nas spławiał zwykłym "udało mi się".
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: 17.02.2026 - 07:13