Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] pobieranie z select
Forum PHP.pl > Forum > Przedszkole
em-ba
Witam, chciałem się dowiedzieć w jaki sposób można pobrać z bazy danych zawartości pola select. Z polem input jest ok ale nie wiem jak wyciągnąć select smile.gif

  1. <?php
  2. <div>
  3. <label for="cos">cos:</label>
  4. <input id="cos" name="cos" class="text" type="text" maxlength="30" value="'.$res['cos'].'" />
  5. </div>  
  6. <div>
  7. <label for="wojewodztwo">województwo:</label>
  8.  <select name="wojewodztwo">
  9. <option value=0>-- -- -- wybierz -- -- -- </option>
  10. <option value="1">dolnośląskie</option>
  11. <option value="2">kujawsko-pomorskie</option>
  12. <option value="3">lubelskie</option>
  13. </select>
  14. </div>
  15. ?>


próbowałem na różne sposoby, mi.in:

<select name="wojewodztwo" value="'.$res['wojewodztwo'].'">

i za każdym razem nie chce pobrać..
sniezny_wilk
co to są te znaczniki for w hmtl'u ? pokaż kod w którym dodajesz do bazy danych, żeby pobrać musisz dodawać, co to za zmienna res ? Więcej kodu..
em-ba
to się odnosi do tego.. smile.gif

  1. <?php
  2. mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  3. mysql_select_db('fi') or die ("Nie mozna zlokalizowac bazy danych");
  4.  
  5. $data = mysql_query ("SELECT * FROM `uzytkownicy` WHERE login='".$login."'");
  6. $res = mysql_fetch_array($data);
  7. ?>
sniezny_wilk
A gdzie kod do wrzucania danych do MySQL'a ?
Sadu2
Cytat(sniezny_wilk @ 7.05.2008, 10:29:50 ) *
A gdzie kod do wrzucania danych do MySQL'a ?


Hmmm a po co? smile.gif

  1. <?
  2. <div>
  3. <label for="cos">cos:</label>
  4. <input id="cos" name="cos" class="text" type="text" maxlength="30" value="'.$res['cos'].'" />
  5. </div>  
  6. <div>
  7. <label for="wojewodztwo">województwo:</label>
  8.  <select name="wojewodztwo">
  9. <option value="0">-- -- -- wybierz -- -- -- </option>
  10. <?
  11.  
  12.  while($abc= mysql_fetch_array($zapytanie))
  13. {
  14. ?>
  15. <option value="<? echo $abc["wojewodztwo"]; ?>"><? echo $abc["wojewodztwo"];?></option>
  16. <?
  17.  }
  18. ?>
  19.  </select>
  20. </div>
  21. ?>


Może tak? Tylko pozamieniaj sobie odpowiednio do twojej tabeli.
sniezny_wilk
@em-ba, może skonkretyzuj swoje pytanie: chcesz pobrać wszystkie województwa z bazy danych (taki kod przedstawił Sadu2)? Czy może chcesz zaznaczyć w istniejącym select'ie pole któremu odpowiada wartość w tabeli, tak aby było zaznaczone domyślnie ? Rozumiem, że jest to skrypt edycji ?

@Sadu2 Twój kod jest mało czytelny. Po drugie zdziwiłbym się jakby ktoś w tabli o nazwie 'uzytkownicy' miał nazwy województw. Po trzecie co Twój kod przedstawia ? Po czwarte, chciałbym zobaczyć kod dodawania, żeby zobaczyć czy em-ba nie zrobił gdzieś błędu "po drodze".
em-ba
dzieki Sadu2 ale nie do końca o to chodziło ..poza tym nie działa biggrin.gif

sniezny_wilk, dobrze rozumiesz - chodzi w tym skrypcie o edycję danych.. z bazy. Użytkownik, któremu wyświetla się formularz moglby widziec wartość swojego pola select (np. wojewodztwo), które wcześniej podał w formularzu. Chodzi o to aby wyświetlało mu te wojewodztwo, które wybrał (tylko jedno, a nie wszystkie smile.gif ) Skrypt z dodawaniem do bazy działa ale jak chcesz zobaczyć to proszę..
  1. <?php
  2. $mod = $_GET['mod'];
  3.  $imie = $_POST['imie'];
  4.  $nazwisko = $_POST['nazwisko'];
  5. if($mod == akt){
  6. $data = "UPDATE `uzytkownicy`
  7.  SET `imie`='$imie',`nazwisko`='$nazwisko' //itd
  8.  WHERE login ='$login'";
  9.  mysql_query ($data) or die(mysql_error());
  10.  print 'zapisano nowy profil';
  11.  }
  12. ?>


