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





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 3.03.2009

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


moj index
Kod


<script type="text/javascript" src="ajax.js"></script>

<script type="text/javascript">
var ajax = new sack();
function getml(sel)
{
    var cc = sel.options[sel.selectedIndex].value;
    document.getElementById('miasto').options.length=0;
    if(cc.length>0){
        ajax.requestFile = 'getm.php?cc='+cc;
        ajax.onCompletion = makem;
        ajax.runAJAX();
    }
}

function makem()
{
    var obj = document.getElementById('miasto');
    eval(ajax.response);
}

function reset_obj(obj){
if(obj!= null && obj.hasChildNodes())
    {
     for(var i=0; i <obj.childNodes.length;i++)
        obj.removeChild(obj.firstChild);
    }
}
</script>
<form action="">
<select id="kraj" name="kraj" size="1" onchange="getml(this)">
<option value="">--</option>
<?php
$conn = mysql_connect('mysql2.yoyo.pl','db698643','****');
$db = mysql_select_db('db698643',$conn);
if($sql = mysql_query("SELECT * FROM kraj ORDER BY nazwa ASC",$conn))

while ($rekord = mysql_fetch_array($sql)){
if($rekord['nazwa']=='Polska')
echo '<option value="'.$rekord['id'].'" selected>'.$rekord['nazwa'].'</option>';
else echo '<option value="'.$rekord['id'].'">'.$rekord['nazwa'].'</option>';
}
mysql_close($conn);
?>
</select>

<select id="miasto" name="miasto" size="1">
<option value="">Wybierz miasto</option>
</select>

</form>

a to getm.php
Kod


<?PHP

header('Content-Type: text/html; charset=iso-8859-2');

define('HOST', 'mysql2.yoyo.pl');
define('USER', 'db698643');
define('PASS', '*****');
define('DBASE', 'db698643');

if(isset($_GET['cc'])){
$k=htmlspecialchars($_GET['cc']);
$conn = mysql_connect('mysql2.yoyo.pl','db698643','*****');
$db = mysql_select_db('db698643',$conn);

echo "obj.options[obj.options.length] = new Option('--','');";
if($sql = mysql_query("SELECT * FROM miasto WHERE kraj='$k' ORDER BY nazwa ASC",$conn))
while ($rekord = mysql_fetch_array($sql)){
echo '<option value="'.$rekord['id'].'">'.$rekord['nazwa'].'</option>';
echo "obj.options[obj.options.length] = new Option('".$rekord['nazwa']."','".$rekord['id']."');";
}

mysql_close($conn);
}
?>

i jeszcze plik ajax, ale wątpie zeby tam był błąd
a to struktura tabel
Kod


CREATE TABLE kraj (
  id int(11) unsigned NOT NULL auto_increment,
  nazwa varchar(255) NOT NULL,
  PRIMARY KEY  (id),
  UNIQUE KEY nazwa (nazwa)
);

CREATE TABLE miasto (
  id int(11) unsigned NOT NULL auto_increment,
  nazwa varchar(255) NOT NULL,
  kraj int(11) NOT NULL,
  PRIMARY KEY (id)

W pierwszym polu select są nazwy krajów, drugie jest puste, skrypt chyba lub raczej polega na numerze miasta przyporządkowanym do id w kraju, ale nic się nie wyświetla, gdzie jest błąd? prosze o pomoc, pozdrawiam
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: 9.10.2025 - 09:40