Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pole select
Forum PHP.pl > Forum > PHP
olej3232
Witam, na wstępie zaznaczę że zaczynam przygodę z php i mam mały problem z polem <select>
Poniżej kod który przy pomocy jakiegoś gotowca znalezionego w sieci udało mi się wyskrobać.
Pole select działa, niestety nie mam pojęcia jak zrobić, żeby po błędzie zwróconym przez formularz pole nie wracało do domyślnej pozycji. Domyślam się że ten kod jest mało profesjonalny, dlatego, jeśli ktoś ma ciekawsze rozwiązanie, był bym wdzięczny.
  1. <select name="xyz" value=''>
  2. <option value="1">Wybierz...</option>
  3.  
  4. <?php
  5. $q = 'SELECT name, FROM baza';
  6. $result = mysql_query( $q );
  7. $row = mysql_fetch_array( $result );
  8. $row['name'];
  9. while( $row = mysql_fetch_array( $result ) )
  10. {
  11. echo '<option value="'.$row['name'].'">'.$row['name'].'</option>';
  12. }
  13. ?>
  14.  
  15. </select>
piotrooo89
żeby debbugować używaj mysql_error

  1. $result = mysql_query( $q ) or die(mysql_error());


a błąd masz tu:

  1. $q = 'SELECT name, FROM baza';
olej3232
Nie szukam błędu, fakt, zapomniałem wymazać przecinka. Pierwotnie wyciągałem więcej rzeczy z bazy.
Cytat
żeby debbugować używaj mysql_error

Możesz jakoś uzasadnić?
Wolał bym wiedzieć dlaczego tak a nie inaczej.
Dzięki smile.gif
zaksmok
Odpowiedź: W HTMLu aby zaznaczyć jakąś opcję jako default używa się atrybutu "selected"
  1. <select name="xyz" value=''>
  2. <option value="1">Wybierz...</option>
  3.  
  4. <?php
  5. $q = 'SELECT name, FROM baza';
  6. $result = mysql_query( $q );
  7. $row = mysql_fetch_array( $result );
  8. $row['name'];
  9. while( $row = mysql_fetch_array( $result ) )
  10. {
  11. $s=''
  12. if($row['name']==$_POST['name']) $s='selected';
  13. echo '<option value="'.$row['name'].'"'.$s.'>'.$row['name'].'</option>';
  14. }
  15. ?>
  16.  
  17. </select>


Przenalizuj zmianę w kodzie..
piotrooo89
Cytat(olej3232 @ 11.01.2010, 11:13:06 ) *
Nie szukam błędu, fakt, zapomniałem wymazać przecinka. Pierwotnie wyciągałem więcej rzeczy z bazy.


jak nie szukasz błędu to nigdy Ci nie będzie poprawnie działać, no chyba że jesteś już tak dobry że nie robisz błędów...

zobacz co na temat mysql_error pisze w manualu, będziesz wiedział wszystko.
olej3232
Źle się zrozumieliśmy. Kod zamieszczony na forum to okrojona wersja tego co mam (stąd błąd). W skrypcie go niema, ponieważ były dwa pola wyciągane z bazy. Robię całą masę błędów, jak wspomniałem w pierwszym poście (zresztą widać po temacie) jestem początkujący. Choć idzie mi coraz lepiej. smile.gif Dziękuję za pomoc i pozdrawiam
celbarowicz
php
ja stosuję session_start(), następnie formularz , method=post action=questionmark.gif i onChange="submit()" w selekcie, dane przekazywane sę do innego pliku php, gdzie jest session_start i zapamiętywane są jako zmienne sesyjne,hederem wracamy do pierwszego pliku i mamy wielkość której użyliśmy selectem.
pokombinuj. mi udałosię zrobić w ten sposób trzy zależne SELECTY. jest to przeładowanie którego się unika, ale ...co tam..questionmark.gif
kombinuj...kombinuj
pozdrawiam
olej3232
Metoda podana przez zaksmok-a działa dokładnie tak jak chciałem smile.gif Troszkę zabawy i nawet formularz pozwalający na edycję działa jak powinien smile.gif

Jeszcze raz dzięki za pomoc.
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.