• User Attivo

    Form HTML con Ajax

    Salve a tutti!
    sto facendo un form in html con campo regione e campo nazione.
    Quando scelgo il primo campo, a seconda della scelta, mi viene popolato il secondo (è giusto così, con "regione" si intendono aree formate da + stati). Ho trovato il codice su internet e l'ho corretto un po' ma continua a non funzionare. Qualcuno sa trovare l'errore?
    Premetto che non so niente di ajax/javascript...
    Grazie mille!

    PAGINA DOVE E' CONTENUTO IL FORM:

    [HTML]<script type="text/javascript" src="../js/zxml.js"></script>
    <script type="text/javascript">
    function getDati(eleTarg, regione){
    alert ('ciao');
    oXmlHttp = zXmlHttp.createRequest();
    if (oXmlHttp)
    {
    var targ = document.getElementById(eleTarg);
    oXmlHttp.open("GET", "getNaz.php?regione="+regione);
    oXmlHttp.onreadystatechange = function()
    {
    if (oXmlHttp.readyState == 4 && oXmlHttp.status == 200)
    {setNazione(targ, oXmlHttp.responseXML);}
    }
    oXmlHttp.send(null);
    }
    }
    function setNazione(target, xmlDoc) {
    var opzione = document.createElement('option');
    var num = xmlDoc.documentElement.childNodes.length;
    var elem = xmlDoc.documentElement;
    var i;
    deleteNazione(target);

    for (i = 0; i < num; i++) {
    

    var testo = elem.getElementsByTagName("nome")*.childNodes[0].nodeValue;
    var opzione = new Option(testo, testo);
    target.options.add(opzione, -1);

    }
    

    }
    function deleteNazione(target) {
    var i;
    for (i=target.length-1; i>=0; i--) {
    target.remove(i);
    alert ('e tre');
    }
    }
    </script>

    <form id="reg" name="reg" method="post" action="registrazione_aut.php" style="margin:0;padding:0;" enctype="multipart/form-data">

    <!-- apro il campo regione -->
    <div style="text-align:left; float:left; vertical-align:top; width:200px; height:auto;">
    Regione: <br /><select name="regione" onChange="getDati('nazione', document.reg.regione.value)">
    <option value="" selected></option>
    <?php
    $query = "SELECT IDRegione, Regione".$_COOKIE[pathLingua]." FROM regioni ORDER BY IDRegione ASC";
    $res = mysql_query($query, $conn);
    $linea = mysql_fetch_array($res, MYSQL_ASSOC);
    while ($linea) {
    echo '<option value="'.$linea['IDRegione'].'">'.$linea['Regione'.$_COOKIE[pathLingua]].'</option>';
    $linea = mysql_fetch_array($res, MYSQL_ASSOC);
    }
    mysql_close($conn);
    ?>
    </select><br />
    <!-- chiudo campo regione -->
    </div>

        <!-- apro il campo nazione -->
    

    <div style="text-align:left; float:left; vertical-align:top; width:220px; height:auto;">
    *Nazione:<br />
    <select name="nazione" id="nazione">
    </select>
    <!-- chiudo campo nazione -->
    </div>

    </form>
    [/HTML]

    E QUESTA E' LA PAGINA getNaz.php

    [PHP]header("content-type: text/xml");

    echo '<?xml version="1.0" encoding="utf-8"?>';
    echo '<nazione>';

    $query = 'SELECT IDNazione, Nazione'.$_COOKIE['pathLingua'].' FROM nazioni ORDER BY Nazione'.$_COOKIE['pathLingua'].' ASC WHERE P_Regione ="'.$_GET['regione'].'"';
    $res = mysql_query($query, $conn);
    $linea = mysql_fetch_array($res, MYSQL_ASSOC);
    while ($linea) {
    echo '<nome>'.$linea['Nazione'.$_COOKIE['pathLingua']].'</nome>';
    $linea = mysql_fetch_array($res, MYSQL_ASSOC);
    }
    mysql_close($conn);

    echo '</nazione>';[/PHP]


  • Super User

    Ciao liamuscogiuri,

    hai già postato la stessa richiesta qui, e non è concesso dal regolamento:

    11. ** Crossposting**

    11.0. Non è consentito postare lo stesso messaggio o parti di esso in più aree del forum, salvo casi di particolare interesse che dovranno comunque essere autorizzati da un Admin.