Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zapamiętanie wyboru w polu select
Forum PHP.pl > Forum > Przedszkole
andyet
Witam, mam następujący problem. Mam pole SELECT w formularzu do którego ładowana jest data z bazy danych. Niestety nie zapamiętuje mi ostatnio wybranej daty, opcji. Po wykonaniu obliczenia wartość w formularzu powraca do domyślnej. Znalazłem posty na ten temat na forum lecz nie mogę sobie z tym poradzić. Proszę o pomoc. Kod do formularzu:

  1. $data_z_bazy = mysql_query("SELECT DISTINCT Data_losowania FROM wyniki_losowan ORDER BY Data_losowania ASC");
  2. echo "Data od<form method='GET'><select name='Data'>";
  3. while($wyswietl = mysql_fetch_assoc($data_z_bazy)) {
  4. echo "<option>".$wyswietl['Data_losowania']."</option>";
  5. }
  6. echo "</select>";
Ilware
jeżeli chodzi Ci o to żeby po wykonaniu jakiś obliczeń na innych stronach raz pobrana data była wyświetlana, to zapisz ją w zmiennej $_SESSION albo w ciasteczku
Vhaeraun
Ciężko wywnioskować o co chodzi w Twoim poście :
Cytat(andyet @ 3.04.2011, 22:08:16 ) *
Niestety nie zapamiętuje mi ostatnio wybranej daty, opcji. Po wykonaniu obliczenia wartość w formularzu powraca do domyślnej.

Po wykonaniu jakich obliczeń jakie wartości nie są zapamiętywane ?
Jeśli chcesz, żeby coś z listy rozwijanej było zaznaczone to używaj <option selected="selected"> ale nie wiem czy o to Ci chodzi ?
Trochę więcej informacji podaj albo więcej kodu.
Turson
Dodaj

$_SESSION["data_losowania"] = $wyswietl['Data_losowania'];

potem wywołując sesję wywołasz zmienną
andyet
Mam formularz, w którym jestem "Data od" i "Data do". Po wybraniu zakresu i kliknięciu na button "Pokaż" wykonane zostaje obliczenie i wyświetlony wynik. Chodzi mi o to, że po przeładowaniu strony wartość w formularzu zostaje ustawiona na domyślną wartość, a nie na wartość, którą wybrałem. Np. domyślnie jest 2011-02-02, wybieram sobie zakres taki Data_od: 2011-02-04, Data_do 2011-02-08 i klikam "Pokaż. Po kliknięciu wynik zostaje wyświetlony a wartości w formularzu powracają do 2011-02-02, a chciałbym aby zostały daty wybrane przez mnie czyli Data_od: 2011-02-04, Data_do 2011-02-08. Mam nadzieję, że teraz jako tako napisałem smile.gif.
  1. connection();
  2. $data_z_bazy = mysql_query("SELECT DISTINCT Data_losowania FROM wyniki_losowan ORDER BY Data_losowania ASC");
  3. echo "Data od<form method='GET'><select name='Data'>";
  4. while($wyswietl = mysql_fetch_assoc($data_z_bazy)) {
  5. echo "<option>".$wyswietl['Data_losowania']."</option>";
  6. }
  7. echo "</select>";
  8.  
  9. $data_z_bazy = mysql_query("SELECT DISTINCT Data_losowania FROM wyniki_losowan ORDER BY Data_losowania ASC");
  10. echo "<br>Data do<br><input type=submit value='Pokaż'><br><select name='Data2'>";
  11. while($wyswietl = mysql_fetch_assoc($data_z_bazy)) {
  12. echo "<option>".$wyswietl['Data_losowania']."</option>";
  13. }
  14. echo "</select></form>";


selected="selected" właśnie o coś takiego mi chodzi, ale w moim przypadku to nie działa.
Vhaeraun
5-tą linijkę rozbuduj o coś takiego :

  1. echo "<option ";
  2. if(isset($_GET['Data']) && $_GET['Data']==$wyswietl['Data_losowania'])
  3. {echo "selected=\"selected\">";}
  4. echo ">".$wyswietl['Data_losowania']."</option>";


I podobnie zrób dla "Data do".

Oczywiście można to dać w jednej linijce ale dałem tak, żeby było czytelniej.
Pisane z głowy, więc może nie działać, ale ogólna idea jest taka:
Jak wyślesz formularz, to w zmiennych $_GET['Data'] oraz $_GET['Data2'] będziesz miał wartości daty początku i końca. Musisz sprawdzić, czy te zmienne są zainicjalizowane, a następnie dla każdego rekordu z bazy porównać datę, którą wyciągnąłeś z tą, którą masz w zmiennych _GET. Jeżeli są takie same, to dołączasz do pola formularza atrybut selected="selected".


EDIT: Poprawiłem błędy w kodzie tongue.gif
andyet
Ok. Dziękuje za pomoc smile.gif, jeszcze nie działa idealnie jak bym chciał, ale już wiem jak ma to wyglądać i sprawdzać.
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.