Select dinamiche con ASP & AJAX

Fulvio59

Nuovo Utente
3 Gen 2009
24
0
1
Salve a tutti,

ho letto l'articolo "Select dinamiche di regioni e province con ASP ed AJAX" e volevo estenderlo anche ai comuni, ma non conosco ajax e non so bene come fare.
Potete darmi qualche indicazione ?

Grazie in anticipo.
 

Fulvio59

Nuovo Utente
3 Gen 2009
24
0
1
E' sempre l'esempio da cui sono partito io (Regioni e province), ma io cercavo di estenderlo ai comuni.
 

lukeonweb

Utente Attivo
5 Mar 2003
5.177
10
38
43
Napoli
www.lucaruggiero.it
Vedo che i miei tutorial continuano a mietere vittime :)

La soluzione più veloce è "clonare" lo script AJAX, rinominando i nomi di funzioni e variabili, ed anche dell'ID dell'oggetto HTML di output.

Quella più elegante sarebbe parametrizzare un'unica funzione e configurarla (con delle condizioni interne) in modo da essere espandibile ad N livelli.

Dov'è che ti blocchi?
 

Fulvio59

Nuovo Utente
3 Gen 2009
24
0
1
Ciao grazie della risposta,

mi blocco quando, dopo aver selezionato la regione ed ottenuto il filtro sulla combo della provincia, seleziono la provincia.
La selezione non mi da alcun risultato, non riesco a filtrare da provincia a comune.


Ti posto il codice come ho provato a modificarlo.

Lo script aggiunto è:
comuni.asp

Gli script modificati sono
form.asp
italia.js


FORM.ASP

<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
Call CnOpen()
%>
<html>
<head>
<title>Selezione di Regioni e Province con ASP ed AJAX</title>
<script type="text/javascript" src="italia.js"></script>
</head>
<body>

<form name="italia">

<select name="regioni" onchange="Province(this.value)">
<option value="0"></option>
<%
Dim SQL
SQL = "SELECT * FROM regioni ORDER BY reg_nome ASC"
rs.Open SQL, cn, 1
While rs.EOF = False
%>
<option value="<%=rs("reg_id")%>"><%=rs("reg_nome")%></option>
<%
rs.MoveNext
Wend
rs.Close
%>
</select>

<br><br>
<div id="risultati">
<select name="province" onchange="Comuni(this.value)">
<option value="0"></option>
<%
Dim SQL1
SQL1 = "SELECT * FROM province ORDER BY pro_nome ASC"
rs.Open SQL1, cn, 1
While rs.EOF = False
%>
<option value="<%=rs("pro_id")%>"><%=rs("pro_nome")%></option>
<%
rs.MoveNext
Wend
rs.Close
%>
</select>

<select name="comuni" >
<option value="0"></option>
<%
Dim SQL2
SQL2 = "SELECT * FROM comuni ORDER BY com_nome ASC"
rs.Open SQL2, cn, 1
While rs.EOF = False
%>
<option value="<%=rs("com_id")%>"><%=rs("com_nome")%></option>
<%
rs.MoveNext
Wend
rs.Close
%>
</select>

</div>

</form>

</body>
</html>
<%
Call CnClose()
%>




ITALIA.JS


var XMLHTTP;

function Province(ID)
{
if (parseInt(ID) > 0)
{
var url = "province.asp?id=" + ID;
XMLHTTP = RicavaBrowser(CambioStato);
XMLHTTP.open("GET", url, true);
XMLHTTP.send(null);
}
else
{
document.getElementById("risultati").innerHTML = "";
}
}

function Comuni(ID)
{
if (parseInt(ID) > 0)
{
var url = "comuni.asp?id=" + ID;
XMLHTTP = RicavaBrowser(CambioStato);
XMLHTTP.open("GET", url, true);
XMLHTTP.send(null);
}
else
{
document.getElementById("risultati").innerHTML = "";
}
}


function CambioStato()
{
if (XMLHTTP.readyState == 4)
{
var R = document.getElementById("risultati");
R.innerHTML = XMLHTTP.responseText;
}
}


function RicavaBrowser(QualeBrowser)
{
if (navigator.userAgent.indexOf("MSIE") != (-1))
{
var Classe = "Msxml2.XMLHTTP";
if (navigator.appVersion.indexOf("MSIE 5.5") != (-1));
{
Classe = "Microsoft.XMLHTTP";
}
try
{
OggettoXMLHTTP = new ActiveXObject(Classe);
OggettoXMLHTTP.onreadystatechange = QualeBrowser;
return OggettoXMLHTTP;
}
catch(e)
{
alert("Errore: l'ActiveX non verrà eseguito!");
}
}
else if (navigator.userAgent.indexOf("Mozilla") != (-1))
{
OggettoXMLHTTP = new XMLHttpRequest();
OggettoXMLHTTP.onload = QualeBrowser;
OggettoXMLHTTP.onerror = QualeBrowser;
return OggettoXMLHTTP;
}
else
{
alert("L'esempio non funziona con altri browser!");
}
}




