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 $i<$numeroRegioni+$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 $i<$numeroRegioni+$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> 
-->