Partendo dal tutorial https://www.mrw.it/ajax/articoli/select-dinamiche-jquery-php_1062_2.html ho cercato di adattarlo alla mia esigenza di avere quattro select e non solo tre. I file li ho impostati in questo modo:
form con le quattro select:
ho inserito nel head il richiamo alla libreria jquery.js ed in un file esterno ho inserito lo script javascript in questo modo:
Il file select_abitativa00.php ha il seguente codice:
Impostando il codice in questo modo si caricano le regioni e le province inizialmente, ma una volta che ho selezionato la regione non ho il caricamento delle province.
Deduco che l'errore è o nel file javascript oppure nel file select_abitativa00.php.
Se qualcuno può darmi delle indicazioni, ho più volte riveduto il codice senza riuscire ad individuare l'ingrippo
Grazie
form con le quattro select:
HTML:
<form method="post" action="monumenti.php">
<p>
<label for="region"><strong>Regione:</strong></label><br />
<select id="region" name="region" onchange="selProvCom(this.value);">
<option value="" selected="selected">scegli la regione </option>
<?php
// Collegamento ad database.
include("connessione.php");
// Query selezione tutte le regioni.
$sql = "select * from regioni order by regione";
// Eseguo la query.
$result = mysql_query($sql, $link);
while($region = mysql_fetch_array($result)) {
?>
<option value="<?php echo $region['id']; ?>"><?php echo $region['regione']; ?></option>
<?php
}
?>
</select>
</p>
<p>
<label for="province"><strong>Provincia:</strong></label><br />
<select id="province" name="province" onchange="selCom(this.value);">
<option value="" selected="selected">scegli la provincia</option>
<?php
// Query selezione tutte le province.
$sql = "select * from province order by provincia";
// Eseguo la query.
$result = mysql_query($sql, $link);
while($province = mysql_fetch_array($result)) {
?>
<option value="<?php echo $province['id']; ?>"><?php echo $province['provincia']; ?></option>
<?php
}
?>
</select>
</p>
<p>
<label for="city"><strong>Città:</strong></label><br />
<select id="city" name="city" onchange="selMonum(this.value);">
<option value="" selected="selected">scegli il comune</option>
<?php
// Query selezione tutte le province.
$sql = "select * from comune order by comuni";
// Eseguo la query.
$result = mysql_query($sql, $link);
while($comune = mysql_fetch_array($result)) {
?>
<option value="<?php echo $comune['id']; ?>"><?php echo (htmlspecialchars($comune['comune'])); ?></option>
<?php
}
?>
</select>
</p>
<p>
<label for="monumento"><strong>Monumento:</strong></label><br />
<select id="monumento" name="monumento">
<option value="$monumento" selected="selected">scegli il monumento</option>
</select>
</p>
<input name="submit" type="submit" class="submit" value="cerca" />
</form>
ho inserito nel head il richiamo alla libreria jquery.js ed in un file esterno ho inserito lo script javascript in questo modo:
HTML:
function selProvCom(idRegion) {
// Seleziono province di questa regione.
$.get("select_abitativa00.php", { regionid: idRegion, requestItems: 'province'},
function(dataProvince){
$("select[id='province']").empty();
var options = '<option value="">scegli la provincia</option>';
var arrayProvince = dataProvince.split( '||');
for (var i = 1; i < arrayProvince.length; i++) {
var provincia = arrayProvince[i].split( /,/);
options += '<option value="' + provincia[0] + '">' + provincia[1] + '</option>';
}
$("select[id='province']").html(options);
});
// Seleziono comuni di questa regione.
$.get("select_abitativa00.php", { regionid: idRegion, requestItems: 'comuni'},
function(dataComuni){
$("select[id='city']").empty();
var options = '<option value="">scegli il comune</option>';
var arrayComuni = dataComuni.split( '||');
for (var i = 1; i < arrayComuni.length; i++) {
var comune = arrayComuni[i].split( /,/);
options += '<option value="' + comune[0] + '">' + comune[1] + '</option>';
}
$("select[id='city']").html(options);
});
}
//seleziono i comuni della provincia
function selCom(idProvincia) {
// Seleziono i comuni di questa provincia
$.get("select_abitativa00.php", { provinciaid: idProvincia, requestItems: 'comuni'},
function(dataComuni){
$("select[id='city']").empty();
var options = '<option value="">scegli il comune</option>';
var arrayComuni = dataComuni.split( '||');
for (var i = 1; i < arrayComuni.length; i++) {
var comune = arrayComuni[i].split( /,/);
options += '<option value="' + comune[0] + '">' + comune[1] + '</option>';
}
$("select[id='comuni']").html(options);
});
// Seleziono monumenti di questa provincia.
$.get("select_abitativa00.php", { provinciaid: idProvincia, requestItems: 'monumenti'},
function(dataMonumenti){
$("select[id='monumento']").empty();
var options = '<option value="">scegli il monumento</option>';
var arrayMonumenti = dataMonumenti.split( '||');
for (var i = 1; i < arrayMonumenti.length; i++) {
var monumento = arrayMonumenti[i].split( /,/);
options += '<option value="' + monumento[0] + '">' + monumento[1] + '</option>';
}
$("select[id='monumento']").html(options);
});
}
function selMonum(idComune) {
// Seleziono i monumenti di questo comune
$.get("select_abitativa00.php", { cityid: idCity, requestItems: 'monumenti'},
function(dataMonumenti){
$("select[id='monumento']").empty();
var options = '<option value="">scegli il monumento</option>';
var arrayMonumenti = dataMonumenti.split( '||');
for (var i = 1; i < arrayMonumenti.length; i++) {
var monumento = arrayMonumenti[i].split( /,/);
options += '<option value="' + monumento[0] + '">' + monumento[1] + '</option>';
}
$("select[id='monumento']").html(options);
});
}
Il file select_abitativa00.php ha il seguente codice:
PHP:
<?php
// Seleziona Province e Comuni.
include("connessione.php");
if (isset($_GET['regionid']) and is_numeric($_GET['regionid'])) {
if (isset($_GET['requestItems']) and $_GET['requestItems']==='province') {
$regionID = intval($_GET['regionid']);
$query = <<<EOQ
SELECT *
FROM province
WHERE id_regione = '$regionID'
ORDER BY provincia
EOQ;
$result = mysql_query($query, $link);
$returnProvince = '';
while ($row = mysql_fetch_array($result)) {
$returnProvince .= "||".$row['id'].",".$row['provincia'];
}
print_r($returnProvince);
}
else if (isset($_GET['requestItems']) and $_GET['requestItems']==='comuni') {
$regionID = intval($_GET['regionid']);
$query = <<<EOQ
SELECT *
FROM comuni
WHERE id_regione = '$regionID'
ORDER BY comune
EOQ;
$result = mysql_query($query, $link);
$returnComuni = '';
while ($row = mysql_fetch_array($result)) {
$returnComuni .= "||".$row['id'].",".$row['comune'];
}
print_r($returnComuni);
}
else if (isset($_GET['requestItems']) and $_GET['requestItems']==='monumenti') {
$regionID = intval($_GET['regionid']);
$query = <<<EOQ
SELECT *
FROM monumenti
WHERE id_regione = '$regionID'
ORDER BY monumento
EOQ;
$result = mysql_query($query, $link);
$returnMonumenti = '';
while ($row = mysql_fetch_array($result)) {
$returnMonumenti .= "||".$row['id'].",".$row['monumento'];
}
print_r($returnMonumenti);
}
}
else if (isset($_GET['provinciaid']) and is_numeric($_GET['provinciaid'])) {
if (isset($_GET['requestItems']) and $_GET['requestItems']==='comuni') {
$provinciaID = intval($_GET['provinciaid']);
$query = <<<EOQ
SELECT *
FROM comuni
WHERE id_provincia = '$provinciaID'
ORDER BY comune
EOQ;
$result = mysql_query($query, $link);
$returnComuni = '';
while ($row = mysql_fetch_array($result)) {
$returnComuni .= "||".$row['id'].", ".$row['comune'];
}
print_r($returnComuni);
}
else if (isset($_GET['requestItems']) and $_GET['requestItems']==='monumenti') {
$provinciaID = intval($_GET['provinciaid']);
$query = <<<EOQ
SELECT *
FROM monumenti
WHERE id_provincia = '$provinciaID'
ORDER BY monumento
EOQ;
$result = mysql_query($query, $link);
$returnMonumenti = '';
while ($row = mysql_fetch_array($result)) {
$returnMonumenti .= "||".$row['id'].",".$row['monumento'];
}
print_r($returnMonumenti);
}
}
else if (isset($_GET['cityid']) and is_numeric($_GET['cityid'])) {
if (isset($_GET['requestItems']) and $_GET['requestItems']==='monumenti') {
$comuneID = intval($_GET['cityid']);
$query = <<<EOQ
SELECT *
FROM monumenti
WHERE id_comune = '$cityID'
ORDER BY monumento
EOQ;
$result = mysql_query($query, $link);
$returnMonumenti = '';
while ($row = mysql_fetch_array($result)) {
$returnMonumenti .= "||".$row['id'].",".$row['monumento'];
}
print_r($returnMonumenti);
}
}
?>
Impostando il codice in questo modo si caricano le regioni e le province inizialmente, ma una volta che ho selezionato la regione non ho il caricamento delle province.
Deduco che l'errore è o nel file javascript oppure nel file select_abitativa00.php.
Se qualcuno può darmi delle indicazioni, ho più volte riveduto il codice senza riuscire ad individuare l'ingrippo
Grazie