Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di angelo85ct
    Registrato dal
    Dec 2007
    Messaggi
    322

    selecd dinamiche...Da Diventare pazzi

    Ciao ragazzi,
    ho provato a creare tre select dinamiche, la prima che dipende dalla seconda e la seconda della terza, con php e js.
    Le prime due funzionano tranquillamente, selezione una provicia e mi torna tutti i comuni presenti. Adesso vorrei ampliarla a tre select, faccio tutto indenticamente però neanche mi visualizza la terza select, come mai?
    Vi posto il codice:

    index.php
    Codice PHP:
    <?php 
    mysql_connect
    ("localhost","root","") or die (mysql_error());
    mysql_select_db("trinacria") or die (mysql_error());
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
        <title>Popolare select dinamiche con AHAH</title>

    <script type="text/javascript">
    function createRequestObj(){ // creo un'istanza XMLHttpRequest
        var re;
        var browser=navigator.appName;
        if (browser=="Microsoft Internet Explorer"){ // sniff browser
            re=new ActiveXObject("Microsoft.XMLHTTP");
        } else re=new XMLHttpRequest();
        return re;
    }

    var http=createRequestObj();

    function popolaElemento(idElDaPopolare, paginaFonteDati, metodo, parametri){ // faccio una richiesta
        // alert(parametri); // debug
        var url=paginaFonteDati+"?" + parametri
        http.open(metodo, url , true)
        document.getElementById(idElDaPopolare).innerHTML="<select><option value=\"0\">caricamento in corso...</option></select>";
        http.onreadystatechange=function(){
            if (http.readyState==4 || http.readyState=="complete"){
                if (http.status == 200){
                    document.getElementById(idElDaPopolare).innerHTML=http.responseText;
                } else {
                    document.getElementById(idElDaPopolare).innerHTML="<select><option>ERRORE "+http.status+"</option></select>";
                }
            }
        }
        http.send(null);
    }

    function popolaElemento2(idElDaPopolare, paginaFonteDati, metodo, parametri){ // faccio una richiesta
        // alert(parametri); // debug
        var url=paginaFonteDati+"?" + parametri
        http.open(metodo, url , true)
        document.getElementById(idElDaPopolare).innerHTML="<select><option value=\"0\">caricamento in corso...</option></select>";
        http.onreadystatechange=function(){
            if (http.readyState==4 || http.readyState=="complete"){
                if (http.status == 200){
                    document.getElementById(idElDaPopolare).innerHTML=http.responseText;
                } else {
                    document.getElementById(idElDaPopolare).innerHTML="<select><option>ERRORE "+http.status+"</option></select>";
                }
            }
        }
        http.send(null);
    }
    </script>
    </head>
    <body>
    <h1>Esempio</h1>

        <form action="pagina.php" method="get">
        
        <label for="provincia" class="home">Provincia:</label>
        <select title="selezionare la provincia di appartenenza" name="provincia" id="provincia" onChange="javascript:popolaElemento('selectComune', 'popola.php', 'get', 'id_prov='+this.value);">
        <option value="">-----Tutte-----</option>
        <?php
        $strProvince
    =mysql_query("SELECT * FROM provincia");
        
    // scrivo la select per intero
        
    while ($result=mysql_fetch_array($strProvince)){ ?>
            <option value="<?php echo $result[0?>"><?php echo $result[1?></option>
    <?php ?>
        </select>


        <label for="comune" class="home">Comune:</label>
        <span id="selectComune">    
        <select title="selezionare il comune di appartenenza" name="comune" id="comune" onChange="javascript:popolaElemento2('selectFrazione', 'popolafraz.php', 'get', 'id_comune='+this.value);">
        <option value="">-----Tutte-----</option>
            <?php
            $strComuni
    ="SELECT * FROM comuni";
            
    $risultati2=mysql_query($strComuni$connessione) OR DIE ("Impossibile eseguire la query");
            while (
    $rs=mysql_fetch_array($risultati2)){ ?>
                <option value="<?php echo $rs[0?>"><?php echo $rs[1?></option>
    <?php ?>
        </select>
        </span>


        <label for="frazione" class="home">Frazione:</label>
        <span id="selectFrazione">
            <select title="selezionare la Frazione di appartenenza" name="Frazione" id="Frazione">
            <option value="">-----Tutti-----</option>
            <?php
            $strComuni
    ="SELECT * FROM frazione";
            
    $risultati2=mysql_query($strComuni$connessione) OR DIE ("Impossibile eseguire la query");
            while (
    $rs=mysql_fetch_array($risultati2)){ ?>
                <option value="<?php echo $rs[0?>"><?php echo $rs[1?></option>
    <?php ?>
            </select>
        </span>
        
        
    <?PHP $chiudi=mysql_close($connessione); ?>             
        </form>
    </body>
    </html>
    popola.php
    Codice PHP:
    if (isset($_GET["id_prov"])){
       
        
    $strSQL="SELECT * FROM comune";
        if (
    is_numeric($_GET["id_prov"]) AND $_GET["id_prov"]>0$strSQL.=" WHERE id_prov=".$_GET["id_prov"];
        
    $strSQL.=" ORDER BY comune";
        
    // connessione al db
        
    $connessione=mysql_connect("localhost""root""");
        
    $db=mysql_select_db("trinacria") OR DIE ("Impossibile connettersi al database");
        
    $risultati=mysql_query($strSQL$connessione) OR DIE ("Impossibile eseguire la query");
        
    // scrivo la select per intero
        
    echo "<select title=\"selezionare il comune di appartenenza\" name=\"comune\" id=\"comune\"><option value=\"0\">-----Tutti-----</option>";
        while (
    $rs=mysql_fetch_array($risultati)){
            echo 
    "<option value=\"".$rs["id_comune"]."\">".htmlentities($rs["comune"])."</option>";
        }
        echo 
    "</select>";
        
    //$chiudi=mysql_close($connessione);
             


    popolafraz.php
    Codice PHP:
    if (isset($_GET["id_comune"])){
       
        
    $strSQL="SELECT * FROM frazione";
        if (
    is_numeric($_GET["id_comune"]) AND $_GET["id_comune"]>0$strSQL.=" WHERE id_comune=".$_GET["id_comune"];
        
    $strSQL.=" ORDER BY frazione";
        
    // connessione al db
        
    $connessione=mysql_connect("localhost""root""");
        
    $db=mysql_select_db("trinacria") OR DIE ("Impossibile connettersi al database");
        
    $risultati=mysql_query($strSQL$connessione) OR DIE ("Impossibile eseguire la query");
        
    // scrivo la select per intero
        
    echo "<select title=\"selezionare la frazione di appartenenza\" name=\"frazione\" id=\"frazione\"><option value=\"0\">-----Tutti-----</option>";
        while (
    $rs=mysql_fetch_array($risultati)){
            echo 
    "<option value=\"".$rs["id_fraz"]."\">".htmlentities($rs["frazione"])."</option>";
        }
        echo 
    "</select>";
        
    $chiudi=mysql_close($connessione);
             


  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    La pagina popolafraz.php funziona correttamente giusto non da errori lato server?
    Hai verificato?
    Comunque, quando scateni l'evento onchange della prima select richiami la pagina popola.php che stampa i risultati della query sostituendo la select originale.
    Ma la nuova select comune della pagina popola.php non ha l'evento onchange
    Select originale pagina index.php
    <select title="selezionare il comune di appartenenza" name="comune" id="comune" onChange="java-scriptopolaElemento2('selectFrazione', 'popolafraz.php', 'get', 'id_comune='+this.value);"> (per riferirsi ad una option la sintassi corretta è this.options[this.selectedIndex].value il metodo da te utilizzato potrebbe non funzionare su alcuni browser)
    e la sostituisci con quella di popola.php:
    <select title=\"selezionare il comune di appartenenza\" name=\"comune\" id=\"comune\"><option value=\"0\">-----Tutti-----</option>"
    ma l'onchange dov'è finita?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.