ogołem nadpisywanie danych działa ale co do pol input a nie wiem jak to osiągnąć przy polach select..
Sadu2
Cytat(em-ba @ 7.05.2008, 11:04:37 ) *
(tylko jedno, a nie wszystkie smile.gif )


aaaa to ja źle zrozumiałem, ale czemu ten kod nie działa? Jak ja mam tak na stronie i mi działa blinksmiley.gif
em-ba
nie wyciągał nic z bazy.. //tylko było puste pole.. Być może coś źle zmieniłem ten Twój kod smile.gif
Sadu2
To może pokaż jak wygląda Twoja tabela `uzytkownicy`
sniezny_wilk
Teraz rozumiem. Województwa umieść w tabeli może być "na sztywno" w PHP'owej lub w bazie danych, wyświetlaj je za pomocą jakiegoś fora, while'a - wiesz jak to zrobić, tak ?

  1. <?php
  2. ech '<select name="wojewodztwo">';
  3.  
  4. $woj; //załóżmy tu trzymasz wartość z value selecta.
  5.  
  6. $array = array("jedne","drugie");
  7. //może być foreach
  8. $end = count($array);
  9.  
  10. for($i=0; $i<$end;$i++){
  11. if($woj != $i){
  12. echo '<option value="'.$i.'">'.$array[$i].'</option>';// pamiętaj o odpowiednich value !
  13. }
  14. else{
  15.  echo '<option value="'.$i.'" selected="selected">'.$array[$i].'</option>';
  16. }
  17. }
  18. echo '</select>';
  19. ?>


Coś takiego, mogą być gdzieś błędy, cześć musisz pozmieniać, musisz też pamiętać o poprawnych wartościach w value, żeby się wszystko zgadzało.

Cytat(Sadu2 @ 7.05.2008, 09:13:22 ) *
To może pokaż jak wygląda Twoja tabela `uzytkownicy`


@Sadu2 - po co ?
kusiu
Cytat(em-ba @ 7.05.2008, 08:28:22 ) *
to się odnosi do tego.. smile.gif

  1. <?php
  2. mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  3. mysql_select_db('fi') or die ("Nie mozna zlokalizowac bazy danych");
  4.  
  5. $data = mysql_query ("SELECT * FROM `uzytkownicy` WHERE login='".$login."'");
  6. $res = mysql_fetch_array($data);
  7. ?>

  1. <?php
  2. while($res)
  3. {
  4. $options.="<option value='".$res['id_wojewodztwa']."'>".$res['wojewodztwo']."</option>";
  5. }
  6. ?>


  1. <select name="wojewodztwo">
  2. <?=$options?>
sniezny_wilk
Cytat(kusiu @ 7.05.2008, 09:44:38 ) *
  1. <?php
  2. while($res)
  3. {
  4. $options.="<option value='".$res['id_wojewodztwa']."'>".$res['wojewodztwo']."</option>";
  5. }
  6. ?>


  1. <select name="wojewodztwo">
  2. <?=$options?>


Tyle, że em-ba nie ma w bazie województw, a zresztą nie chodzi o ich wyświetlenie, tylko o zaznaczenie wybranego już wcześniej.

EDIT: i dlaczego założyłeś że em-ba ma włączone short_open_tag winksmiley.jpg ?
em-ba
Cytat
Tyle, że em-ba nie ma w bazie województw, a zresztą nie chodzi o ich wyświetlenie, tylko o zaznaczenie wybranego już wcześniej.

sniezny_wilk - chodzi o ich wyswietlenie w formularzu.. (Uzytkownik wybiera sobie nazwe wojewodztwa z pola select, które jest zapisywane do bazy danych jako cyferka ..każde woj. ma przypisana cyferke.. i teraz uzytkownik chcący zmienic swoje wojewodztwo - widzi pole select, które mu wyświetla dotychczasowe wojewodztwo.. klika na liste select - wybiera nowe wojewodztwo i jest ono wowczas nadpisywane do bazy danych znów jako cyferka smile.gif ) ..mam nadzieje, że dość zrozumiale napisałem

