Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pobieranie option value z <select> z bazy?
Forum PHP.pl > Forum > Przedszkole
tr86
Mam przykładowo w formularzu taką listę rozwijaną:

  1. <select name="godzina" style="width:80px;">
  2. <option value="">godzina</option>
  3. <option value="00">00</option><option value="01">01</option>
  4. <option value="02">02</option><option value="03">03</option>
  5. <option value="04">04</option><option value="05">05</option>
  6. <option value="06">06</option><option value="07">07</option>
  7. <option value="08">08</option><option value="09">09</option>
  8. <option value="10">10</option><option value="11">11</option>
  9. <option value="12">12</option><option value="13">13</option>
  10. <option value="14">14</option><option value="15">15</option>
  11. <option value="16">16</option><option value="17">17</option>
  12. <option value="18">18</option><option value="19">19</option>
  13. <option value="20">20</option><option value="21">21</option>
  14. <option value="22">22</option><option value="23">23</option>
  15. </select>


Po wybraniu jednej z opcji np. "14" dana jest zapisywana do bazy. Na osobnej stronie mam kolejny formularz i zależy mi na tym, żeby ta godzina była już ustawiona automatycznie w selekcie (coś jak selected, tylko żeby pobierało z bazy). Napewno to działa przy zwykłych polach, bo już nie raz próbowałem, problem mam z select'em. Jeżeli jest jakieś rozwiązanie, to proszę o pomoc.
thek
Oczywiście że jest możliwe a rozwiązań jest przynajmniej kilka. Najprostsze przy małej ilości pól -> sprawdzaj czy dana z bazy jest równa określonej wartości w value czy czymkolwiek innym. Wtedy dopisujesz tylko do tego option select="selected" i to wszystko. Coś w stylu
  1. <option value="00"<?php ( $pole_z_bazy_lub_pchnięte_inną_drogą == '00') ? ' select="selected"' : '' ?>></option>
i tak dla każdego z option. Ale można też użyć JS czy czego innego. A to przecież nie jedyne dostępne technologie i metody rozwiązania problemu smile.gif
piotrooo89
ja mam taki pomysł: robisz dodatkową kolumnę w bazie (np. checked) o typie bool. i tak jeśli zaznaczyłeś updatujesz dany rekord w kolumnie checked na wartość true lub 1 obojętnie, reszta ma false lub 0. i później już podczas wyświetlania sprawdzasz:

  1. echo '<select>';
  2. while ($row = mysql_fetch_array($sql))
  3. {
  4. if ($row['checked']==1)
  5. echo '<option selected="selected" value="'.$row['czas'].'">'.$row['czas'].'</option>';
  6. else
  7. echo '<option value="'.$row['czas'].'">'.$row['czas'].'</option>';
  8. }
  9. echo '</select>';


to taki mój pomysł.
tr86
Cytat(thek @ 15.10.2009, 21:38:06 ) *
Oczywiście że jest możliwe a rozwiązań jest przynajmniej kilka. Najprostsze przy małej ilości pól -> sprawdzaj czy dana z bazy jest równa określonej wartości w value czy czymkolwiek innym. Wtedy dopisujesz tylko do tego option select="selected" i to wszystko. Coś w stylu
  1. <option value="00"<?php ( $pole_z_bazy_lub_pchnięte_inną_drogą == '00') ? ' select="selected"' : '' ?>></option>
i tak dla każdego z option. Ale można też użyć JS czy czego innego. A to przecież nie jedyne dostępne technologie i metody rozwiązania problemu smile.gif



Próbowałem tak, ale występuje błąd: Parse error: syntax error, unexpected T_LNUMBER in /var/www/sites/yoyo.pl/t/e/portal/organizowane_konf.php on line 1765

  1. <select name=rok01 style="width:50px;">
  2. <option value="">r</option>
  3. (linia 1765) <option value="2009" ("'.$rokr.' == '2009') 'selected">2009</option>
  4. <option value="2010" ("'.$rokr.' == '2010') 'selected">2010</option>
  5. <option value="2011" ("'.$rokr.' == '2011') 'selected">2011</option>
  6. <option value="2012" ("'.$rokr.' == '2012') 'selected">2012</option>
  7. </select>


Zmienne daty i godziny mam podzielone tak:

  1. $rokr=$_POST['rokr'];
  2. $miesiacr=$_POST['miesiacr'];
  3. $dzienr=$_POST['dzienr'];
  4.  
  5. $gg=$_POST['gg'];
  6. $mm=$_POST['mm'];
  7.  
  8. $data=$rokr."-".$miesiacr."-".$dzienr;
  9.  
  10. $godzina=$gg.":".$mm;


i chcę jedno po drugim wyciągać z bazy. Jesli mam date np. 2010-05-18, to chciałbym, żeby się automatycznie wybierało przez 'selected' najpierw rok, miesiąc
i dzień



Podzieliłem datę w taki sposób:

  1. $rok=$plan[6];
  2. $r=substr($rok, 0, 4);
  3.  
  4. $miesiac=$plan[6];
  5. $m=substr($miesiac, 5, 2);
  6.  
  7. $dzien=$plan[6];
  8. $d=substr($dzien, 8, 2);


i teraz jak to zrobić, żeby się automatycznie wybierało z selecta? ;/

Poniższa metoda nie działa...

  1. <select name=rok01 style="width:50px;">
  2. option value="">r</option>
  3. <option value="2009" ("'.$r.' == '2009') 'selected">2009</option>
  4. <option value="2010" ("'.$r.' == '2010') 'selected">2010</option>
  5. <option value="2011" ("'.$r.' == '2011') 'selected">2011</option>
  6. <option value="2012" ("'.$r.' == '2012') 'selected">2012</option>


napewno też są błędy w cudzysłowach i apostrofach hmm
piotrooo89
ale po co się aż tak męczyć, podałem Ci rozwiązanie które działa.
tr86
Pomysł dobry, tylko nie wiem czy nie jest zbyt skomplikowany jak dla mnie.
Rozumiem, że wraz z wpisaną datą np. 2009-11-20 tworzyłby się update do kolumny checked na wartość =1,
w przeciwnym wypadku byłoby 0.
Problem w tym, że ja tą datę mam dzieloną na rok, miesiąc i dzień tak jak to wcześniej przedstawiłem...hmmm i pewnie by to kolidowało wstydnis.gif
Ale myślę, że warto spróbować tej metody..., jak wobec tego powinno wyglądać zapytanie przypisujące danej dacie wartość=1 ?
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.