Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PHP HTML select option
gucio1
post
Post #1





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 30.04.2016

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


Witam,
mam następujący problem.

Mam formularz gdzie wypełnia się kilka danych inputami a ostatnią opcję wybiera się z listy selected.
Każdy input ma walidacje i zapamiętuje co było wybrane w razie błędów przy wpisywaniu.
Chciałbym żeby select też zapamiętywało wybór.
Dane do select podciągnięte są z bazy i ich liczba stale rośnie.

Normalnie zapisuje wszystkie podane hasła w inputach do zmiennych sesyjnych a potem je wyświetlam w zależności od tego czy istnieją.
Jak to wygląda w wypadku select? wiem że jest opcja "selected" w optionie ale nie wiem, musiał bym sprawdzać warunkiem co było wybrane i potem w zależności dopisywać do którejś z opcji "selected"?

Jest na to jakiś prosty sposób?

Pozdrawiam.
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jak to wygląda w wypadku select? wiem że jest opcja "selected" w optionie ale nie wiem, musiał bym sprawdzać warunkiem co było wybrane i potem w zależności dopisywać do którejś z opcji "selected"?
Dokladnie tak


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
gucio1
post
Post #3





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 30.04.2016

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


Mam coś takiego:

Pobieram wzystkich użytkowników z bazy
  1.  
  2. $pobierz = $polaczenie->query("SELECT * FROM uzytkownicy WHERE user='1' ORDER BY nazwisko ASC ");
  3.  
  4. echo '<select name="osobaAdmin" class="form-control">';
  5. while ($row = $pobierz->fetch_assoc()) {
  6. $nazwa = $row['nazwisko'] .' '.$row['imie'];
  7. $zapis = '<option>' . $nazwa. '</option>';
  8.  
  9. echo $zapis;
  10. }
  11. echo '</select>';
  12.  


  1.  
  2. $pobierz = $polaczenie->query("SELECT * FROM uzytkownicy WHERE user='1' ORDER BY nazwisko ASC ");
  3.  
  4.  
  5. echo '<select name="osobaAdmin" class="form-control">';
  6. while ($row = $pobierz->fetch_assoc()) {
  7. $nazwa = $row['nazwisko'] .' '.$row['imie'];
  8. $zapis = '<option>' . $nazwa. '</option>';
  9.  
  10. if (isset($_SESSION['fr_osobaAdmin'])) {
  11. $zapis = '<option>'.$_SESSION['fr_osobaAdmin'].'</option>';
  12. unset($_SESSION['fr_osobaAdmin']);
  13. }
  14.  
  15.  
  16. echo $zapis;
  17. }
  18. echo '</select>';
  19.  



Działa bez selected. Czy to jest w porządku?

Jednak nie działa tak jak powinno.
Po pierwsze na 1 miejsce na liście wskakuje mi to co było wybrane przed wysłaniem formularza a potem jest też do wyboru jeszcze raz na swoim miejscu.
Po drugie nie usuwa mi zmiennej sesyjnej.
Po trzecie po wysłaniu formularza nie ma wszystkich opcji do wyboru które powinny być.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Dostales odpowiedz jak to powinno byc zrobione. Czemu kombinujesz jak kon pod gorke?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


zobrazuję ci to

IF saved_value
EQUAL curent_value_from_while
THEN add "selected"
Go to the top of the page
+Quote Post
gucio1
post
Post #6





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 30.04.2016

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


Dobra, chyba śmiga wink.gif. Daj znać czy tak powinno być.
  1.  
  2. $pobierz = $polaczenie->query("SELECT * FROM uzytkownicy WHERE user='1' ORDER BY nazwisko ASC ");
  3.  
  4. echo '<select name="osobaAdmin" class="form-control">';
  5. while ($row = $pobierz->fetch_assoc()) {
  6. $nazwa = $row['nazwisko'] .' '.$row['imie'];
  7.  
  8. $zapis = '<option>' . $nazwa. '</option>';
  9.  
  10. if($nazwa == $_SESSION['fr_osobaAdmin']){
  11. $zapis = '<option selected>' . $nazwa. '</option>';
  12. unset($_SESSION['fr_osobaAdmin']);
  13.  
  14. echo $zapis;
  15. }
  16. echo '</select>';
  17.  


Ten post edytował gucio1 21.03.2017, 15:07:15
Go to the top of the page
+Quote Post
Pyton_000
post
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Może być, tylko zgubiłeś } po unset();
Go to the top of the page
+Quote Post
viking
post
Post #8





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Możesz trochę poprawić czytelność nie dublując przy okazji kodu:

  1. echo '<select name="osobaAdmin" class="form-control">';
  2. $optionTemplate = '<option %s>%s</option>';
  3. foreach ($a as $row) {
  4. $nazwa = $row['nazwisko'] .' '.$row['imie'];
  5. $selected = '';
  6. if ($x) {
  7. $selected = 'selected';
  8. }
  9. echo sprintf($optionTemplate, $selected, $nazwa);
  10. }
  11. echo '</select>';


--------------------
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 Aktualny czas: 20.08.2025 - 05:44