128 messaggi dal 01 febbraio 2006
E' vero che stupido... Ho fatto un giro incredibile e la soluzione era dietro l'angolo...

Thanks

Agostino Pasquin
128 messaggi dal 01 febbraio 2006
Fatto tutto e funziona alla perfezione.
Rimane solo un problema inspiegabile.
Il valore di alcuni comuni all'interno della combo cambia senza un motivo apparente.
Esempio:

Seleziono Lombardia, poi BG, dopodichè compare la lista dei comuni nella terza combo.
Il comune "Almenno San Bartolomeo", nella combo compare come "Alm?|menno San Bartolomeo"

Questo accade su pochi comuni ma accade e non sono riuscito a trovare una spiegazione.
Infatti nel DB il nome è correto e se apro la pagina cercacomuni.asp?id=BG, nella lista compare il nome esatto.

E' proprio un mistero...

Ciao e grazie...

Agostino Pasquin
60 messaggi dal 17 giugno 2003
è strano anke perchè se hai usato il carattere | come separatore dei record nella combo dovresti trovare 2 comuni uno "Alm?" e l'altro "menno San Bartolomeo"..

potresti provare a riscrivere il comune nel db..

oppure potresti modificare, temporaneamente, cercacomuni.asp

strSQL = "SELECT comune FROM t_elencocomuni WHERE ((provincia = '" & strReg & "') and (comune='Almenno San Bartolomeo')) ORDER BY comune ASC"
rsDB.Open strSQL
array_citta = rsDB("comune")

for i=1 to len(array_citta)
Response.Write(mid(array_citta,i,1) & " - " & asc(mid(array_citta,i,1)) & "<br>")
next

per vedere i codici ascii dei caratteri magari c'è qualche carattere strano...
128 messaggi dal 01 febbraio 2006
Fatto, ma i codici ASCII sono corretti:

A - 65
l - 108
m - 109
e - 101
n - 110
n - 110
o - 111
- 32
S - 83
a - 97
n - 110
- 32
B - 66
a - 97
r - 114
t - 116
o - 111
l - 108
o - 111
m - 109
e - 101
o - 111

Rimane un mistero, comunque sto cercando di capire perchè nel mio font della combo non si distingue, ma forse è una L minuscola dopo il ? e non una |

Agostino Pasquin
128 messaggi dal 01 febbraio 2006
Ho scoperto qual è il problema:
Trattasi delle lettere accentate, ad esempio "è".

Infatti prima di "Almenno San Bartolomeo" c'è "Almè" ed è la lettera accentata che fa confusione.

Ho provato a risolvere in questo modo, nella pagina cercacomuni.asp:

Replace((rsDB("comune")),"è","&egrave;")

Interrogando la pagina è tutto OK, ma nella combo compare "Alm&egrave;"

Hai qualche idea...

Agostino Pasquin
60 messaggi dal 17 giugno 2003
http://it.wikipedia.org/wiki/XMLHttpRequest

Se la risposta del server non è in formato XML, il 'responseText' potrebbe non funzionare correttamente mentre si utilizzano i caratteri non-ASCII, per esempio le lettere accentate come «è».


in pratica dovresti usare invece di responseText, responseXML nelle funzioni ricevi

qui trovi un esempio

http://www.w3schools.com/Ajax/ajax_responsexml.asp
128 messaggi dal 01 febbraio 2006
Se non ho capito male devo apportare delle modifiche solo alla funzione di ricezione dei valori giusto?

Solo che ho guardato l'esempio, ma non sono riuscito a modificare in maniera corretta la funzione seguente, che è quella interessata.

Riusciresti ad aiutarmi.

Grazie 1000

function ricevi() {
var strRes;
var arrValori;
var strComune;
var iPos;
if (ricerca_pro.readyState == 4) {
strRes=ricerca_pro.responseText;
arrValori=strRes.split("|");
document.formfun.prov.options.length=0;
for(i=0;i<arrValori.length;i++)
{
strComune=arrValori[i];
document.formfun.prov.options[document.formfun.prov.options.length]= new Option(strComune);
document.formfun.prov.options[i].value=arrValori[i];
}
}
}

Agostino Pasquin
60 messaggi dal 17 giugno 2003
allora ho fatto delle prove e tiposto il codice

questo è il file con le combo

<html>
<head>
<script src="selectprovince_xml.js"></script>
</head>
<body>
<form action="">
fai una scelta<br>
<select name="customers" class="txt" onchange="showProvince(this.value)">
<option value="">Seleziona una Regione</option>
<%
strDBComuni = "db1.mdb"
strConnComuni = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(strDBComuni)
Dim dbConn
set dbConn = server.CreateObject("adodb.connection")
'dbConn.open MM_local_conn_STRING
dbConn.open strConnComuni
sql = "SELECT regione FROM t_elencocomuni GROUP BY regione ORDER BY regione ASC"
set rs = dbConn.Execute(sql)

