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
qqrq
post
Post #2





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

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


neverever => gugiel, Panie bracie, tam o AJAX-ie od groma informacji... (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)
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(qqrq @ 5.09.2007, 13:19:22 ) *
neverever => gugiel, Panie bracie, tam o AJAX-ie od groma informacji... (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)
Może i od groma ale mówię że z ajaxem nigdy nie miałem do czynienia.
Bazując na stronie http://www.php.rk.edu.pl/w/p/powizane-pola...zystujce-ajaxa/
zrobiłęm coś takiego:
  1. <script type="text/javascript" src="ajax.js"></script>
  2. <script type="text/javascript">
  3. var ajax = new sack();
  4.  
  5. function getml(sel)
  6. {
  7. var cc = sel.options[sel.selectedIndex].value;
  8. document.getElementById('miasto').options.length = 0;
  9. if(cc.length>0){
  10. ajax.requestFile = 'getm.php?cc='+cc;
  11. ajax.onCompletion = makem;
  12. ajax.runAJAX();
  13. }
  14. }
  15.  
  16. function makem()
  17. {
  18. var obj = document.getElementById('miasto');
  19. eval(ajax.response);
  20. }
  21.  
  22. <form action="" enctype="multipart/form-data" method="post">
  23. Kraj:
  24. <select id="kraj" name="kraj" size="1" onchange="getml(this)">
  25. <option value="">--</option>
  26. <?php $conn = mysql_connect(HOST,USER,PASS);
  27. $db = mysql_select_db(DBASE,$conn);
  28. if($sql = mysql_query("SELECT * FROM kraj ORDER BY nazwa DESC",$conn))
  29. while ($rekord = mysql_fetch_array($sql)){
  30. echo '<option value="'.$rekord['id'].'">'.$rekord['nazwa'].'</option>';
  31. }
  32. mysql_close($conn);
  33. ?>
  34. </select><br />
  35. Miasto:
  36. <select id="miasto" name="miasto" size="1">
  37. <option value="">--</option>
  38.  
  39. <!-- tu dalsza część formularza -->
  40. </form>


A plik getm.php:
  1. <?php
  2. if(isset($_GET['cc'])){
  3. $k=$_GET['cc'];
  4. $conn = mysql_connect(HOST,USER,PASS);
  5. $db = mysql_select_db(DBASE,$conn);
  6. if($sql = mysql_query("SELECT * FROM miasto ORDER BY nazwa DESC WHERE kraj=$k",$conn))
  7. while ($rekord = mysql_fetch_array($sql)){
  8. echo '<option value="'.$rekord['id'].'">'.$rekord['nazwa'].'</option>';
  9. }
  10. mysql_close($conn);
  11. }
  12. ?>
A nawet tak:
  1. <?php 
  2. if(isset($_GET['cc'])) 
  3. { 
  4. include 'mysql.class.php'; 
  5. $a = new mysql_db(); 
  6. $a->connect(HOST, USER, PASS, DBASE); 
  7. $q = $a->query_select("SELECT * FROM miasto WHERE kraj = '".mysql_real_escape_string($_GET['cc'])."'"); 
  8. foreach($q as $i) 
  9. { 
  10. echo "obj.options[obj.options.length] = new Option('".$i['nazwa']."','".$i['id']."'); 
  11. "; 
  12. } 
  13. $a->destruct(); 
  14. } 
  15. ?>
Pokazuje mi się formularz, kraje ładnie wypełnione a po wybraniu jakiegoś, select miasta zostaje wyczyszczony i nic się w nim nie pojawia - dlaczego? Co jest nie tak w tym kodzie?

Ten post edytował neverever 5.09.2007, 13:32:05
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: 8.10.2025 - 18:11