Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Automatyczne wybranie pozycji z selecta na podstawie zmiennej
Forum PHP.pl > Forum > Przedszkole
Andrzej20
Witam

Szukałem odpowiedzi na tym forum, ale nie znalazłem. Mam zmienną, w która dynamicznie wybiera miesiąc z bazy, np:
  1. <?php
  2. $miesiace = 02; // w tym przypadku jest to luty
  3. ?>


Mam rozwijaną listę <select>, w której wypisuję miesiące z tablicy $liczbowo:
  1. <?php
  2. $liczbowo = array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
  3. ?>

Moje pytanie brzmi: jak zmusić pole, żeby dodało parametr "selected" do tej opcji <option>, której wartość zawiera zmienna?
misieq
Niestety, 12 ifów :|
MrMag
mozesz uzyc tez javascriptu

  1. document.forms['form'].elements['naza'].selectedIndex = liczba
Andrzej20
Kurcze, nawet i to mi coś nie chce działąć, chyba jestem za cienki w te klocki... Zrobiłem coś takiego:

  1. <?php
  2. echo '<select class="register_select" name="miesiace">';
  3.  
  4. if ($miesiace="01") {
  5. echo '<option selected="selected">Styczeń</option>';
  6. echo '<option>Luty</option>'; 
  7. echo '<option>Marzec</option>'; 
  8. echo '<option>Kwiecień</option>'; 
  9. echo '<option>Maj</option>'; 
  10. echo '<option>Czerwiec</option>'; 
  11. echo '<option>Lipiec</option>'; 
  12. echo '<option>Sierpień</option>'; 
  13. echo '<option>Wrzesień</option>'; 
  14. echo '<option>Październik</option>'; 
  15. echo '<option>Listopad</option>'; 
  16. echo '<option>Grudzień</option>'; 
  17. }
  18.  
  19. if ($miesiace="02") {
  20. echo '<option>Styczeń</option>';
  21. echo '<option selected="selected">Luty</option>'; 
  22. echo '<option>Marzec</option>'; 
  23. echo '<option>Kwiecień</option>'; 
  24. echo '<option>Maj</option>'; 
  25. echo '<option>Czerwiec</option>'; 
  26. echo '<option>Lipiec</option>'; 
  27. echo '<option>Sierpień</option>'; 
  28. echo '<option>Wrzesień</option>'; 
  29. echo '<option>Październik</option>'; 
  30. echo '<option>Listopad</option>'; 
  31. echo '<option>Grudzień</option>'; 
  32. }
  33. ........itd
  34. ?>

Mimo tego, wciąż mam wybrany ten sam miesiac, czyli Grudzień. sad.gif
MrMag
porownanie to == a nie =

zapewne nieuwaga smile.gif
Andrzej20
Niestety, próbowałem też == ale nie działa, po prostu nie wiem co jest... Dawałem też elseify, poza pierwszym ifem - też nic.
misieq
Poza tym nie rób ifa przed wyświetlaniem miesięcy! Kodu Ci powstanie co niemiara! biggrin.gif
Lepiej tak:


<option name="01" <? if ($miesiace == "01") echo "selected";?>>Styczeń</option>
<option name="02" <? if ($miesiace == "02") echo "selected";?>>Luty</option>
...
...

Jesli nie działa coś, to daj troszkę więcej kody, może pomożemy.
skowron-line
  1. <option name="01" <? if ($miesiace == "01") echo "selected";?>>Styczeń</option>
  2. <option name="02" <? if ($miesiace == "02") echo "selected";?>>Luty</option>

jesli chcesz tak robic to proponuje petle i bedzie malo kodu
lopik
  1. <?php
  2. $m = array(1=>'styczen', 'luty', 'marzec', 'kwiecien', 'maj', 'czerwiec', 'lipiec', 'sierpien', 'wrzesien', 'pazdzernik', 'listopad', 'grudzien');
  3.  
  4. echo '<select name="miesiac">';
  5.  
  6. foreach ($m as $key => $value)
  7. {
  8. // bedzie zaznaczony pazdziernik
  9. if ($key == 10) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  10.  
  11. echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  12. }
  13.  
  14. echo '</select>';
  15. ?>


questionmark.gif
Andrzej20
Zrobiłem tak, nie wiem czy dobrze:
  1. <?php
  2. $m = array(1=>"Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień");
  3.  
  4. echo '<select name="miesiac" class="register_select">';
  5.  
  6. foreach ($m as $key => $value) { 
  7.  if ($key == 01) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  8.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  9.  if ($key == 02) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  10.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  11.  if ($key == 03) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  12.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  13.  if ($key == 04) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  14.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  15.  if ($key == 05) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  16.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  17.  if ($key == 06) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  18.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  19.  if ($key == 07) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  20.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  21.  if ($key == 08) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  22.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  23.  if ($key == 09) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  24.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  25.  if ($key == 10) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  26.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  27.  if ($key == 11) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  28.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  29.  if ($key == 12) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  30.  echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  31. }
  32.  
  33. echo '</select>';
  34. ?>