PROVINCE.ASP



<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
Dim id
id = Request.QueryString("id")
If IsNumeric(id) = False Or id < 1 Then
Response.Write "Selezionare una regione valida!"
Response.End
End If
Call CnOpen()
Dim SQL
SQL = "SELECT * FROM province "
SQL = SQL & "WHERE pro_regione = " & id & " "
SQL = SQL & "ORDER BY pro_nome ASC"
rs.Open SQL, cn, 1
If rs.EOF Then
Response.Write "Selezionare una regione valida!"
Else
%>
<select name="regioni">
<option value="0"></option>
<%
While rs.EOF = False
%>
<option value="<%=rs("pro_id")%>"><%=rs("pro_nome")%></option>
<%
rs.MoveNext
Wend
%>
</select>
<%
End If
rs.Close
Call CnClose()
%>





COMUNI.ASP



<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
Dim id
id = Request.QueryString("id")
If IsNumeric(id) = False Or id < 1 Then
Response.Write "Selezionare una provincia valida!"
Response.End
End If
Call CnOpen()
Dim SQL
SQL = "SELECT * FROM comuni "
SQL = SQL & "WHERE com_provincia = " & id & " "
SQL = SQL & "ORDER BY com_nome ASC"
'Response.Write sql
'Response.end

rs.Open SQL, cn, 1
If rs.EOF Then
Response.Write "Selezionare una provincia valida!"
Else
%>
<select name="province">
<option value="0"></option>
<%
While rs.EOF = False
%>
<option value="<%=rs("com_id")%>"><%=rs("com_nome")%></option>
<%
rs.MoveNext
Wend
%>
</select>
<%
End If
rs.Close
Call CnClose()
%>


Grazie in anticipo
 

lukeonweb

Utente Attivo
5 Mar 2003
5.177
10
38
43
Napoli
www.lucaruggiero.it
Vedo che le combo delle province e dei comuni si trovano nell'unico div "risultati".

Prova a creare due div:

<div id="ris_province">
<select>
...
</select>
</div>

<div id="ris_comuni">
<select>
...
</select>
</div>

lavorando di conseguenza con gli script.

Fammi sapere!
 

Fulvio59

Nuovo Utente
3 Gen 2009
24
0
1
Ho modificato lo script form.asp come mi hai indicato,

poi ho modificato itaia.js come segue:

var XMLHTTP;

function Province(ID)
{
if (parseInt(ID) > 0)
{
var url = "province.asp?id=" + ID;
XMLHTTP = RicavaBrowser(CambioStatoProv);
XMLHTTP.open("GET", url, true);
XMLHTTP.send(null);
}
else
{
document.getElementById("ris_province").innerHTML = "";
}
}

function Comuni(ID)
{
if (parseInt(ID) > 0)
{
var url = "comuni.asp?id=" + ID;
XMLHTTP = RicavaBrowser(CambioStatoCom);
XMLHTTP.open("GET", url, true);
XMLHTTP.send(null);
}
else
{
document.getElementById("ris_comuni").innerHTML = "";
}
}


function CambioStatoProv()
{
if (XMLHTTP.readyState == 4)
{
var R = document.getElementById("ris_province");
R.innerHTML = XMLHTTP.responseText;
}
}

function CambioStatoCom()
{
if (XMLHTTP.readyState == 4)
{
var R = document.getElementById("ris_comuni");
R.innerHTML = XMLHTTP.responseText;
}
}

function RicavaBrowser(QualeBrowser)
{
if (navigator.userAgent.indexOf("MSIE") != (-1))
{
var Classe = "Msxml2.XMLHTTP";
if (navigator.appVersion.indexOf("MSIE 5.5") != (-1));
{
Classe = "Microsoft.XMLHTTP";
}
try
{
OggettoXMLHTTP = new ActiveXObject(Classe);
OggettoXMLHTTP.onreadystatechange = QualeBrowser;
return OggettoXMLHTTP;
}
catch(e)
{
alert("Errore: l'ActiveX non verrà eseguito!");
}
}
else if (navigator.userAgent.indexOf("Mozilla") != (-1))
{
OggettoXMLHTTP = new XMLHttpRequest();
OggettoXMLHTTP.onload = QualeBrowser;
OggettoXMLHTTP.onerror = QualeBrowser;
return OggettoXMLHTTP;
}
else
{
alert("L'esempio non funziona con altri browser!");
}
}


