Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pobranie wartości do pola rozwijalnego select
Forum PHP.pl > Forum > PHP
peklo
witam ponownie juz dzisiaj
chcę do listy rozwijalnej pobrać dane z bazy. Robie tak:

  1. <select name="za" id="za">
  2. <option value=''><?php $ogloszenia['za'] ?></option>
  3. <option value='1'>godzinę</option>
  4. <option value='2'>dzień</option>
  5. </select>


I teraz pobiera i wyświetla mi zamiast nazwy to value=1 lub 2 co jest logiczne. Rozumiem że muszę dodać zdarzenie

  1. if (($ogloszenia['za'])==1)
  2. {
  3. echo 'godzinę';
  4. }
  5. else
  6. {
  7. ech 'dzien';
  8. }


czy idę w dobrym kierunku czy może jest na to lepszy sposób?
A może lepiej zastosować tu pętle?
trueblue
Jak wygląda tablica $ogloszenia?
Jeśli nie przechowujesz tam odpowiedników wartości "za" (czyli "godzinę", "dzień"), to nie ma kompletnie sensu wplatać tu php i warunków. Chyba, że w zależności do różnych warunków czasem będzie tam tylko "godzinę", czasem "dzień", obydwie lub zero wartości.
peklo
do pola select podczas edycji formularza ma być pobrana wartość w zależności od wyboru podczas dodawania do bazy. czyli może być jedna wartość: --wybierz- lub godzinę lub dzień lub inne których nie wpisywałem
trueblue
Tak, ale ja pytałem o zwartość tablicy $ogloszenia.
peklo
Array ( [id] => 6 [nazwa_ogloszenia] => fwefewfewfewfw [data_dod] => 2014-03-20 18:13:13 [rok] => [opis] => ewfwefewfwefew fewfwefewfew we3e4324322fewfewfew fewf34324 2 2r ef ew f32 442333333333 [miasto2] => eeeeeeeeeeeeeefewfewf [id_kraj] => [id_wojewodztwo] => 2 [czas] => 2014-04-19 19:13:13 [id_kategoria] => 1 [cena] => 2600 [za] => 1 [uszkodzony] => [poj] => [moc] => [przebieg] => [paliwo] => [stan] => [kolor] => [metalic] => [miejsca] => [rejestracja] => [normy] => [oc] => [przeglad] => [vin] => [wlasciciel] => [leasing] => [negocjacja] => [fv] => [kredyt] => [motoh] => [producent] => [naped] => [drzwi] => [karoseria] => [osoba] => [wojewodztwo] => Lubuskie [miasto] => [nazwa_firmy] => [telefon] => [wyb_kategorii1] => Array ( ) [wyb_kategorii2] => Array ( ) [zdjeciak] => Array ( [17] => Array ( [id_ogloszenia] => 6 ) [18] => Array ( [id_ogloszenia] => 6 [im] => 332641757093.png [thumb] => thumb_332641757093.png ) [19] => Array ( [id_ogloszenia] => 6 [im] => 460420852992.png [thumb] => thumb_460420852992.png ) ) [pjk] => Array ( [8] => Array ( [id_prawo_jazdy] => 4 ) [9] => Array ( [id_prawo_jazdy] => 6 ) [10] => Array ( [id_prawo_jazdy] => 8 ) [11] => Array ( [id_prawo_jazdy] => 11 ) ) [wyposazeniew] => Array ( ) )
trueblue
A jeśli w tablicy $ogloszenia nie będzie elementu $ogloszenia['za'] o wartości np. 2, to wtedy ma się nie pokazać jako opcja w select?
peklo
tak
mogą być w tym wypadku 3 warianty
nie wybrał nic (-wybierz-) czyli null lub 0
lub wybrał 1 (dzien)
lub wybrał 2 (godzina)
trueblue
Nie wiem czy się dobrze rozumiemy.
Ja pytam o to jak będzie wyglądał select i czy będzie zależny od wartości w tablicy $ogloszenia, a nie jakie warianty może wybrać użytkownik.
Czyli czy select będzie zawsze zawierał opcje: nic, dzień, miesiąc, czy też różną ich ilość właśnie w zależności od zawartości $ogloszenia.
peklo
dane w select są stałe, nic się w nich nie zmienia. Podczas dodawania formularza wybiera się jedną opcję z wielu. Teraz chcę pobrać do select poprostu to co zostało wybrane i tyle
trueblue
  1. <select name="za" id="za">
  2. <option value=''<?php if(empty($ogloszenia['za'])) echo " selected=\"selected\""; ?>></option>
  3. <option value='1'<?php if($ogloszenia['za']==1) echo " selected=\"selected\""; ?>>godzinę</option>
  4. <option value='2'<?php if($ogloszenia['za']==2) echo " selected=\"selected\""; ?>>dzień</option>