Do while not rs.eof
%>
<option value="<%=rs("regione")%>"><%=rs("regione")%></option>
<%
rs.movenext
Loop
%>
</select>


<select name="prov" class="txt" onChange="showComuni(this.value)">
<option value="0">Seleziona una Provincia</option>
</select>
<select name="comune" class="txt">
<option value="0" selected="selected">Seleziona un Comune</option>
</select>
</form>
</body>
</html>

------------------------------

questo è il file selectprovince_xml.js

var xmlhttp

function showProvince(str)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}
var url="getprovince_xml.asp";
url=url+"?regione="+str;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedRegione;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedRegione()
{
if (xmlhttp.readyState==4)
{
var xmlDoc=xmlhttp.responseXML.documentElement;
document.forms[0].elements["prov"].length=0;
var els = xmlDoc.getElementsByTagName("prov");
// Add a dummy option to the zip code drop-down list.
var option = document.createElement("OPTION");
option.text = "Seleziona una provincia";
option.value = "";
try
{
document.forms[0].elements["prov"].add(option, null);
}
catch(ex)
{
// For IE.
document.forms[0].elements["prov"].add(option);
}

for (var i = 0; i < els.length; i++)
{
option = document.createElement("OPTION");
option.text = option.value = els[i].firstChild.nodeValue;
try
{
document.forms[0].elements["prov"].add(option, null);
}
catch(ex)
{
// For IE.
document.forms[0].elements["prov"].add(option);
}
}
}
}




function showComuni(str)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}
var url="getcomuni_xml.asp";
url=url+"?prov="+str;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedProvincia;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedProvincia()
{
if (xmlhttp.readyState==4)
{
var xmlDoc=xmlhttp.responseXML.documentElement;
document.forms[0].elements["comune"].length=0;
var els = xmlDoc.getElementsByTagName("comune");
// Add a dummy option to the zip code drop-down list.
var option = document.createElement("OPTION");
option.text = "Seleziona un comune";
option.value = "";
try
{
document.forms[0].elements["comune"].add(option, null);
}
catch(ex)
{
// For IE.
document.forms[0].elements["comune"].add(option);
}

for (var i = 0; i < els.length; i++)
{
option = document.createElement("OPTION");
option.text = option.value = els[i].firstChild.nodeValue;
try
{
document.forms[0].elements["comune"].add(option, null);
}
catch(ex)
{
// For IE.
document.forms[0].elements["comune"].add(option);
}
}
}
}


function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}


-------------------

questo è il file getprovince_xml.asp

<%
response.expires=-1
response.contenttype="text/xml"
strDBComuni = "db1.mdb"
strConnComuni = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(strDBComuni)
Dim dbConn
on error resume next
set dbConn = server.CreateObject("adodb.connection")
'dbConn.open MM_local_conn_STRING
dbConn.open strConnComuni

strReg = Request.QueryString("regione")
sql = "SELECT siglaprovincia, provincia FROM t_elencocomuni WHERE regione = '" & strReg & "' GROUP BY siglaprovincia, provincia ORDER BY provincia ASC"

set rs = dbConn.Execute(sql)

if err <> 0 then
response.write(err.description)
set rs=nothing
set dbConn=nothing
else
response.write("<?xml version='1.0' encoding='ISO-8859-1'?>")
response.write("<regione>")
while(not(rs.eof))
response.write("<prov>" &rs.fields("provincia")& "</prov>")
rs.movenext

wend
response.write("</regione>")
set rs=nothing
set dbConn=nothing
end if
on error goto 0
%>


-------------------------

questo è il file getcomuni_xml.asp

<%
response.expires=-1
response.contenttype="text/xml"
strDBComuni = "db1.mdb"
strConnComuni = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(strDBComuni)
Dim dbConn
on error resume next
set dbConn = server.CreateObject("adodb.connection")
'dbConn.open MM_local_conn_STRING
dbConn.open strConnComuni
strReg = Request.QueryString("Prov")
sql = "SELECT comune FROM t_elencocomuni WHERE ((provincia = '" & strReg & "')) ORDER BY comune ASC"
set rs = dbConn.Execute(sql)

if err <> 0 then
response.write(err.description)
set rs=nothing
set dbConn=nothing
else
response.write("<?xml version='1.0' encoding='ISO-8859-1'?>")
response.write("<provincia>")
while(not(rs.eof))
response.write("<comune>" &rs.fields("comune")& "</comune>")
rs.movenext

wend
response.write("</provincia>")
set rs=nothing
set dbConn=nothing
end if
on error goto 0
%>


naturalmente devi cambiare le stringhe di connessione al db

spero ti sia d'aiuto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.