Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pole typu select
Forum PHP.pl > Forum > PHP
qubec26
Mam w swoim formularzu pole typu select, które zapisuje do bazy danych wartości
  1. echo "<td><select name='reason' value='$reason_tbl'><option>Late Input Material</option><option>Producer Quality</option><option>Producibility Technical</option><option>Capacity Issue</option><option>Machine Down Time</option><option>Schedule Change / Demand Planning</option><option>Commercial Issues</option><option>Export Control</option></select></td></tr>";


Zapisywanie działa jak należy.
Ale przy ponownym oglądnięciu formularza zawsze to pole ustawia się na pierwszą wartość.
Jak zrobić tak, aby pokazywało wartość, która została zapisana w tabeli?
askone
Hej

Ustaw dla każdego <option> atrybut [value]. Wtedy do bazy pójdzie wartość z tego atrybutu. Przy odczycie wystarczy że ustawisz atrybut [selected] dla <option> którego [value] jest równe wartości odczytanej z bazy.
erix
Generujesz w pętli i dla bieżącej wartości wstawiasz atrybut selected.
qubec26
  1. echo "<td><select name='reason'><option value='1'>Late Input Material</option><option value='2'>Producer Quality</option><option value='3'>Producibility Technical</option><option value='4'>Capacity Issue</option><option value='5'>Machine Down Time</option><option value='6'>Schedule Change / Demand Planning</option><option value='7'>Commercial Issues</option><option value='8'>Export Control</option></select></td></tr>";


Wygląda to tak.
Jak teraz to zrobić w pętli?
FORem?
erix
Wydziel sobie poszczególne elementy do tablicy. Każdy z nich wyświetlaj w pętli, przy okazji sprawdzając, czy to bieżący element.

Jeśli tak, dopisz selected.
Fixus
musisz mieć tablicę na zasadzie

$key => $value gdzie $key to te 1, 2, 8 a $value to Late Input Material, Producer Quality

Następnie coś takiego

  1. $select = '<select name="reason">';
  2. for($i = 0; $i < count($tablicawartosci); $i++) { // $tablica wartości to ta o której wspomniałem wyżej
  3. if($tablicawartosci[$i] == $_POST['wartosc_z_posta'])
  4. $select .= '<option value="'.$i.'" selected="true">'.$tablicawartosci[$i].'</option>';
  5. else
  6. $select .= '<option value="'.$i.'">'.$tablicawartosci[$i].'</option>';
  7. }


coś takiego
erix
Mamy kelnera? snitch.gif
qubec26
Dzięki wielkie za pomoc. Działa malinowo. aaevil.gif
duch4ever
A jak to zrobić jeśli do kodu nie możemy wstawić nic poza zmiennymi np echo ' tu kod html i zmienne ';
Nie możemy tam korzystać z ifa pobierać z bazy itp? Nie możemy przerwać echo na 2 części smile.gif macie pomysł?
erix
No a jak sobie wyobrażasz manipulację selectem z zewnątrz?

Zostaje tylko JS.
Fixus
trochę mnie zastanawia kilka kwestii

echo to zmienna o.O

i czemu niby nie można dać if`a ?
kitol
Może coś w ten deseń:
  1. echo str_replace('<option>'.$pole_wybrane.'<', '<option selected="selected">'.$pole_wybrane.'<',$string_z_selectem);
duch4ever
mam
  1. $output = ''
i na końcu go wyświetlam
  1. return $output;
czyli jest to zmienna i jak w tej zmiennej wstawić if?
Fixus
o czym ty gadasz ? jak do zmiennej wstawić if ? if to konstrukcja warunkowa a zmienna przechowuje wartość. nie możesz połączyć jednego z drugim

rozumiesz różnicę ?
duch4ever
Co się tak spinasz, toż mówię. Poza tym zmienna może przechowywać też inne rzeczy niż wartość więc nie wprowadzaj w błąd.
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.