z wczesniejszych moich tematow otrzymalem wzor pewnego kodu zaleznych od siebie selectow
http://turson.pl/blog/dynamiczne-zalezne-selecty/
Kod przerobilem. Niestety cos nie dziala w drugiej liscie. Druga lista powinna pokazywac nr-y pokoji przypisanych do ulicy wybranej w pierwszym slelecie. W moim przypadku pomimo wybraniu jakielkowiek pierwszej opcji w drugiej liscie pojawiaja sie wszystkie pokoje, ponizej kod
Kod
<?php
// POŁĄCZENIE Z BAZĄ DANYCH
$db = new PDO('mysql:host=localhost;dbname=rooms', 'reex', 'reex1', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")) or die();
// POBRANIE WSZYSTKICH MAREK SAMOCHODÓW (DISTINCT - pobieramy marki bez powtórzeń)
$stmt = $db->query("SELECT Nazwa FROM ulica");
$ulica = $stmt->fetchAll();
?>
<form action="" method="post" id="formularz">
<label for="ulica">Wybierz Ulice</label>
<select id="ulica" name="ulica">
<option>Wybierz</option>
<?php foreach($ulica as $v): ?>
<option><?php echo $v['Nazwa']; ?></option>
<?php endforeach; ?>
</select>
<label for="pokoj">Wybierz pokoj</label>
<select id="pokoje" name="pokoj">
</select>
</form>
<script>
$('#ulica').on('change', function(){
var ulica = $(this).val();
$.ajax({
type: 'POST',
url: 'szukaj.php',
data: { 'ulica':ulica },
success: function(msg){
$("#pokoje").html(msg);
}
})
})
$('#formularz').submit(function(){
/*
SPRAWDZAMY, CZY UŻYTKOWNIK WYBRAŁ JAKIŚ MODEL, JEŻELI NIE TO NIE POZWALAMY WYSŁAĆ FORMULARZA
*/
if (!$("#pokoje option:selected").length){
alert('Wybierz pokoj');
return false;
}
})
</script>
// POŁĄCZENIE Z BAZĄ DANYCH
$db = new PDO('mysql:host=localhost;dbname=rooms', 'reex', 'reex1', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")) or die();
// POBRANIE WSZYSTKICH MAREK SAMOCHODÓW (DISTINCT - pobieramy marki bez powtórzeń)
$stmt = $db->query("SELECT Nazwa FROM ulica");
$ulica = $stmt->fetchAll();
?>
<form action="" method="post" id="formularz">
<label for="ulica">Wybierz Ulice</label>
<select id="ulica" name="ulica">
<option>Wybierz</option>
<?php foreach($ulica as $v): ?>
<option><?php echo $v['Nazwa']; ?></option>
<?php endforeach; ?>
</select>
<label for="pokoj">Wybierz pokoj</label>
<select id="pokoje" name="pokoj">
</select>
</form>
<script>
$('#ulica').on('change', function(){
var ulica = $(this).val();
$.ajax({
type: 'POST',
url: 'szukaj.php',
data: { 'ulica':ulica },
success: function(msg){
$("#pokoje").html(msg);
}
})
})
$('#formularz').submit(function(){
/*
SPRAWDZAMY, CZY UŻYTKOWNIK WYBRAŁ JAKIŚ MODEL, JEŻELI NIE TO NIE POZWALAMY WYSŁAĆ FORMULARZA
*/
if (!$("#pokoje option:selected").length){
alert('Wybierz pokoj');
return false;
}
})
</script>
szukaj.php
Kod
<?php
$db = new PDO('mysql:host=localhost;dbname=rooms', 'reex', 'reex1', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")) or die();
$stmt = $db->prepare("SELECT `Nazwa`,`NrPokoju` FROM `pokoj`,`ulica` WHERE pokoj.UlicaId=ulica.Id ");
$stmt->bindValue(':ulica', $_POST['ulica'], PDO::PARAM_STR);
$stmt->execute();
$pokoje = $stmt->fetchAll();
$odpowiedz = null;
if(count($pokoje)){
foreach($pokoje as $v){
$odpowiedz .= '<option>'.$v['NrPokoju'].'</option>';
}
}
echo $odpowiedz;
$db = new PDO('mysql:host=localhost;dbname=rooms', 'reex', 'reex1', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")) or die();
$stmt = $db->prepare("SELECT `Nazwa`,`NrPokoju` FROM `pokoj`,`ulica` WHERE pokoj.UlicaId=ulica.Id ");
$stmt->bindValue(':ulica', $_POST['ulica'], PDO::PARAM_STR);
$stmt->execute();
$pokoje = $stmt->fetchAll();
$odpowiedz = null;
if(count($pokoje)){
foreach($pokoje as $v){
$odpowiedz .= '<option>'.$v['NrPokoju'].'</option>';
}
}
echo $odpowiedz;