Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Zaznaczenie option w select
Forum PHP.pl > Forum > Przedszkole
blep23
Zapisuję w bazie czas trwania czegoś, 45 za pomocą opcji select.

Chciałbym edytować te dane, ale z zaznaczoną na liście opcją.

Czytałem 2 posty:
http://forum.php.pl/index.php?showtopic=43152
http://forum.php.pl/index.php?showtopic=43089

Miałem prawie dobre, tylko option wskakiwało po odświeżeniu strony.
A teraz nie działa.

  1. while ($row = mysql_fetch_array($wynik, MYSQL_ASSOC)) {
  2.  
  3. echo "Czas trwania<br /> <select name=\"Czas_trwania\">";
  4. $pobierz2 = $row['czas_trwania'];
  5. $czas_trwania = $pobierz2;
  6.  
  7.  
  8. //echo $czas_trwania; //nazwa pola to czas_trwania
  9. //echo $row[3]; // numerek 3
  10.  
  11. $row[3] = $czas;
  12.  
  13. // echo $czas;
  14.  
  15. if ($czas_trwania==$row['czas_trwania']){
  16. $jest = 1;}
  17. else {$jest = 0;}
  18.  
  19.  
  20. echo "<br />
  21. <option value=\"{$row['Czas_trwania']}\"'.($jest ? 'selected=\"selected\"' : '').'>{$row['Czas_trwania']}</option>
  22. <option value=\"dowolnie\">dowolnie</option>
  23. <option value=\"05\">05</option>
  24. <option value=\"10\">10</option>
  25. <option value=\"15\">15</option>
  26. <option value=\"20\">20</option>
  27. <option value=\"25\">25</option>
  28. <option value=\"30\">30</option>
  29. <option value=\"35\">35</option>
  30. <option value=\"40\">40</option>
  31. <option value=\"45\">45</option>
  32. <option value=\"50\">50</option>
  33. <option value=\"55\">55</option>
  34. <option value=\"55\">60</option>
  35. <option value=\"ponad 60 minut\">ponad godzinę</option>
  36. <option value=\"ponad 2 godziny\">ponad 2 godziny</option>
  37. <option value=\"ponad 3 godziny\">ponad 3 godziny</option>
  38. <option value=\"ponad 4 godziny\">ponad 4 godziny</option>
  39. </select>";
Otto
  1. if ($czas_trwania == $row['czas_trwania']) {
  2. echo '<option value="'.$czas_trwania.'" selected>'.$czas_trwania.'</option>';
  3. } else {
  4. echo '<option value="'.$czas_trwania.'">'.$czas_trwania.'</option>';
  5. }
blep23
Chciałbym, aby wszystkie opcje były na liście i zaznaczona była wybrana z bazy.
Otto
No to formujesz odpowiednie zapytanie które pobierze rekordy z bazy danych i wyświetlasz je tak... o ile mają one być na liscie to:

  1. echo '<select name="nazwa">';
  2. while ($r = mysql_fetch_array($zapytanie)) {
  3. echo '<option value="'.$r['wartosc'].'">'.$r['tytul'].'</option>';
  4. }
  5. echo '</select>';
blep23
  1. echo '<select name="nazwa">';
  2. while ($r = mysql_fetch_array($zapytanie)) {
  3.  
  4. if ($czas_trwania == $row['czas_trwania']) {
  5. echo '<option value="'.$czas_trwania.'" selected>'.$czas_trwania.'</option>';
  6. } else {
  7. echo '<option value="'.$czas_trwania.'">'.$czas_trwania.'</option>';
  8. }
  9.  
  10. }
  11. echo '</select>';


To i tak opcja wczytana z bazy jest u góry, a nie wybrana na liście.

Tak jak znalazłem na tym forum:

  1. <?php
  2.  
  3.  
  4.  
  5. echo '<option value="blabla" '.($jakieswarunkispelnione ? 'selected="selected"' : '').'>blabla</option>';
  6.  
  7.  
  8.  
  9. ?>


Żeby sprawdziło wszystkie optiony i ten, który ma warunek 1 wynikający z tego if u góry nadał wartość selected dla pola...
Otto
  1. echo '<select name="nazwa">';
  2. while ($r = mysql_fetch_array($zapytanie)) {
  3.  
  4. if ($czas_trwania == $r['czas_trwania']) {
  5. echo '<option value="'.$czas_trwania.'" selected>'.$czas_trwania.'</option>';
  6. } else {
  7. echo '<option value="'.$czas_trwania.'">'.$czas_trwania.'</option>';
  8. }
  9.  
  10. }
  11. echo '</select>';

Opcja będzie zaznaczona jeśli $czas_trwania będzie taki sam jak $r['czas_trwania'] i nie inaczej jeżeli opcja nie jest zaznaczona to widocznie nie spełnia podanego warunku... Może być tak że kilka opcji spełnia podany warunek i wtedy ostatnia która spełnia warunek będzie zaznaczona. Mi tak działa...

Edit: Poprawione zamiast if ($czas_trwania == $row['czas_trwania']) { na if ($czas_trwania == $r['czas_trwania']) {
nospor
@blep23 zwany wczesniej @user767 - posiadanie kilku kont na forum jest ZABRONIONIE
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.