Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql] pola select z danymi z bazy zależne od siebie
neverever
post
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 44
Dołączył: 17.02.2004
Skąd: Wieliczka

Ostrzeżenie: (10%)
X----


Mam sobie 3 tabele A, B i C
-każda ma po dwa pola, id i nazwa + ewentualny id tabeli nadrzędnej
-każda kolejna jest zbiorem elementów poprzedniej, czyli są połaczone relacjami - chyba tak to mozna nazwać.

Mam też plik z trzema polami typu select odpowiadającymi każdej tabeli

Do pierwszego selecta ładuję wszystkie idA i odpowiadające im nazwy

I teraz chciał bym zrobić tak, żeby po wybraniu jakiegos elementu z pierwszego selecta wykonane zostało zapytanie zwracające do drugiego pola select idB i ich nazwy

Tu z kolei po wybraniu elementu kolejne zapytanie i wypełnienie trzeciego selecta otrzymanymi rekordami.

Cytat
Przykład:
idA, nazwa
0, a
1, b
2 , c

idB, idA, nazwa
0, 0, a
1, 0, b
2, 1, c

idC, idB, idA, nazwa
0, 2, 0, a
1, 2, 0, b
2, 1, 1, c


w select1 wybieram pole 0 (a), to powinno mi pobrać automatycznie z bazy rekordy z tabeli B gdzie idA=0, czyli tu idB=0 i 1 i wpisać je do pola select2.
Z drugiego selecta wybieram dalej np. pole 1 a stosowne zapytanie zwraca mi w trzecim polu select odpowiednie rekordy z tabeli C, tu był by to rekord idC=2

Jak cos takiego zrobić?

Znalazłem coś takiego http://www.kess.snug.pl/?sid=10&pid=30
ale problem w tym że te 3 selecty mam w większym formularzu z innymi polami input, textarea itp.

Jak więc to połączyć by dodać taką funkcjonalność do formulrza typu:
Cytat
<form ...>
<input type="text" ...>
<input type="text" ...>
<input type="text" ...>
<select name="A" size="1">
dane pierwszego selecta z bazy
</select>
<select name="B" size="1">
dane drugiego selecta z bazy na podstawie zawartości pierwszego
</select>
<select name="C" size="1">
dane trzeciego selecta z bazy na podstawie zawartości drugiego
</select>

<input type="text" ...>
<input type="text" ...>
...
</form>
Jak wysyłam ten formularz to ma mi dodać wszystkie wartości do bazy - więc jak tu wcisnąć obsługę tych selectów?
Zagnieżdżanie formularzy czy jak?
Pomocy!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
uli
post
Post #2





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


Bez AJAXa i tablic w JS też da się zrobić.

Niestety nie będzie to ładne rozwiązanie -> na onchange selecta1 i selecta2 przeładowujesz stronę i odbierasz te wartości. Na ich podstawie wyciągasz wartości następnego selecta.
Go to the top of the page
+Quote Post
neverever
post
Post #3





Grupa: Zarejestrowani
Postów: 278
Pomógł: 44
Dołączył: 17.02.2004
Skąd: Wieliczka

Ostrzeżenie: (10%)
X----


Cytat(tsharek @ 5.09.2007, 08:00:33 ) *
najleprzym sposobem byłby w Twoim przypadku AJAX. Wczytujesz dane do drugiego selecta po zdarzeniu onchange (wcześniej czyścisz tego selecta żeby nie dodawać podwójnie). Jest jeszcze jedna metoda bez używania ajaxa: wczytanie wszystkiego do tablic javascryptowych (wielowymiarowych) i odpowiednia procedurka odczytująca z tych tablic - ale rozwiązanie jest mniej wygodne i wydłuża czas ładowania strony przy dużej ilości tablic.

drugie rozwiązanie odpada bo danych będzie całkiem sporo. A co do ajaxa, to czy mogę prosić o jakiś przykład który by realizował coś takiego? -bo ja z ajaxa jestem całkiem zielony (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif)

Cytat(uli @ 5.09.2007, 08:54:10 ) *
Bez AJAXa i tablic w JS też da się zrobić.

Niestety nie będzie to ładne rozwiązanie -> na onchange selecta1 i selecta2 przeładowujesz stronę i odbierasz te wartości. Na ich podstawie wyciągasz wartości następnego selecta.
tylko jak to zrobić gdy te 3 pola select są elementem większego formularza, którego wysłanie ma spowodować określoną akcje-tu zapis wszystkich wartości do bazy?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 07:33