Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pole select i sesja
Forum PHP.pl > Forum > Przedszkole
amii
Mam taki fragment kodu. Jak za pomocą sesji dostać się do zaznaczonego pola. W tym przykładzie domyślnie zaznaczane jest pole 5 i to działa bez problemu a np: jeśli użytkownik kliknie 9 i później wróci na stronę chce żeby za pomocą sesji domyślnie była zaznaczona 9.


  1. session_start(); //na samym poczatku pliku
  2.  
  3. //jakis inny nieważny kod
  4.  
  5. for($b=0; $b<24; $b++) { //petla ktora tworzy opcje, 24 to liczba opcji
  6. if ($b==5) $petla .= '<option value="'.$b.'" selected>'.$b.'</option>';
  7. else $petla .= '<option value="'.$b.'">'.$b.'</option>';
  8. }
  9.  
  10. //jakis inny niewazny kod
  11.  
  12. $html .= '<select name="czaspicia" id="czaspicia" class="i1">
  13. '.$petla.' //opcje utworzone z petli
  14.  
  15. </select> godziny';
smietek
Porównujesz $b z tym co masz w sesji (chociaż czy ty to w ogóle gdzieś obsługujesz przez $_POST lub $_GET?), i jeśli obie wartości są sobie równe, dodajesz do option po prostu "selected" (dopisujesz ciąg).
amii
Wielkie dzięki działa smile.gif Teraz jeszcze tylko potrzebuje ustawić domyślne selecty, które są aktywne jeśli użytkownik po raz pierwszy odwiedza stronę i nie ma danych z sesji. Próbowałem tak ale nie działa.

  1. if (!isset($_SESSION['czaspicia'])) $petla .= '<option value="1" selected>1</option>';
  2. for($b=0; $b<99; $b++) {
  3. if ($b==$_SESSION['czaspicia']) $petla .= '<option value="'.$b.'" selected>'.$b.'</option>';
  4. else $petla .= '<option value="'.$b.'">'.$b.'</option>';
  5. }
  6.  
  7. if (!isset($_SESSION['godzina'])) $petla1 .= '<option value="20" selected>20</option>';
  8. for($d=0; $d<24; $d++) {
  9. if ($d==$_SESSION['godzina']) $petla1 .= '<option value="'.$d.'" selected>'.$d.'</option>';
  10. else $petla1 .= '<option value="'.$d.'">'.$d.'</option>';
  11. }


Dla radio działa natomiast:
  1. if ($_SESSION['plec'] != 'k' && $_SESSION['plec'] != 'm') $_SESSION['plec'] = 'm'; //wyjatek na domyslna wartosc pola radio
  2. $plec1 = ($_SESSION['plec'] == 'k' ? "checked" : '');
  3. $plec2 = ($_SESSION['plec'] == 'm' ? "checked" : '');


thek
Ja w formularzach zazwyczaj robię sobie zmienną tablicową, która przechowuje wartości formularza, nazwijmy ją $fields i od razu nadaję wartości domyślne.
$fields = array( 'pole1' => 'default', 'pole2' => 'default' );
Jakiekolwiek działania z użyciem GET lub POST modyfikują mi ją, dzięki czemu zawsze jest aktualna i mogę sobie ją wyświetlać, modyfikować czy inne cuda robić. Takie podejście załatwia mi wiele problemów, w tym z wartościami domyślnymi, rozpoznawaniem inserta od update, dzięki czemu pisze jedną zwartą obsługę forma, niezależnie od tego czy jest to dodawanie czy edycja danych.
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.