Nie wiedziałem z początku, że to będzie tak skomplkowane smile.gif
Poprawiłem na coś takiego ale dalej ciągle nie działa jak powinno..

  1. <select name="wojewodztwo" disabled="disabled">
  2. [php]
  3. <?php
  4. value="'.$res['wojewodztwo'].'" //załóżmy tu trzymasz wartość z value selecta.
  5.  
  6. $array = array("dolnośląskie","kujawsko-pomorskie","lubelskie","lubuskie","łódzkie","małopolskie","mazowieckie","opolskie","podkarpackie",
  7. "podlaskie","pomorskie","śląskie","świętokrzyskie","warmińsko-mazurskie","wielkopolskie","zachodniopomorskie");
  8.  
  9.  
  10. //może być foreach
  11. $end = count($array);
  12.  
  13. for($res=0; $res<$end;+){
  14. if($wojewodztwo != $res){
  15. echo '<option value="'.$res.'">'.$array[$res].'</option>';// pamiętaj o odpowiednich value !
  16. }
  17. else{
  18. echo '<option value="'.$res.'" selected="selected">'.$array[$res].'</option>';
  19. }
  20. }
  21.  
  22. ?>[/php]
sniezny_wilk
A co się dzieje ?
em-ba
parse error widzi błąd w tej linii:

echo '<option value="'.$res.'">'.$array[$res].'</option>';// pamiętaj o odpowiednich value !

unexpected T_STRING, expecting ',' or ';' ..ale nie wiem czego tu może brakować...
sniezny_wilk
Tam wyżej masz błąd:

  1. <?php
  2. value="'.$res['wojewodztwo'].'" //załóżmy tu trzymasz wartość z value selecta.
  3. ?>

zmień na

  1. <?php
  2. $value=$res['wojewodztwo'];
  3. ?>


A co do tamtej linijki, to wydaje się okej może wynika z poprzedniego błędu

  1. <?php
  2. echo '<option value="'.$res.'">'.$array[$res].'</option>';
  3. ?>


