Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyświetlenie w selectach danych uprzednio zapisanych w bazie
maza66
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 22.03.2010

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


Witam.
Chcę wyświetlić uprzednio wybrane i zapisane w bazie dane, ale z możliwością ich ponownej edycji/wyboru z listy/.
Mam funkcję jn:
  1. <?php
  2. function klienci()
  3. {
  4. global $connect;
  5. $wynik='<option value=""></option>';
  6. $query="SELECT id, klient_id, status FROM klienci WHERE status='PROD'";
  7. $result=mysqli_query($connect, $query);
  8.  
  9. if($result)
  10. {
  11. while($dat=mysqli_fetch_assoc($result))
  12. $wynik.='<option value="'.$dat['klient_id'].'">'.$dat['klient_id'].'</option>';
  13. }
  14. return $wynik;
  15. }
  16.  
  17. // wyświetlam listę
  18. <form method="POST" action="">
  19. ...
  20. <input id="wybrany" type="hidden" value="'.$row['klient'].'"><select name="klient" size="1">'.klienci().'</select>
  21. ...
  22. </form>
  23. ?>


I dzięki poniższemu skryptowi na liście wyświetla się zapisany w bazie klient, czyli wszystko jest ok.

[JAVASCRIPT] pobierz, plaintext
  1. <script>
  2. $( document ).ready(function() {
  3. $('option').each(function(){
  4. if (this.value == $('#wybrany').val()){
  5. this.setAttribute('selected', 'selected');
  6. }
  7. });
  8. });
  9. </script>
[JAVASCRIPT] pobierz, plaintext


Ale problem pojawia się jak chciałbym zrobić to samo kilka razy, np: dodając analogiczne funkcje klienci_2() , klienci_3()
(plus powielone skrypty #wybrany2 i #wybrany3 ) i potem:

  1. <input id="wybrany" type="hidden" value="'.$row['klient'].'"><select name="klient" size="1">'.klienci().'</select>
  2. <input id="wybrany2" type="hidden" value="'.$row['klient2'].'"><select name="klient2" size="1">'.klienci_2().'</select>
  3. <input id="wybrany3" type="hidden" value="'.$row['klient3'].'"><select name="klient3" size="1">'.klienci_3().'</select>


Tak utworzone listy wyświetlają "losowo" zapisane w bazie dane po każdym odświeżeniu.
Gdzie tkwi błąd?
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




Czy ja dobrze widze? Generujesz liste klientow w SELECT/OPTION a potem przy pomocy JS zaznaczasz wlasciwy po wyswietleniu strony?
Przeciez takie rzeczy sie robi na etapie generowania tego SELECT/OPTION i juz js sie do tego nie uzywa. Poprostu dla wybranego option ustawiasz selected i z banki

<option ..... selected="selected">....</option>

przenosze


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

"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
maza66
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 22.03.2010

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


A czy Twoje rozwiązanie nie dotyczy przypadkiem selectów zamkniętych? Czyli takich gdzie są na sztywno ustawione np. 4 opcje i koniec.
Bo w moim przypadku opcje selecta pobierane są z bazy, która może być cały czas rozbudowywana i zmieniana.
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




nie, to doczy kazdego rozwiazania czy to statyczne czy dynamiczne. Nikt ci nie broni dynamicznie zrobic OPTION z selected="selected" gdy trzeba smile.gif


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

"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
maza66
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 22.03.2010

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


Poratujesz jakimś przykładem?
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




  1. while($dat=mysqli_fetch_assoc($result)){
  2. if ($dat['klient_id'] === $id_do_zaznaczenia) {
  3. // jesli to jest twoj klient co szukasz, to dodajesz dla niego selected="selected"
  4. $wynik.='<option value="'.$dat['klient_id'].'" selected="selected">'.$dat['klient_id'].'</option>';
  5. } else {
  6. $wynik.='<option value="'.$dat['klient_id'].'">'.$dat['klient_id'].'</option>';
  7. }
  8. }


Banalne, nieprawdaz?

No, ale zebys nie mial za latwo to teraz sam wymysl skad wziasc $id_do_zaznaczenia


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

"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
maza66
post
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 22.03.2010

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


Dla mnie to takie banalne nie było... ;-) Ale udało się :-) Wielkie dzięki!

Jeszcze jedno pytanie... Da się coś takiego zrobić?

  1. <input type="text" name="klient" value="<?php echo ($klient !== '') ? ''.$klient.'' : klienci() ; ?>"></td>


Czyli jeżeli nie istnieje zmienna $klient to wyświetla funkcję klienci().

Ten post edytował maza66 3.04.2022, 17:52:05
Go to the top of the page
+Quote Post
aras785
post
Post #8





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


  1. <input type="text" name="klient" value="<?= isset($klient) && $klient !== '' ? $klient : klienci() ?>">


lub

  1. <input type="text" name="klient" value="<?= !empty($klient) ? $klient : klienci() ?>">


Ten post edytował aras785 3.04.2022, 18:45:28
Go to the top of the page
+Quote Post
maza66
post
Post #9





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 22.03.2010

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


Niestety nie wyświetla się poprawnie -> w polu input wyświetla "<option value=..."
Może przyczyna leży w konstrukcji wyświetlania funkcji
  1. $wynik.='<option value="'.$dat['klient_id'].'">'.$dat['klient_id'].'</option>';


Ten post edytował maza66 3.04.2022, 20:53:50
Go to the top of the page
+Quote Post
trueblue
post
Post #10





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


if klient pusty{
select+klienci()
}
else{
input+klient
}


--------------------
Go to the top of the page
+Quote Post
maza66
post
Post #11





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 22.03.2010

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


Dzięki! O to chodziło.
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: 21.08.2025 - 11:33