Ora mi compaiono tutte le tre combo, ma quando seleziono la provincia continua a non filtrare i comuni in base alla provincia.
 

Fulvio59

Nuovo Utente
3 Gen 2009
24
0
1
la mia sensazione è che non entri non funzioni l'evento onchange relativo alla select delle province, quello, per intenderci, che chiama la funzione javascript Comuni().
Dico questo perché ho provato ad inserire un alert all'inizio della funzione ma non appare;
inoltre se nell'url incollo brutalmente comuni.asp?id=58, mi restituisce i comuni di quella provincia.

Qualche idea?
 

lukeonweb

Utente Attivo
5 Mar 2003
5.177
10
38
43
Napoli
www.lucaruggiero.it
Riesci ad allegare il lavoro in formato ZIP?

Tenta comunque di eliminare inclusioni varie e cose che non c'entrano con lo script nudo e crudo (completo solo nel senso in oggetto).
 

Fulvio59

Nuovo Utente
3 Gen 2009
24
0
1
Ti invio subito illavoro zippato senza DB ed include di connessione
 

Allegati

  • dynamicselect.zip
    2,2 KB · Visite: 352

marco75sa1

Nuovo Utente
14 Dic 2010
5
0
0
Salerno
select dinamica con comuni

Ciao,
ho seguito lo script che hai postato in allegato (formato zip) però la select non aggiorna i campi dei comuni. Credo che ci sia qualcosa che non va nel database.
Ti posto il mio db... puoi darmi una mano? Grazie
ciao
 

Allegati

  • seldin1.zip
    10,9 KB · Visite: 210
Discussioni simili
Autore Titolo Forum Risposte Data
H problema con select dinamiche e javascript Javascript 0
F Problema select dinamiche con php e jquery jQuery 1
M select dinamiche con Jquery e php jQuery 9
L Select Dinamiche...da txt? PHP 3
eraclio666 [PHP] 2 SELECT DINAMICHE PHP 8
G [Javascript] select dinamiche Javascript 0
H [PHP] Select dinamiche : regioni province comuni PHP 2
H select dinamiche php mysql PHP 4
W Select dinamiche PHP 3
criric Select dinamiche : regioni province comuni Snippet PHP 28
S Select dinamiche concatenate Ajax 8
Z Select dinamiche PHP MySQL Javascript PHP 1
R select dinamiche che riportano valori in una textarea. Javascript 8
V Select dinamiche in php PHP 1
L Select dinamiche - stampa ID e non il valore PHP 3
F Select Dinamiche in fase di modifica Classic ASP 1
L Aiuto per select dinamiche in asp Classic ASP 3
A select dinamiche, errore assurdo, non compare la terza select Javascript 0
J Select automatiche o dinamiche PHP 3
D popolare campi tra th alla select PHP 0
M Estrarre valore con SELECT COUNT PHP 0
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
E Php select option e ajax PHP 23
R Select concatenata che non funziona la seconda volta Ajax 3
L select join e sottrazione punti PHP 13
L input dati con inser into select ? PHP 4
V hierarchy-select jQuery 0
Emix Select concatenate php sql ajax PHP 2
F query e form con select multipla PHP 17
T recupero valori select multipla da android Javascript 3
J php, scegliere autista da select e mostrare se ha fatto un incidente PHP 8
Tommy03 Select in ordine per numero di record MySQL 7
T problema con select dinamica con jquery Javascript 0
J Far comparire e scomparire un div con un select Javascript 1
M Opzioni select da 1 a 200 PHP 0
C input in sostituzione della select PHP 2
G Insert into select - Aiuto MySQL 0
max1974 autocomplete trigger select jQuery 0
X [Select] Valori chiave non presenti in un'altra tabella MySQL 2
M Estrarre dati da una select HTML PHP 3
MarcoGrazia jquery validate, necessità di validare almeno un elemento select su due jQuery 1
T [PHP] Autocompilazione input multiple da una select PHP 1
Alex_70 [PHP] Visualizzare foto tramite select PHP 0
S [PHP] aggiornamento table tramite select senza ricaricare la pagina PHP 5
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
M [PHP] Problema con query select PHP 2
C [PHP] Controllo <select> comportamento anomalo PHP 2
G [PHP] Select con opzioni dipendenti da un'altra select PHP 3
L [Javascript] Select option in campi input Javascript 4
M [PHP] Problemi con select PHP 6

Discussioni simili