Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wczytywanie danych do formularza z bazy danych.
bebzon_hc
post 25.09.2013, 14:15:20
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 10.02.2011
Skąd: Rawicz

Ostrzeżenie: (0%)
-----


Witam serdecznie!
Chciałem się poradzić bo już nie wiem jak temat ugryźć...

Tworzę małą aplikację, za pomocą któej będzie można dodawać oraz edytować jakieś tam zlecenia.
Formularz składa się z pól typu <text> ale i <select>, <input type="checkbox">, <input type="radio">.

Mój problem polega na tym, że nie wiem jak wczytać zapisane już dane do pól typu <select>, <input type="checkbox">, <input type="radio">.
Chciałbym żeby formularz wyglądał tak jak przed wysłąniem zlecenia do bazy danych. Żeby pole 'select' było wybrane na konkretnym miejscu, żeby 'chceckbox' był zaznaczony oraz 'radio'.

Proszę o wskazówki.
Go to the top of the page
+Quote Post
kujol
post 25.09.2013, 15:05:06
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

Ostrzeżenie: (0%)
-----


Na przykładzie <select>:

Kod
<html>
<form method=\"POST\" action=\"#\">
Kategoria: <select name=\"nazwa\" id=\"styl_pole_2\">
<?
include("check.php");    //łączy z bazą

$query = mysql_query("SELECT `pole` FROM `pole` ");        //pobiera rekordy
while($rekord = mysql_fetch_array($query))
{
echo"
<option>$rekord[1]</option>        //wyśwetla rekordy
";
}
?>
</select>
</form>
</html>


Ten post edytował kujol 25.09.2013, 15:06:28


--------------------
;)
Go to the top of the page
+Quote Post
bebzon_hc
post 26.09.2013, 06:53:19
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 10.02.2011
Skąd: Rawicz

Ostrzeżenie: (0%)
-----


no chyba nie dokońca mnie zrozumiałeś :] albo ja źle wytłumaczyłem. przeiterować się po tablicy i wrzucić w <select'a> to nie problem hehehe. Ale jak zrobić jak masz np. :

w tabeli np. nr edycji gazety i w jest to wartość 8, 9, 10 a formularz i wszystkie pola w fieldset-cie (checkbox) EDYCJA ma zakres pol od 1 do 30 i ma w tym. Chciałbym teraz żeby formularz wczytałsię z wszystkimi polami od 1 do 30 ale żeby odhaczone były tylko te co wypisane w bazie czyli 8, 9, 10. Mam podobny problem z <radio> i <select>.

Go to the top of the page
+Quote Post
BigPig
post 26.09.2013, 08:44:06
Post #4





Grupa: Zarejestrowani
Postów: 61
Pomógł: 9
Dołączył: 18.06.2013
Skąd: Białystok

Ostrzeżenie: (0%)
-----


Przedstawię ogólny zarys rozwiązania problemu.


Z checkbox robimy taki:
  1. for($i=0;$i<=30;$i++) //ewentualnie liczbę 30 możesz zastąpić fragmentem kodu, który będzie dynamicznie generował liczbę.
  2. {
  3. if($i == $tablica_baza_danych[$i]['id_pole']) //nie wiem jak masz urządzoną bazę danych, prawdopodobnie bedziesz musial to trochę zmodyfikować. Chodzi głównie o mechanizm, chyba rozumiesz o co chodzi ;)
  4. {
  5. echo '<input type="checkbox" value="wartosc" name="'.$tablica_baza_danych[$i]['nazwa'].'" checked="checked" />';
  6. }
  7. else
  8. {
  9. echo '<input type="checkbox" value="wartosc" name="nazwa"/>';
  10. }
  11. }



Z select, ja robiłem tak, że budowałem oddzielną funkcję, która na podstawie switcha wszystko mi generuje np:
  1. function Katalog($kryterium)
  2. {
  3. switch($kryterium)
  4. {
  5. case "0":
  6. $rodzaj= '
  7. <select size="1" name="dostawa">
  8. <option value="0">Odbiór osobisty</option>
  9. <option value="1">Poczta Polska: </option>
  10. <option value="2">Kurier: przesyłka</option>
  11. </select>
  12. ';
  13. return $rodzaj;
  14. break;
  15. case "1":
  16. $rodzaj= '
  17. <select size="1" name="dostawa">
  18. <option value="1">Poczta Polska: </option>
  19. <option value="0">Odbiór osobisty</option>
  20. <option value="2">Kurier: przesyłka</option>
  21. </select>
  22. ';
  23. return $rodzaj;
  24. break;
  25. case "2":
  26. $rodzaj= '
  27. <select size="1" name="dostawa">
  28. <option value="2">Kurier: przesyłka</option>
  29. <option value="1">Poczta Polska: </option>
  30. <option value="0">Odbiór osobisty</option>
  31. </select>
  32. ';
  33. return $rodzaj;
  34. break;
  35. }
  36. }

Lepszego sposobu nie wymyśliłem, problem w tym, że jeśli masz naprawdę dużo opcji, wszystko będzie duże....


Z radio robimy tak samo jak z checkbox, też musimy dodać: checked="checked".

Mam nadzieję, że pomogłem smile.gif

Ten post edytował BigPig 26.09.2013, 08:45:28
Go to the top of the page
+Quote Post
bebzon_hc
post 26.09.2013, 11:17:13
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 10.02.2011
Skąd: Rawicz

Ostrzeżenie: (0%)
-----


o włąśnie ;] dzięki wielkie. przyda się
Go to the top of the page
+Quote Post
Greg0
post 26.09.2013, 12:58:57
Post #6





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


@BigPig W polach typu select można ustawić atrybut selected na pole option.
I wtedy tworząc pole select można to robić np. w ten sposób
  1. $options = array(1=>'Poczta polska', 2=>'Kurier', 3=>'Odbiór osobisty');
  2. $selected = 2;
  3. echo '<select name="send">';
  4. foreach($options as $id => $option){
  5. $attr = ($id==$selected) ? 'selected' : null;
  6. echo'<option value="'.$id.'" '.$attr.'>'.$option.'</option>';
  7. }
  8. echo '</select>';


Ten post edytował Greg0 26.09.2013, 13:06:59
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 12:06