Ciao,
ho realizzato una select dinamica che si autoaggiorna prendendo regioni-province-città da un db.
dopo aver effettuato la ricerca, i campi delle select devono visualizzare la regione/provincia/città cercata, ma per mantenere attivi i filtri dinamici, mi esegue sempre tutti i cicli e per questo la pagina si carica molto lentamente.
E' possibile passare questi valori "al volo" da javascript a php in qualche modo?
O posso ottimizzare questo codice?
GRAZIE
Codice PHP:
<?php
//include ('system/connessione_db.php');
?>
<script>
function selezionaRegione(scelta) {
var province = document.form.province;
province.options.length = 0;
// if (scelta == '- seleziona -'){
// province.options[province.options.length] = new Option('- seleziona -');
//}
province.options[province.options.length] = new Option('- seleziona -', '0');
<?php
$queryContaRegioni = "SELECT * FROM regionii";
$resultContaRegioni = mysql_query($queryContaRegioni) or die ("NO");
$numeroRegioni = mysql_num_rows($resultContaRegioni);
for ($i = 1 ; $i<$numeroRegioni+1 ; $i++){
?>
if (scelta == "<?php echo $i ?>") {
<?php
$queryProvince = "SELECT * FROM province WHERE id_regione = '$i'";
$resultProvince = mysql_query($queryProvince) or die ("NO");
while ($risultatiProvince = mysql_fetch_array($resultProvince,MYSQL_ASSOC)){
$provincia=str_replace("'", "\'", $risultatiProvince['provincia']);
$provinciaSelected = $_GET['province'];
if ($provinciaSelected == $risultatiProvince['id']){
?>
province.options[province.options.length] = new Option('<?php echo $provincia ?>', '<?php echo $risultatiProvince['id'] ?>', true, true);
<?php
} else{
?>
province.options[province.options.length] = new Option('<?php echo $provincia ?>', '<?php echo $risultatiProvince['id'] ?>');
<?php
}
}
?>
}
<?php
}
?>
}
function selezionaCitta(scelta) {
var city = document.form.city;
city.options.length = 0;
city.options[city.options.length] = new Option('- seleziona -', '0');
<?php
$queryContaRegioni = "SELECT * FROM province";
$resultContaRegioni = mysql_query($queryContaRegioni) or die ("NO");
$numeroRegioni = mysql_num_rows($resultContaRegioni);
for ($i = 1 ; $i<$numeroRegioni+1 ; $i++){
?>
if (scelta == "<?php echo $i ?>") {
<?php
$queryProvince = "SELECT * FROM comuni WHERE id_provincia = '$i'";
$resultProvince = mysql_query($queryProvince) or die ("NO");
while ($risultatiProvince = mysql_fetch_array($resultProvince,MYSQL_ASSOC)){
$provincia=str_replace("'", "\'", $risultatiProvince['comune']);
$citySelected = $_GET['city'];
if ($citySelected == $risultatiProvince['id']){
?>
city.options[city.options.length] = new Option('<?php echo $provincia ?>', '<?php echo $risultatiProvince['id'] ?>', true, true);
<?php
} else {
?>
city.options[city.options.length] = new Option('<?php echo $provincia ?>', '<?php echo $risultatiProvince['id'] ?>');
<?php
}
}
?>
}
<?php
}
?>
}
function aggiornaOpzioni(scelta){
var valore_selezionato = document.form.region.selectedIndex;
var campo = document.form.region.options;
selezionaRegione(campo[valore_selezionato].value);
aggiornaOpzioniProvince();
}
function aggiornaOpzioniProvince(scelta){
var valore_selezionato = document.form.province.selectedIndex;
var campo = document.form.province.options;
selezionaCitta(campo[valore_selezionato].value);
}
/*function init(){
aggiornaOpzioni();
}
window.onload = init;*/
</script>
Regione:
<select name="region" size="1" onChange="aggiornaOpzioni();">
<option selected="selected">- seleziona -</option>
<?php
$regionSelect = $_GET['region'];
$query = "SELECT * FROM regionii";
$result = mysql_query ($query) or die ("Impossibile stampare le regioni");
while ($risultati = mysql_fetch_array($result,MYSQL_ASSOC)){
?>
<option <?php if ($regionSelect == $risultati['id']){ ?> selected="selected" <?php } ?> value="<?php echo $risultati['id'] ?>"><?php echo $risultati['regione'] ?></option>
<?php
}
?>
</select>
Provincia:
<select id="province" name="province" size="1" onChange="aggiornaOpzioniProvince();">
<option selected="selected">- seleziona -</option>
</select>
Citta:
<select name="city">
<option selected="selected">- seleziona -</option>
</select>
<!--<input type="submit" value="invia" />
</form>
-->