No i cóż, miesiące wypisuje oczywiście, ale nie wybiera tego którey był w zmiennej $miesiace - no bo i na jakiej podstawie? Widze ze nie ma tu żadnego odniesienia do niej... Wstawiałem też
  1. <?php
  2. if ($key == $miesiace)
  3. ?>

ale bez zmian.

Doszedłem do wniosku że nie jest to aż tak palący problem, ponieważ pojawił się kolejny, który ma większy priorytet. Tylko nie wiem, czy mogę go opisać tutaj, czy w nowym topicu, bo dotyczy on wypisywania z bazy danych?
lopik
Ale co ty robisz ? blink.gif

Ja Ci podałem już gotowca!

Dajesz tylko tutaj:
  1. <?php
  2. // pod zmienna $miech podstaw jakas liczbe miesiaca od 1 do 12
  3. if ($key == $miech) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  4. ?>


I jesli zmienna $miech będzie miała liczbę:
1 to styczen bedzie zaznaczony
2 to luty
3 marzec
itd.

I tyle, a nie 12 if'ów :|


W każdym razie, u mnie to działa.
Andrzej20
Ale ze mnie lama... Racja, działa po podstawieniu liczby (wybiera ten miesiac któremu odpowiada liczba), tylko nie wiem czemu coś sie krzaczy po podstawieniu mu zmiennej $miesiace. Wygląda ona tak:
  1. <?php
  2. $miesiace = substr($data_ur, 5, 2);
  3. ?>

Wyciąga ona miesiac z pola datetime w bazie, i kiedy robię echo, to elegancko wypisuje, a w tej pętli juz nie chce działąć. Niestety, jestem jeszcze dosyć zielony sad.gif
lopik
  1. <?php
  2. $miesiace = substr($data_ur, 5, 2);
  3.  
  4. $m = array(01=>'styczen', 'luty', 'marzec', 'kwiecien', 'maj', 'czerwiec',
  5.  'lipiec', 'sierpien', 'wrzesien', 'pazdzernik', 'listopad', 'grudzien');
  6.  
  7. echo '<select name="miesiac">';
  8. foreach ($m as $key => $value)
  9. {
  10. if ($key == $miesiace) {$sel = 'selected="selected"'; } else { $sel = NULL; }
  11. echo '<option name="'.$key.'", '.$sel.'>'.$value.'</option>';
  12. }
  13. echo '</select>';
  14. ?>
Andrzej20
Alleluja!

Jesteś mistrzem snitch.gif Wielkie dzięki za cierpliwość i poświęcony czas, mam nadzieję że kiedyś będę na tyle obcykany, żeby nie zawracać już nikomu głowy takimi banałami.

Czy nadużyję Waszej cierpliwości, jeśli zapytam jeszcze o kwestię mysqlową?

Cały projekt to internetowa wypożyczalnia wideo (potrzebny jako praca semestralna). Mam trzy tabele: movies, users, hires.
Movies, zawiera filmy, kluczem jest w niej pole movie_id
Users, zawiera użytkowników, kluczem jest pole user_id
Hires, składa się z pól: hire_id (klucz), user_id i movie_id. W niej przechowywane są dane odnośnie tego, jaki użytkownik wypożyczył jakie filmy. I tu mam problem: nie wiem czy dobrze formułuję zapytanie mysql. Kod w php wygląda tak:
  1. <?php
  2. $hired_movies = mysql_query("SELECT movies.tytul FROM hires, movies, users WHERE ((hires.movie_id = movies.movie_id) AND (hires.user_id = users.user_id) AND users.user_id='$id')") or die ('Błąd zapytania');
  3.  
  4. while ($r = mysql_fetch_array($hired_movies)) {
  5. $tytul = $r['tytul']; 
  6. }
  7. echo $tytul;
  8. ?>

Zmienna $id jest przekazywana jako $_GET, ale $tytul nic nie zwraca. Nie ma też żadnego błędu. Wkleiłem zapytanie do konsoli mysqla - napisał mi "Empty set". Co napisałem źle?
skowron-line
Kod
Zmienna $id jest przekazywana jako $_GET


no to chyba
  1. <?php
  2. $hired_movies = mysql_query("SELECT movies.tytul FROM hires, movies, users WHERE ((hires.movie_id = movies.movie_id) AND (hires.user_id = users.user_id) AND users.user_id='$_GET[id]')") or die ('Błąd zapytania');
  3. ?>
Andrzej20
Nie nie, dwie linijki wcześniej przechwytuję tę zmienną:
  1. <?php
  2. $id = $_GET['id'];
  3. ?>

Meritum mojego problemu polega na tym, że nie robiłem jeszcze nigdy relacji i z tego powodu zapewne wynika to że nie wyświetlają mi się dane z pól.
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.