peklo
ok śliczne dzięki. Ale mam jeszcze jedno pytanie. Mam selecta który pobiera z bazy nazwy i jest ich ok 200.
Jak to można załatwić. Ma pobrać tylko jedną wartość jak i tutaj
trueblue
A zawartość elementu <option> też masz w bazie czy podobnie jak ten wyżej select, tylko wartości?
peklo
mam coś takiego

  1. $pdo = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
  2. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  3. $sql = $pdo->prepare('select * from z);
  4. $sql->bindValue('nazwa_z', $nazwa_z);
  5. $sql->execute();
  6. echo "<select name='id_kraj' id='id_kraj'>";
  7. echo "<option value='' >--wybierz--</option>";
  8. while ($row1 = $sql->fetch(PDO::FETCH_ASSOC)) {
  9. echo "<option value='$row1[id_kraj]'>$row1[nazwa_z]</option>";
  10. }
  11. echo "</select>";

i tu jest ok 200 nazw
trueblue
Jeśli chcesz zaznaczyć wybraną opcję w select, to robisz podobnie jak podałem wyżej, przy czym warunek wprowadzasz w linii 9.
peklo
kurde myślałem że się obędzie bez opisywania wszystkich rekordów. czyli każdy trzeba opisywać tak
<option value=''<?php if(empty($ogloszenia['za'])) echo " selected=\"selected\""; ?>></option>
Turson
Jak tworzysz selecta w pętli to w tej pętli możesz to zastosować i będzie jedna linijka
peklo
no własnie chodzi mi o jedna linijkę a nie o 200 smile.gif
Turson
  1. <?php while ($row1 = $sql->fetch(PDO::FETCH_ASSOC)): ?>
  2. <option value='$row1[id_kraj]'<?php if($ogloszenia['za']==$row1['id_kraj']) echo " selected"; ?>><?php echo $row1['nazwa_z'] ?></option>
  3. <?php endwhile; ?>
peklo
kurde zrobiłem tak i coś mi nie pobiera

  1. while ($row1 = $sql->fetch(PDO::FETCH_ASSOC)) {
  2. <option value='$row1[id_kraj]'<?php if($ogloszenia['id_kraj']==$row1['id_kraj']) echo " selected"; ?>><?php echo $row1['nazwa_z'] ?></option>
  3. <?php endwhile; ?>


dobra teraz mi pobiera właściwą nazwe ale nie wiem co wstawić w value.

  1. <option value=''<?php if($row1['id_kraj']==$ogloszenia['id_kraj']) echo " selected=\"selected\""; ?>><?php echo $row1['nazwa_z']?></option>
trueblue
Przecież w tym pierwszym wyżej przykładzie, gdzie źle ustawiałeś atrybut selected jest value.
peklo
dobra już mam. może komuś się przyda

  1. <option value="<?php echo $row1['id_wojewodztwo'] ?>"<?php if($row1['id_wojewodztwo']==$ogloszenia['id_wojewodztwo']) echo " selected=\"selected\""; ?>><?php echo $row1['nazwa_w']?></option>
com
jak już jesteś wewnątrz php to nie otwieraj znacznika jeszcze raz smile.gif
peklo
ok juz działa
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.