Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Lista rozwijalna <select> pobierana z MySQL ustawiona na konkrentej pozycji
Forum PHP.pl > Forum > Przedszkole
yahreck
Jeśli chcę, aby lista rozwijalna była otwarta na jakiejś pozycji to robię to tak:
  1. <?php
  2. echo "<select name='poziom'>";
  3. echo "<option name='poziom'>1</option>";
  4. echo "<option name='poziom'>2</option>";
  5. echo "<option selected name='poziom'>3</option>";
  6. echo "</select>";
  7. ?>


A jak zrobić, aby lista pobierana z bazy została otwarta na wybranej pozycji w poniższym przykładzie?
  1. <?php
  2. $sql = "SELECT * FROM `tabela` ORDER BY `nazwa` ASC";
  3. $sql_result = mysql_query($sql,$conn) or die(mysql_error());
  4. echo "poziom <select name='poziom'>";
  5. while ($row = mysql_fetch_array($sql_result)) {
  6. echo "<option name='poziom'>$poziom</option>";
  7. }
  8. echo "</select>";
  9. ?>

Z góry dziękuję za ewentualne sugestie.
polibode
  1. <?php
  2. if ($poziom == 3)
  3.   echo "<option selected name='poziom'>$poziom</option>";
  4.   else
  5.   echo "<option name='poziom'>$poziom</option>";
  6. ?>
yahreck
Dzięki za odpowiedź, ale chyba się źle wysłowiłem.
Chodzi mi o to, że jeśli listę pobieram z bazy MySQL, to gdy spełni warunek listę ustawi na tym miejscu, ale gdy będzie wczytywał kolejne rekordy, warunek nie będzie spełniony i ustawi listę na pierwszej wczytanej pozycji.
Przy założeniu, że jest to ostatnia pozycja, (jak w moim przykładzie) to działa, ale w innym przypadku nie.

Przyszedł mi teraz pomysł, że wyniki z bazy MySQL można wrzucić do tymczasowej zmiennej tablicowej i wtedy wyświetlać według poniższego kodu:
  1. <?php
  2. // jesli 1 poziom
  3. if ($poziom==1){
  4. echo "<select name='poziom'>";
  5. echo "<option selected name='poziom'>$poziom[0]</option>";
  6. echo "<option name='poziom'>$poziom[1]</option>";
  7. echo "<option name='poziom'>$poziom[2]</option>";
  8. echo "</select>";
  9. }
  10. // jesli 2 poziom
  11. if ($poziom==2){
  12. echo "<select name='poziom'>";
  13. echo "<option name='poziom'>$poziom[0]</option>";
  14. echo "<option selected name='poziom'>$poziom[1]</option>";
  15. echo "<option name='poziom'>$poziom[2]</option>";
  16. echo "</select>";
  17. }
  18. // jesli 3 poziom
  19. if ($poziom==3){
  20. echo "<select name='poziom'>";
  21. echo "<option name='poziom'>$poziom[0]</option>";
  22. echo "<option name='poziom'>$poziom[1]</option>";
  23. echo "<option selected name='poziom'>$poziom[2]</option>";
  24. echo "</select>";
  25. }
  26. ?>

Kod się wydłuży, ale i tak będzie działać tylko wtedy, gdy liczba rekordów wyniesie 3, ale przestanie działać, gdy dopiszemy do bazy kolejne rekordy.

hmm ....
vokiel
  1. <?php
  2. /**
  3.  * @param $selectedList int id wybranego
  4.  * @param $id_name nazwa i id selecta
  5.  **/
  6. function getSelect($selectedList=0,$id_name='vacation_types'){
  7.    $return_value = '<select name="'.$id_name.'" id="'.$id_name.'">'."\n";
  8.    $sql = "SELECT ID, NAME FROM `tabela` ORDER BY `nazwa` ASC";
  9.    $sql_result = mysql_query($sql,$conn) or die(mysql_error());
  10.      while ($row = mysql_fetch_array($sql_result)) {
  11.            $selected = ($selectedList==$row['ID'])? 'selected="selected"': '';
  12.            $return_value .= '<option '.$selected.' value="'.$row['ID'].'">'.$row['NAME'].'</option>'."\n";
  13.        }
  14.      $return_value .= '</select>'."\n";
  15.    return $return_value;
  16. }// end of getSelect
  17. ?>
erix
Proszę o tag tematu.
yahreck
Wielkie dzięki vokiel
Celna, cenna, krótka, ale treściwa, konkretna i profesjonalna odpowiedź.
Tego mi było trzeba. Tak trzymać!
Dzięki Tobie czegoś dodatkowego się nauczyłem.
Pozdrawiam.
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.