Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    5

    Form iscrizione parte geografica Ajax,Php e Mysql

    Ciao ragazzi,
    sto lavorando ad un form per la modifica dei dati personali, in particolare sulla provenienza geografica ho qualche difficoltà.
    La pagina principale è php richiama i dati dal database e fin quì tutto ok; il database non è perfetto ovvero comprende tutte le nazioni al Mondo, ma per alcune mancano le regioni, per altre le province (ovviamente sono le nazioni + piccole).
    Ogni valore è racchiuso in un div denominati: zona1, zona2, zona3 che corrispondono a regione, città e zip; se passo da una nazione con la regione ad una senza succede un casino ovvero la regione non compare, ma al suo posto cioè in zona1 compare il listbox con le città della nuova nazione e in zona2 resta la città precedente
    Se poi ritorno ad una nazione con regione funziona tutto perfettamente.
    Sapreste aiutarmi sulle cause di questo disguido e sulle possibili soluzioni.
    Postare tutto è impossibile, perchè sono 3 file .js e 3 .php che effettuano le operazioni.
    Posso postare le funzioni che utilizzo per richiamare i file.

    Grazie
    Pietro

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Senza vedere una riga di codice nemmeno Amelia la strega che amalia puo' aiutarti.

    Intanto e' da verificare che il difetto risieda nella parte javascript... ragionaci un tantino perche' se cosi' non e' rischi di perdere parecchio tempo in questo forum.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    5
    Penso di aver trovato il problema, dovrebbe dipendere dalle chiamate delle funzioni js, infatti, quando seleziono una nazione senza regioni viene cmq richiamata loadXMLDoc(key) e quindi il listbox con le città compare nel div con id zona1, invece dovrebbe comparire in zona2; ora mi serve un'idea per aggirare l'ostacolo.
    Queste sono le funzioni JS:

    <script language="JavaScript"><!--
    var req;
    function loadXMLDoc(key) {
    var url="geo.php?country="+key;
    getObject("zona1").innerHTML = 'Please wait...';
    try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch(e) {
    try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
    catch(oc) { req = null; }
    }
    if (!req && typeof XMLHttpRequest != "undefined") { req = new XMLHttpRequest(); }
    if (req != null) {
    req.onreadystatechange = processChange;
    req.open("GET", url, true);
    req.send(null);
    }
    }
    function processChange() {
    if (req.readyState == 4 && req.status == 200) {
    getObject("zona1").innerHTML = req.responseText;
    }
    }
    function loadXMLDoc2(key2,key) {
    var url="geo2.php?reg="+key2+"&country="+key;
    getObject("zona2").innerHTML = 'Please wait...';
    try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch(e) {
    try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
    catch(oc) { req = null; }
    }
    if (!req && typeof XMLHttpRequest != "undefined") { req = new XMLHttpRequest(); }
    if (req != null) {
    req.onreadystatechange = processChange2;
    req.open("GET", url, true);
    req.send(null);
    }
    }
    function processChange2() {
    if (req.readyState == 4 && req.status == 200) {
    getObject("zona2").innerHTML = req.responseText;
    }
    }
    function loadXMLDoc3(key3,key2) {
    var url="geo3.php?town="+key3+"&reg="+key2;
    getObject("zona3").innerHTML = 'Please wait...';
    try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch(e) {
    try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
    catch(oc) { req = null; }
    }
    if (!req && typeof XMLHttpRequest != "undefined") { req = new XMLHttpRequest(); }
    if (req != null) {
    req.onreadystatechange = processChange3;
    req.open("GET", url, true);
    req.send(null);
    }
    }
    function processChange3() {
    if (req.readyState == 4 && req.status == 200) {
    getObject("zona3").innerHTML = req.responseText;
    }
    }
    function loadXMLDoc4(key4) {
    var url="geo3.php?town="+key4;
    getObject("zona3").innerHTML = 'Please wait...';
    try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch(e) {
    try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
    catch(oc) { req = null; }
    }
    if (!req && typeof XMLHttpRequest != "undefined") { req = new XMLHttpRequest(); }
    if (req != null) {
    req.onreadystatechange = processChange3;
    req.open("GET", url, true);
    req.send(null);
    }
    }
    function getObject(name) {
    var ns4 = (document.layers) ? true : false;
    var w3c = (document.getElementById) ? true : false;
    var ie4 = (document.all) ? true : false;

    if (ns4) return eval('document.' + name);
    if (w3c) return document.getElementById(name);
    if (ie4) return eval('document.all.' + name);
    return false;
    }
    //--></script>

    ***********************Questo il file geo.php:***************************

    $chkreg = mysql_query("select distinct(b.codreg) from prov a, regioni b where a.sigla='$country' and b.sigla=a.sigla and a.codreg=b.codreg order by a.codreg desc, b.descreg desc");
    $totchkreg = mysql_num_rows($chkreg);
    if($totchkreg > 0){
    $nazreg = mysql_result($chkreg,0,"codreg");
    }
    if ($nazreg!=""){
    echo "<div id=\"zona1\">Region:<select id=\"idreg\" name=\"idreg\" class=\"testo_nero\" onChange=\"loadXMLDoc2(this.value, sigla.value);\"><option value=\"\"></option>";
    $cercareg = mysql_query("select codreg, descreg from regioni where sigla='$country' order by descreg asc");
    $totreg = mysql_num_rows($cercareg);
    if($totreg > 0){
    while($reg_obj=mysql_fetch_object($cercareg)){
    $dbre=$reg_obj->codreg;
    $dbdescreg=$reg_obj->descreg;
    echo "<option value=\"$dbre\"";
    if ($idreg == $dbre){
    echo " selected";
    $varregid=$reg_obj->codreg;
    $strgreg .= "and codreg='$varregid'";
    }
    echo ">$dbdescreg</option>";
    }
    echo "</select></div>";
    }
    }else{
    if (($country=='PR')or($country=='VI')or($country=='G U')or($country=='AS')or($country=='MP')){
    // echo "<div id=\"zona1\"></div>"; // campo città in + se passo da MP a IT
    echo "<div id=\"zona2\">City:<select id=\"idprov\" name=\"idprov\" class=\"testo_nero\" onChange=\"loadXMLDoc4(this.value);\"><option value=\"\"></option>";
    $cercaprov = mysql_query("select distinct(descprov) from prov where sigla='$country' order by descprov asc");
    $totprov = mysql_num_rows($cercaprov);
    if($totprov > 0){
    while($cerca_obj=mysql_fetch_object($cercaprov)){
    $dbdescpr = $cerca_obj->descprov;
    echo "<option value=\"$dbdescpr\"";
    if($idprov == $dbdescpr){
    echo " selected";
    $vardescprov=$cerca_obj->descprov;
    }
    echo ">$dbdescpr</option>";
    }
    }
    echo "</select>"; // non chiudo il div, altrimenti con IE stampa una riga in +
    if($vardescprov!=""){
    echo "<div id=\"zona3\">Zip:<select name=\"zip\" id=\"zip\" class=\"testo_nero\"><option value=\"\"></option>";
    $cercazip = mysql_query("select distinct(zip) from prov where descprov='$vardescprov' order by zip asc, idprov asc");
    $totzip = mysql_num_rows($cercazip);
    if($totzip > 0){
    while($zip_obj=mysql_fetch_object($cercazip)){
    $dbdesczip = $zip_obj->zip;
    echo "<option value=\"$dbdesczip\"";
    if($zip == $dbdesczip){
    echo " selected";
    $varzip = $zip_obj->zip;
    }
    echo ">$dbdesczip</option>";
    }
    }
    if ($varzip!=""){ // dovrebbe andar bene anche se non si seleziona zip
    $cercatown = mysql_query("select idprov from prov where descprov='$vardescprov' and zip='$varzip' order by idprov asc");
    $tottown = mysql_num_rows($cercatown);
    if($tottown > 0){
    $varidprov = mysql_result($cercatown,0,"idprov");
    }
    }
    }
    echo "</select></div>";
    }else{
    // echo "<div id=\"zona1\"></div>"; // ultima modifica
    echo "<div id=\"zona2\">City:<select id=\"idprov\" name=\"idprov\" class=\"testo_nero\"><option value=\"\"></option>";
    $cercaprov = mysql_query("select distinct(descprov) from prov where sigla='$country' order by descprov asc");
    $totprov = mysql_num_rows($cercaprov);
    if($totprov > 0){
    while($cerca_obj=mysql_fetch_object($cercaprov)){
    $dbdescpr = $cerca_obj->descprov;
    echo "<option value=\"$dbdescpr\"";
    if($idprov == $dbdescpr){
    echo " selected";
    $vardescprov=$cerca_obj->descprov;
    }
    echo ">$dbdescpr</option>";
    }
    }
    echo "</select></div>";
    /*if ($vardescprov!=""){
    echo "<div id=\"zona3\"></div>";
    }*/
    }
    }

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 © 2026 vBulletin Solutions, Inc. All rights reserved.