EDIT: kolejny błąd:

  1. <?php
  2. for($res=0; $res<$end;+){
  3. ?>


przecież zmienną res już używasz !, daj inną
  1. <?php
  2. for($i=0; $i<$end;$i++){
  3. ?>


i tam ma być $i ++

a porównanie

  1. <?php
  2. if($vale != $i){
  3. ?>


kurcze masa błędów.. Chyba nie do końca wiesz co piszesz :/
em-ba
Poprawiłem lecz dalej jest ten sam błąd, z tym, że teraz tyczy się tej linijki:
value=$res['wojewodztwo'];

Po zmianach skrypt wygląda tak..
  1. <?php
  2.  
  3. value=$res['wojewodztwo']; 
  4.  
  5. $array = array("dolnośląskie","kujawsko-pomorskie","lubelskie","lubuskie","łódzkie","małopolskie","mazowieckie","opolskie","podkarpackie",
  6.  "podlaskie","pomorskie","śląskie","świętokrzyskie","warmińsko-mazurskie","wielkopolskie","zachodniopomorskie");
  7.  
  8.  
  9. //może być foreach
  10. $end = count($array);
  11.  
  12. for($i=0; $i<$end;$i++){
  13. if($wojewodztwo != $res){
  14. echo '<option value="'.$res.'">'.$array[$res].'</option>';// pamiętaj o odpowiednich value !
  15. }
  16. else{
  17. echo '<option value="'.$res.'" selected="selected">'.$array[$res].'</option>';
  18. }
  19. }
  20.  
  21. ?>
potreb
A moze:
  1. <?php
  2. $value=$res['wojewodztwo'];
  3. ?>


Dolary
sniezny_wilk
Dokładnie tak jak napisał potreb, zobacz dokładnie jak ja tam napisałem, jest dolar przed value.
em-ba
tak, wstawiałem go już wcześniej ale to też nic nie daje.. ciągle jest ten sam błąd
sniezny_wilk
Ehh.. Wklej to sobie:

  1. <?php
  2.  
  3. $value=$res['wojewodztwo']; 
  4.  
  5. $array = array("dolnośląskie","kujawsko-pomorskie","lubelskie","lubuskie","łódzkie","małopolskie","mazowieckie","opolskie","podkarpackie",
  6.  "podlaskie","pomorskie","śląskie","świętokrzyskie","warmińsko-mazurskie","wielkopolskie","zachodniopomorskie");
  7.  
  8.  
  9. $end = count($array);
  10.  
  11. for($i=0; $i<$end;$i++){
  12. if($value != $i){
  13. echo '<option value="'.$i.'">'.$array[$i].'</option>';// pamiętaj o odpowiednich value !
  14. }
  15. else{
  16. echo '<option value="'.$i.'" selected="selected">'.$array[$i].'</option>';
  17. }
  18. }
  19.  
  20. ?>


jaki efekt ?
em-ba
wkleiłem i ......w dalszym ciągu ten parse error i dotyczy tej samej lini..

$value=$res['wojewodztwo'];

więc zmieniłem na

$value="'.$res['wojewodztwo'].'";

i tam jest chyba ok, bo teraz ten sam parse error dotyczy tej lini:

echo '<option value="'.$i.'">'.$array[$i].'</option>';
sniezny_wilk
Daj kod w którym przypisujesz coś do $res, ten kod co podałem jest dobry.
em-ba
  1. <?php
  2. mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  3. mysql_select_db('fi') or die ("Nie mozna zlokalizowac bazy danych");
  4.  
  5. $data = mysql_query ("SELECT * FROM `uzytkownicy` WHERE login='".$login."'");
  6. $res = mysql_fetch_array($data);
  7. ?>
  8. <?php
  9. $mod = $_GET['mod'];
  10.  $imie = $_POST['imie'];
  11.  $nazwisko = $_POST['nazwisko'];
  12. if($mod == akt){
  13. $data = "UPDATE `uzytkownicy`
  14.  SET `imie`='$imie',`nazwisko`='$nazwisko' //itd
  15.  WHERE login ='$login'";
  16.  mysql_query ($data) or die(mysql_error());
  17.  print 'zapisano nowy profil';
  18.  }
  19. ?>


jak user podaje pierwszy raz dane to odpowiada za to ten kod..
  1. <?php
  2. <div>
  3. <label for="wojewodztwo">województwo:</label>
  4.  <select name="wojewodztwo">
  5. <option value=0>-- -- -- wybierz -- -- -- </option>
  6. <option value="1">dolnośląskie</option>
  7. <option value="2">kujawsko-pomorskie</option>
  8. <option value="3">lubelskie</option>
  9. <option value="4">lubuskie</option>
  10. <option value="5">łódzkie</option>
  11. <option value="6">małopolskie</option>
  12. <option value="7">mazowieckie</option>
  13. <option value="8">opolskie</option>
  14. <option value="9">podkarpackie</option>
  15. <option value="10">podlaskie</option>
  16. <option value="11">pomorskie</option>
  17. <option value="12">śląskie</option>
  18. <option value="13">świętokrzyskie</option>
  19. <option value="14">warmińsko-mazurskie</option>
  20. <option value="15">wielkopolskie</option>
  21. <option value="16">zachodniopomorskie</option>
  22. </select>
  23. </div>
  24. ?>

z dodawaniem i zapisywaniem jest ok
jeśli chodzi o nadpisywanie to w przypadku pola input jest wszystko ok ale problem jest z select
  1. <?php
  2. <div>
  3.  <label for="cos">cos:</label>
  4.  <input id="cos" name="cos" class="text" type="text" maxlength="30" value="'.$res['cos'].'" />
  5. </div>
  6. ?>
sniezny_wilk
Zrób gdzieś

  1. <?php
  2. echo 'Wartosc: '.$res['wojewodztwo'];
  3. ?>


co wyświetli ?
potreb
Najlepiej jak wkleji cały kod i sie zobaczy, czy gdzieś indziej się nie rozwala
em-ba
to jest ten kod:
  1. <?php
  2. mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  3. mysql_select_db('fi') or die ("Nie mozna zlokalizowac bazy danych");
  4.  
  5. $data = mysql_query ("SELECT * FROM `uzytkownicy` WHERE login='".$login."'");
  6. $res = mysql_fetch_array($data);
  7.  
  8. '<div>
  9.  <form action="mojedane.php" method="POST">
  10. <fieldset>
  11. <legend><b>Obecne dane:</b></legend>
  12. <div>
  13.  
  14. <div>
  15. <label for="imie">imię:</label>
  16. <input id="imie" name="imie" class="text" type="text" maxlength="30" readonly="readonly" value="'.$res['imie'].'" />
  17. </div>
  18. <div>
  19. <label for="nazwisko">nazwisko:</label>
  20. <input id="nazwisko" name="nazwisko" class="text" type="text" maxlength="30" readonly="readonly" value="'.$res['nazwisko'].'" />
  21. </div>
  22.  
  23. <div>
  24. <label for="wojewodztwo">województwo:</label>
  25.  <select name="wojewodztwo" disabled="disabled">
  26.  >?
  27.  
  28. <?php
  29.  
  30. $value="'.$res['wojewodztwo'].'";
  31.  
  32. $array = array("dolnośląskie","kujawsko-pomorskie","lubelskie","lubuskie","łódzkie","małopolskie","mazowieckie","opolskie","podkarpackie",
  33.  "podlaskie","pomorskie","śląskie","świętokrzyskie","warmińsko-mazurskie","wielkopolskie","zachodniopomorskie");
  34.  
  35.  
  36. $end = count($array);
  37.  
  38. for($i=0; $i<$end;$i++){
  39. if($value != $i){
  40. echo '<option value="'.$i.'">'.$array[$i].'</option>';
  41. }
  42. else{
  43. echo '<option value="'.$i.'" selected="selected">'.$array[$i].'</option>';
  44. }
  45. }
  46.  
  47. ?>
  48. <?php
  49. </select>
  50.  
  51. </div>
  52.  
  53. </fieldset>
  54. </form>
  55. </div>';
  56.  ?>
sniezny_wilk
Kod trochę okropny.. poprawiłem małe błędy, nie chciało mi się już sprawdzać dalej.. prosiłem też, żebyś podał co wyświetla ta zmienna $res['wojewodztwo']

  1. <?php
  2. mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  3. mysql_select_db('fi') or die ("Nie mozna zlokalizowac bazy danych");
  4.  
  5. $data = mysql_query ("SELECT * FROM `uzytkownicy` WHERE login='".$login."'");
  6. $res = mysql_fetch_array($data);
  7.  
  8. '<div>
  9.  <form action="mojedane.php" method="POST">
  10. <fieldset>
  11. <legend><b>Obecne dane:</b></legend>
  12. <div>
  13.  
  14. <div>
  15. <label for="imie">imię:</label>
  16. <input id="imie" name="imie" class="text" type="text" maxlength="30" readonly="readonly" value="'.$res['imie'].'" />
  17. </div>
  18. <div>
  19. <label for="nazwisko">nazwisko:</label>
  20. <input id="nazwisko" name="nazwisko" class="text" type="text" maxlength="30" readonly="readonly" value="'.$res['nazwisko'].'" />
  21. </div>
  22.  
  23. <div>
  24. <label for="wojewodztwo">województwo:</label>
  25.  <select name="wojewodztwo" disabled="disabled">';
  26.  
  27.  
  28. $value=$res['wojewodztwo'];
  29.  
  30. $array = array("dolnośląskie","kujawsko-pomorskie","lubelskie","lubuskie","łódzkie","małopolskie","mazowieckie","opolskie","podkarpackie",
  31.  "podlaskie","pomorskie","śląskie","świętokrzyskie","warmińsko-mazurskie","wielkopolskie","zachodniopomorskie");
  32.  
  33.  
  34. $end = count($array);
  35.  
  36. for($i=0; $i<$end;$i++){
  37. if($value != $i){
  38. echo '<option value="'.$i.'">'.$array[$i].'</option>';
  39. }
  40. else{
  41. echo '<option value="'.$i.'" selected="selected">'.$array[$i].'</option>';
  42. }
  43. }
  44.  
  45. </select>
  46.  
  47. </div>
  48.  
  49. </fieldset>
  50. </form>
  51. </div>';
  52.  ?>
em-ba
ta zmienna wyświetla nazwe wojewodztwa pobrana z bazy jako cyfre... pobiera cyfre i w zależności od tego jaka cyfra jest przyporzadkowana do jakiego woj. to tak wyswietla smile.gif ..chociaż nie wiem czy dokładnie o to pytałeś

Poprawiłem tamte błędy, uporządkowałem cały kod i ..działa biggrin.gif
wyświetla z bazy pole select ... i nadpisuje do bazy

Dziękuje wszystkim za pomoc smile.gif
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.