Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Lista rozwijana zapamiętanie wyboru
Forum PHP.pl > Forum > Przedszkole
pietroff
Witajcie,

raczkuję w php i próbuję napisać kalendarz z możliwością wyboru miesięcy. Wszystko działa nawet nieźle tylko chciałbym aby lista rozwijana zapamiętywała wybór i aby ustawiała się automatycznie na miesiąc który jest obecnie. Poniżej kod samej listy:

  1. $MonthNames = array(1=>'Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec','Lipiec','Sierpien','Wrzesień','Październik','Listopad','Grudzień');


  1. <form action="" method="post" class="center">
  2. <h3> Wybierz interesujący Cię miesiąc:&nbsp;&nbsp;&nbsp;
  3. <select name="wybMiesiecy" class="lista-rozwijana" >
  4. <?php
  5. for ($m=1; $m<=(12); $m++){
  6. echo '<option>'.$MonthNames[$m].'</option>';
  7. ?>
  8. </select>
  9. <input type="submit" name="wyslij" class="lista-rozwijana-button" value="Wyświetl wskazany miesiąc" />
  10. </h3>
  11. </form>

gino
to raczej podstawy HTML-a niż php, prawidłowo powinno być:
Kod
<option value="watrosc" selected>nazwa_meisiąca</option>


gino

edit: jak chcesz bez parametru value określić które option ma być selected (wybrane)?
kreatiff
Dodaj w pętli warunek na sprawdzanie liczby porządkowej miesiąca i jeśli się zgadza z bieżącym $m, to go zaznacz:
  1. for ($m = 1; $m <= 12; $m++) {
  2. $selected = $m == date('n') ? ' selected' : '';
  3. echo '<option value="' . $m . '"' . $selected . '>' . $MonthNames[$m] . '</option>';
  4. }
gino
@kreatiff ja rozumiem, że osoba początkująca ale jeśli operuje tablicami, pętlami, to powinna chociaż w podstawowym stopniu opanować podstawy języka, czy instrukcje warunkowe i tag html-a, którym się posługuje, chyba lepiej pobudzić kreatiffność (smile.gif) naprowadzając na problem, niż dać gotowca zwłaszcza w rzeczach tak prostych.

gino
pietroff
Po zmodyfikowaniu kodu niestety ustawia mi się aktualny miesiąc czyli kwiecień ale nie można już zmienić na inny sadsmiley02.gif ciągle wraca do kwietnia sadsmiley02.gif
  1. <form action="" method="post" class="center">
  2. <h3> Wybierz interesujący Cię miesiąc:&nbsp;&nbsp;&nbsp;
  3. <select name="wybMiesiecy" class="lista-rozwijana" >
  4. <?php
  5. for ($m=1; $m<=(12); $m++){
  6. $selected = $m == date('n') ? ' selected' : '';
  7. echo '<option value="' . $m . '"' . $selected . '>' . $MonthNames[$m] . '</option>';
  8.  
  9. }
  10. ?>
  11. </select>
  12. <input type="submit" name="wyslij" class="lista-rozwijana-button" value="Wyświetl wskazany miesiąc" />
  13. </h3>
  14. </form>
gino
robi dokładnie to, co chcesz, przed wysłaniem formularza ustawia aktualny miesiąc. Wybierz innych miesiąc, zrób obsługę w php po wysłaniu formularza i zobaczysz, że wybiera ten miesiąc który chcesz.
Przed tablicą miesięcy wklej ten kod i zobaczysz, że i kod i formularz działają ok. Poczytaj o $_POST:
Kod
if(isset($_POST['wybMiesiecy']))
echo $_POST['wybMiesiecy'];



gino
pietroff
W takiej formie działa bez zarzutu. Czy można tu coś poprawić zmienić? Czy jest dobrze?
  1. <form action="" method="post" class="center">
  2. <h3> Wybierz interesujący Cię miesiąc:&nbsp;&nbsp;&nbsp;
  3. <select name="wybMiesiecy" class="lista-rozwijana" >
  4. <?php
  5. for ($m=1; $m<=(12); $m++){
  6. if(isset($_POST['wybMiesiecy'])){
  7. $selected = $m == $_POST['wybMiesiecy'] ? 'selected' : '';
  8. }else{
  9. $selected = $m == date('n') ? ' selected' : '';}
  10. echo '<option value="' . $m . '"' . $selected . '>' . $MonthNames[$m] . '</option>';
  11.  
  12. }
  13.  
  14. ?>
  15. </select>
  16. <input type="submit" name="wyslij" class="lista-rozwijana-button" value="Wyświetl wskazany miesiąc" />
  17. </h3>
  18. </form>
nospor
Mozna to poprawic. Teraz masz duplikacje w ustawianiu selected i o wiele za duzo logiki w tej banalnej petli FOR

  1. $toSelect = isset($_POST['wybMiesiecy']) ? $_POST['wybMiesiecy'] : date('n');
  2. for ($m=1; $m<=12; $m++){
  3. $selected = $m == $toSelect ? 'selected' : '';
  4. echo '<option value="' . $m . '"' . $selected . '>' . $MonthNames[$m] . '</option>';
  5.  
  6. }

Prawda ze czytelniej?
pietroff
Bardzo dziękuję wszystkim za pomoc smile.gif
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.