Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Edycja pola select
Forum PHP.pl > Forum > Przedszkole
bercow
Jak pobrać do pola select ileś wartości z bazy i jednocześnie zaznaczyć jakaś z nich. A tak po polakiemu haha.gif Mam formularz edycji, to jest jedno z jego pól. Chce wczytać wszystkie pola do select, ale domyślnie zaznaczone ma być to które obecnie jest dla danego id. Obecnie wczytuje wszystkie pola, ale nie zaznacza tego ktory jest przed edycja. Dodatkowo jak wszystkie pola, bez względu na tym znajdujące się pod polami select przestają sie wyświetlać, dodając pole select w komentarze, inne pola działają. Zapytanie SELECT typ FROM typ jest poprawne, tak po prostu wygląda baza.

  1.  
  2. require "connection.php";
  3. connection();
  4.  
  5. $zap ="SELECT typ FROM typ";
  6. $wyn = mysql_query($zap);
  7.  
  8. echo'<td>Typ:</td><td> <select name=\"typ\" value="'.$r['type'].'" size=\"1\">';
  9. while ($r = mysql_fetch_assoc($wyn)){
  10. echo "<option>".$r['typ']."</option>";
  11. }
  12. echo "</select></td>";
  13. echo '</tr>
  14. <tr>';
kapuch
Czyli zapytanie sql, pozniej petla while i w tej petli if, ktory sprawdza, czy dany select ma byc default smile.gif
bercow
zapytanie SQL, zdefiniowanie domyslej wartosci dla pola select, while aby wypisac wszytskie, ale if ?

już wiem czemu mi się nie wczytywało inne pola, jedna zmienna miałem powielona, dokladnie $r, ale nadal nie moge nic do pola select wczytac
kapuch
Cytat(bercow @ 7.09.2010, 01:11:10 ) *
zapytanie SQL, zdefiniowanie domyslej wartosci dla pola select, while aby wypisac wszytskie, ale if ?

Ja to poprostu widze tak:
1. zapytanie sql
2. petla while, ktora "laduje" wszystkie optiony do selecta
3. if, ktory nadaje danemu optionowi wartosc domyslna

Ale mozna to zrobic na wiele innych sposobow, ja podalem chyba najprostszy.

PS. Nalezalo by w bazie sql juz zdefiniowac, ktore pole jest domyslne, no chyba ze chodzi o inna procedure, np. zalezna od wybranych opcji uzytkowanika.
bercow
Trochę nie rozumiem, ale postaram się to zaprezentować inaczej.

Mamy wypisane 10 rekordów i każdy z nich ma tam ile pól, i opcje edytuj. Po klinieciu na edytuj, przesyłam za pomocą GET ID danego rekordu. Za pomocą tego ID wczytujemy do formularza pola odpowiadające temu konkretnemu rekordowi. Nie ma domyślnego pola dla pola select, pole select ma przybrać taka wartość jaka ma jest odpowiednia dla tego rekordu.

To ma byc normalna opcja edytuj to jakiegoś rekordu, ale muszę pobrać jakoś wszystkie opcje z bazy do pola select, i jakoś wymusić zaznaczenie konkretnej pozycji.
Wezyr
Cytat(bercow @ 7.09.2010, 13:49:31 ) *
pole select ma przybrać taka wartość jaka ma jest odpowiednia dla tego rekordu.

A co to znaczy 'wartość odpowiednia'? Na jakiej podstawie ma zostać określona?
bercow
Mamy taka tabele jak na zdjęciu poniżej, pola takie jak typ, firma, przyjęte (miejsce przyjęcia) są to pola wyboru SELECT. Na końcu mamy dwie ikonki, jedna edytuj druga usun. Ta "wartosc odpowiednia" to aktualny zapis w bazie dla konkretnego rekordu. Czyli zwykła edycja. Chce aby po kliknięciu np. na edycje pola numer ID=3 (pierwsza pozycja), widoczne było pole SELECT z naznaczonym typem Ekspres. Obecnie wyświetla się kolejność jak w bazie.

http://img339.imageshack.us/img339/8016/drobn.jpg

  1. --
  2. -- Zrzut danych tabeli `typ`
  3. --
  4.  
  5. INSERT INTO `typ` (`idtyp`, `typ`) VALUES
  6. (1, 'Odkurzacz'),
  7. (2, 'Mikrofalowka'),
  8. (3, 'Ekspres'),
  9. (4, 'Roboty');


Wezyr
Mam wrażenie że niesamowicie namieszałeś winksmiley.jpg Rozumiem, że chcesz mieć możliwość wyświetlenia rekordów tabeli jak na zdjęciu (nazwijmy ją 'glowna') z możliwością edycji konkretnego rekordu, a właściwie tylko 3 pól (typ,firma,przyjete). Dobrze zrozumiałem?
No to jeśli tak to ma wyglądać, to jak dla mnie musisz mieć przygotowane 4 tabele: jedną taką jak na zdjęciu i 3 z wartościami które może przybrać dane pole select np. dla pola przyjete w tabeli będzie lista wszystkich miast na które można takie pole zmienić.
Po kliknięciu na 'edytuj' powinna zostać przesłana zmienna z id konkretnego rekordu (nazwijmy ja 'id') i nastąpi przejście do strony z polami select o kodzie jak poniżej:
  1. $id=$_REQUEST['id'];
  2.  
  3. $zap="SELECT typ,firma,przyjete FROM glowna WHERE id=$id";
  4. $wyn=mysql_query($zap);
  5. list($gtyp,$gfirma,$gprzyjete)=mysql_fetch_row($wyn);
  6.  
  7. echo'<tr><td>Typ:</td><td><select name=\"typ\">';
  8. $zap="SELECT typ FROM typ";
  9. $wyn=mysql_query($zap);
  10. while(list($typ)=mysql_fetch_row($wyn)) {
  11. if($typ==$gtyp) $selected=' selected="selected" ';
  12. else $selected='';
  13. echo '<option value="'.$typ.'" '.$selected.'>'.$typ.'</option>';
  14. }
  15. echo '</select></td></tr>';
  16.  
  17. echo'<tr><td>Firma:</td><td><select name=\"firma\">';
  18. $zap="SELECT firma FROM firma";
  19. $wyn=mysql_query($zap);
  20. while(list($typ)=mysql_fetch_row($wyn)) {
  21. if($firma==$gfirma) $selected=' selected="selected" ';
  22. else $selected='';
  23. echo '<option value="'.$firma.'" '.$selected.'>'.$firma.'</option>';
  24. }
  25. echo '</select></td></tr>';
  26.  
  27. echo'<tr><td>Przyjęte:</td><td><select name=\"przyjete\">';
  28. $zap="SELECT przyjete FROM przyjete";
  29. $wyn=mysql_query($zap);
  30. while(list($typ)=mysql_fetch_row($wyn)) {
  31. if($przyjete==$gprzyjete) $selected=' selected="selected" ';
  32. else $selected='';
  33. echo '<option value="'.$przyjete.'" '.$selected.'>'.$przyjete.'</option>';
  34. }
  35. echo '</select></td></tr>';
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.