Ciao a tutti,
ho usato jquery per la chiamata ajax e per popolare le select
Lo script php crea il codice jquery che verrà eseguito dalla funzione eval()
E'necessario un databae mysql e 3 tabelle che potete scaricare qui
Qui potete trovare lo script in funzione
Ho creato due pagine
index.html : contiene le select e le funzioni javascript
comuni.php : contiene la connessione al db e le query per popolare le select
come sempre si accettano consigli critiche migliorie domande ... :byebye:
ps:
anche se sembrano andare a capo tutte le echo devono stare su una riga
ho usato jquery per la chiamata ajax e per popolare le select
Lo script php crea il codice jquery che verrà eseguito dalla funzione eval()
E'necessario un databae mysql e 3 tabelle che potete scaricare qui
Qui potete trovare lo script in funzione
Ho creato due pagine
index.html : contiene le select e le funzioni javascript
HTML:
<!DOCTYPE html>
<html>
<head>
<title>Comuni italiani</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<style type="text/css">
div.ricerca {
line-height: 34px;
}
div.ricerca span {
display: inline-block;
width: 110px;
text-align: right;
padding-right: 4px;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
comuni();
$("select").change(function(){
comuni();
})
})
function comuni() {
$.ajax({
type: "POST",
url: "comuni.php",
data: $("#ricerca").serialize(),
success: function(response){
eval(response);
}
});
}
</script>
</head>
<body>
<div class="ricerca">
<form id="ricerca">
<span>Regione :</span>
<select name="regione">
<option value=""></option>
</select><br/>
<span>Provincia :</span>
<select name="provincia">
<option value=""></option>
</select><br/>
<span>Comune :</span>
<select name="comune">
<option value=""></option>
</select>
</form>
</div>
</body>
</html>
PHP:
<?php
// recupero vaolori delle select
$regione = $_REQUEST['regione'];
$provincia = $_REQUEST['provincia'];
$comune = $_REQUEST['comune'];
// mi connetto al database
$sql = new mysqli("localhost", "root", "", "database");
// estraggo tutte le regioni
$query = "SELECT * FROM regioni";
$result = $sql->query($query);
// svuoto la select regione
echo "$('select[name=\"regione\"]').empty();";
// aggiungo una option vuota
echo "$('select[name=\"regione\"]').append('<option value=\"\"></option>');";
// ciclo i risultati della query
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
// imposto il selected sull'eventuale regione scelta
$selected = "";
if ($row['idRegione'] == $regione) {
$selected = "selected=\"selected\"";
}
// popolo la select
echo "$('select[name=\"regione\"]').append('<option $selected value=\"" . $row['idRegione'] . "\">" . addslashes($row['nomeRegione']) . "</option>');";
}
// se è stata scelta una regione
if (!empty($regione)) {
// estraggo le province della regione scelta
$query = "SELECT * FROM province WHERE idRegione ='$regione'";
$result = $sql->query($query);
// svuoto la select provincia
echo "$('select[name=\"provincia\"]').empty();";
// aggiungo una option vuota
echo "$('select[name=\"provincia\"]').append('<option value=\"\"></option>');";
// ciclo i risultati della query
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
// imposto il selected sull'eventuale provincia scelta
$selected = "";
if ($row['siglaProvincia'] == $provincia) {
$selected = "selected=\"selected\"";
}
// popolo la select
echo "$('select[name=\"provincia\"]').append('<option $selected value=\"" . $row['siglaProvincia'] . "\">" . addslashes($row['nomeProvincia']) . "</option>');";
}
}
// se è stata scelta una provincia
if (!empty($provincia)) {
// estraggo i comuni della provincia scelta
$query = "SELECT * FROM comuni WHERE provincia ='$provincia'";
$result = $sql->query($query);
// svuoto la select comune
echo "$('select[name=\"comune\"]').empty();";
// aggiungo una option vuota
echo "$('select[name=\"comune\"]').append('<option value=\"\"></option>');";
// ciclo i risultati della query
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
// imposto il selected sull'eventuale comune scelto
$selected = "";
if ($row['Istat'] == $comune) {
$selected = "selected=\"selected\"";
}
// popolo la select
echo "$('select[name=\"comune\"]').append('<option $selected value=\"" . $row['Istat'] . "\">" . utf8_encode(addslashes($row['Comune'])) . "</option>');";
}
}
?>
ps:
anche se sembrano andare a capo tutte le echo devono stare su una riga
Ultima modifica di un moderatore: