Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    select dinamica ajax e php lenta

    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> 
    -->
    http://www.ecogiochi.it - il primo blogames del pianeta
    http://www.grogonet.com - Grog on network

  2. #2
    Direi che questo script ajax...non è ajax.

    Ajax caricherebbe SOLO i dati da modificare e li inserirebbe nel form della pagina già aperta lato client.

    Questo script sembra solo riaprire ogni volta una nuova pagina, facendo le modifiche lato server.

    Devi rivederti come funziona ajax, e poi fare il tuo php che fornisce solo i dati che il form richiede ed il javascript che chiede solo i dati da modificare e li aggiorna nel form senza riaprire la pagina.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.