Ok dla testów napisałem ci taki kod korzystający z bazy danych, ajaxa i php. Może ci się przyda a jak nie to chociaż popatrz jak działa, może wyciagniesz jakieś wnioski:
Pliki:
index.php - Główny plik
blokuj.php - Plik odpowiedzialny za generowanie drugiej listy, to z nim się łączymy za pomocą ajaxa
polacz_z_baza.php - Parametry do połączenia z bazą.
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title>Formularze</title>
<script type="text/javascript" src="advajax.js"></script>
<script type="text/javascript">
function blokuj(id)
{
var adres = "blokuj.php?id="+id;
advAJAX.get({
url: adres,
onLoading:function(obj) {document.getElementById("lista2").innerHTML='<img src="loading.gif" />'; },
onSuccess:function(obj) { document.getElementById("lista2").innerHTML=obj.responseText; },
onError:function(obj) {alert(obj.responseText); }
});
}
</script>
</head>
<body>
<form action="" method="">
<div id="lista1">
<select name ="lista1" onchange="blokuj(this.value);">
<?php
require_once('polacz_z_baza.php');
$id=$r['id'];
$nazwa=$r['nazwa'];
echo '<option value='.$id.'>'.$nazwa.'</option>'; }
?>
</select></div>
<div id="lista2">
<select name ="lista2">
<?php
require_once('polacz_z_baza.php');
$id=$r['id'];
$nazwa=$r['nazwa'];
echo '<option value='.$id.'>'.$nazwa.'</option>'; }
?>
</select>
</div>
</form>
</body>
</html>
blokuj.php
<?php
header('Content-Type: text/html; charset=ISO-8859-2'); $id=(int)$_GET['id'];
require_once('polacz_z_baza.php');
$wynik = mysql_query("Select * from miasta where id not in ($id);"); echo '<select name="lista2">'; $id=$r['id'];
$nazwa=$r['nazwa'];
echo '<option value='.$id.'>'.$nazwa.'</option>'; }
?>
polacz_z_baza.php
<?php
//Umieszczam w stałych informacje potrzebne do połączenia z bazą
// te dane będziesz musiał sobie pozmieniać tak abu odpowiadały Twoim
DEFINE ('DB_HOST','localhost');
die ("Nie można nawiązać połączenia z serwerem bazy danych MySQL"); die ("Nie można otworzyć bazy selecty"); ?>
i baza danych, a właściwie tabela przechowująca nazwy miast
miasta.sql
# Baza danych : `selecty`
#
# --------------------------------------------------------
#
# Struktura tabeli dla `miasta`
#
CREATE TABLE `miasta` (
`id` tinyint(4) NOT NULL AUTO_INCREMENT,
`nazwa` tinytext NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=8 ;
#
# Zrzut danych tabeli `miasta`
#
INSERT INTO `miasta` VALUES (1, 'Łódź');
INSERT INTO `miasta` VALUES (2, 'Warszawa');
INSERT INTO `miasta` VALUES (3, 'Gdańsk');
INSERT INTO `miasta` VALUES (4, 'Gdynia');
INSERT INTO `miasta` VALUES (5, 'Skierniewice');
INSERT INTO `miasta` VALUES (6, 'Wałbrzych');
no i do tego będzie potrzebna ci jeszcze biblioteka advAJAX autorstwa Anakina, aby włączyć funkcjonalność ajaxa.
Wszystkie potrzebne pliki leżą
tutajForum pododawało znaki / przed cudzysłowiami więc trzeba poprawić, a pliku .rar jest wszystko ok.
Sprawdzałem na IE 6.0 i FF 1.5.0.6