Ciao a tutti,
vi chiedo di darmi una mano per capire dove sbaglio nel compilare un banalissimo script per select dinamiche.
Vengo al dunque:
in una pagina inserimento ho inserito il java-script:
<script type="text/javascript" language="javascript">
//<![CDATA[
url = "http://www.miosito/inserisci/";
d = document;
preloadText = "Generazione lista...";
function caricaPagina(dbcomuni.asp,AHAH_regioni)
{
if (d.getElementById) {var x=(window.ActiveXObject)?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();}
if (x)
{
d.getElementById(idLayer).innerHTML = preloadText;
x.onreadystatechange = function()
{
if (x.readyState == 4 && x.status == 200)
{
el=d.getElementById(idLayer);el.innerHTML = x.responseText;
}
}
x.open("GET", url + pagina, true);
x.send(null);
}
}
function checkForm()
{
var ilForm = d.forms[0];
var err = true;
var lReg = document.getElementById("ErrorRegioni");
var lProv = document.getElementById("ErrorProvincie");
var lCom = document.getElementById("ErrorComuni");
lReg.style.display = "none";lProv.style.display= "none";lCom.style.display="none";
if (ilForm.regioni.value == "")
{
lReg.style.display = "block";lReg.innerHTML = "E' necessario selezionare una regione";
err = false;
}
if (ilForm.provincie.value == "")
{
lProv.style.display = "block";lProv.innerHTML= "E' necessario selezionare una provincia.";
err = false;
}
if (ilForm.comuni.value == "")
{
lCom.style.display = "block";lCom.innerHTML= "E' necessario selezionare un comune.";
err = false;
}
return err;
}
//]]>
</script>
Il seguente form:
<form name="secondaprova" method="post">
<div align="center">
<fieldset style="text-align:center;width:500px">
<div id="FormError"> </div>
<table width="136%" border="0" cellpadding="0" cellspacing="0" style="width:100%;">
<tr>
<td style="text-align:right;width:20%;font-weight:bold;">Regioni </td>
<td style="text-align:left;width:80%"><div id="AHAH_regioni">
<select name="regioni" style="width:100%">
<option value="">seleziona una regione</option>
</select>
</div></td>
</tr>
<tr>
<td colspan="2" style="text-align:center"><div id="ErrorProvincie"> </div></td></tr>
<tr>
<td style="text-align:right;width:20%;font-weight:bold;">Provincie </td>
<td style="text-align:left;width:80%"><div id="AHAH_provincie"><select name="provincie" style="width:100%"><option value="">seleziona una provincia</option></select></div></td>
</tr>
<tr><td colspan="2" style="text-align:center"><div id="ErrorComuni"> </div></td></tr>
<tr>
<td style="text-align:right;width:20%;font-weight:bold;">Comuni </td>
<td style="text-align:left;width:80%"><div id="AHAH_comuni"><select name="comuni" style="width:100%"><option value="">seleziona un comune</option></select></div></td>
</tr>
</table>
</fieldset>
</div>
</form>
Ho inserito nella directory principale la pagina dbcomuni.asp:
<!--#include file="class_dinamic_select.asp"-->
<%
value = replace(request("value")&"", "'", "'")
fieldtype = request("type")
set ds = new DinamicSelect
ds.DataBase = "/mdb-database/comuni.mdb"
if fieldtype = "regioni" then
' REGIONI
ds.DefaultText = "seleziona una regione"
ds.sql = "select distinct pr_regione from Tab_Provincia"
ds.SelectValue = "pr_regione"
ds.SelectText = "pr_regione"
ds.evento = " onchange=""caricaPagina('dbcomuni.asp?type=provincie&value=' " &_
"+ this.options[this.options.selectedIndex].value,'AHAH_provincie');"""
ds.NomeCampo = "regioni"
end if
' PROVINCIE
if fieldtype = "provincie" then
ds.DefaultText = "seleziona una provincia"
ds.sql = "select * from Tab_Provincia where pr_regione='"& value&"'"
ds.selected = value
ds.SelectValue = "pr_sigla"
ds.SelectText = "pr_desc"
ds.evento = " onchange=""caricaPagina('dbcomuni.asp?type=comuni&value='+ " &_
"this.options[this.options.selectedIndex].value,'AHAH_comuni');"""
ds.NomeCampo = "provincie"
end if
'COMUNI
if fieldtype = "comuni" then
ds.DefaultText = "seleziona un comune"
ds.sql = "select loc_desc, loc_prov from Tab_Localita where loc_prov = '"&value&"'"
ds.selected = value
ds.SelectValue = "loc_desc"
ds.SelectText = "loc_desc"
ds.evento = ""
ds.NomeCampo = "comuni"
end if
Response.Write (ds.CreaDinamicSelect())
set ds = nothing
%>
ed anche il file che includo: class_dinamic_select.asp
<%
Class DinamicSelect
Public SelectText 'impostare il nome del campo del database che verrà visualizzato nella lista
Public SelectValue 'impostare il nome del campo del database che verrà passato come valore della lista
Public Selected 'impostare la voce che verrà visualizzata nella lista al caricamento di pagina
Public DataBase 'impostare l'url del database
Public sql 'impostare la query per estrarre i dati
Public Evento 'impostare l'evento che provvederà al submit "parziale" del form
Public NomeCampo 'impostare il nome del campo (nell'ambito del form)
Public DefaultText
Public Function CreaDinamicSelect()
'creazione e apertura della connessioneù
tmpString = ""
Set conn = Server.createobject("adodb.connection")
connstr = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &_
Server.MapPath("/mdb-database/comuni.mdb")
conn.open connstr
tmpString = tmpString & "<select style=""width:100%"" name=""" & me.NomeCampo & """" & me.Evento & """>" & vbcrlf
tmpString = tmpString & "<option value="""">" & Me.DefaultText & "</option>" & vbcrlf
'creazione del recordset
set rs = Server.Createobject("adodb.recordset")
'apertura del recordset
rs.open me.sql,conn,3,3
do until rs.eof
tmpString = tmpString & "<option value=""" & Trim(rs(me.SelectValue)) & """"
if rs(me.SelectValue) = me.selected then
tmpString = tmpString & "selected = ""selected"""
end if
tmpString = tmpString & ">" & Trim(UCase(rs(me.SelectText))) & "</option>" & vbcrlf
rs.movenext
loop
tmpString = tmpString &"</select>"& vbcrlf
'chiusura e distruzione del recordset
rs.close
set rs = nothing
'chiusura e distruzione della connessione
conn.close
set conn = nothing
CreaDinamicSelect = tmpString
End function
End Class
%>
Vi prego help, se non capisco non mi mandano in ferie!!!
vi chiedo di darmi una mano per capire dove sbaglio nel compilare un banalissimo script per select dinamiche.
Vengo al dunque:
in una pagina inserimento ho inserito il java-script:
<script type="text/javascript" language="javascript">
//<![CDATA[
url = "http://www.miosito/inserisci/";
d = document;
preloadText = "Generazione lista...";
function caricaPagina(dbcomuni.asp,AHAH_regioni)
{
if (d.getElementById) {var x=(window.ActiveXObject)?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();}
if (x)
{
d.getElementById(idLayer).innerHTML = preloadText;
x.onreadystatechange = function()
{
if (x.readyState == 4 && x.status == 200)
{
el=d.getElementById(idLayer);el.innerHTML = x.responseText;
}
}
x.open("GET", url + pagina, true);
x.send(null);
}
}
function checkForm()
{
var ilForm = d.forms[0];
var err = true;
var lReg = document.getElementById("ErrorRegioni");
var lProv = document.getElementById("ErrorProvincie");
var lCom = document.getElementById("ErrorComuni");
lReg.style.display = "none";lProv.style.display= "none";lCom.style.display="none";
if (ilForm.regioni.value == "")
{
lReg.style.display = "block";lReg.innerHTML = "E' necessario selezionare una regione";
err = false;
}
if (ilForm.provincie.value == "")
{
lProv.style.display = "block";lProv.innerHTML= "E' necessario selezionare una provincia.";
err = false;
}
if (ilForm.comuni.value == "")
{
lCom.style.display = "block";lCom.innerHTML= "E' necessario selezionare un comune.";
err = false;
}
return err;
}
//]]>
</script>
Il seguente form:
<form name="secondaprova" method="post">
<div align="center">
<fieldset style="text-align:center;width:500px">
<div id="FormError"> </div>
<table width="136%" border="0" cellpadding="0" cellspacing="0" style="width:100%;">
<tr>
<td style="text-align:right;width:20%;font-weight:bold;">Regioni </td>
<td style="text-align:left;width:80%"><div id="AHAH_regioni">
<select name="regioni" style="width:100%">
<option value="">seleziona una regione</option>
</select>
</div></td>
</tr>
<tr>
<td colspan="2" style="text-align:center"><div id="ErrorProvincie"> </div></td></tr>
<tr>
<td style="text-align:right;width:20%;font-weight:bold;">Provincie </td>
<td style="text-align:left;width:80%"><div id="AHAH_provincie"><select name="provincie" style="width:100%"><option value="">seleziona una provincia</option></select></div></td>
</tr>
<tr><td colspan="2" style="text-align:center"><div id="ErrorComuni"> </div></td></tr>
<tr>
<td style="text-align:right;width:20%;font-weight:bold;">Comuni </td>
<td style="text-align:left;width:80%"><div id="AHAH_comuni"><select name="comuni" style="width:100%"><option value="">seleziona un comune</option></select></div></td>
</tr>
</table>
</fieldset>
</div>
</form>
Ho inserito nella directory principale la pagina dbcomuni.asp:
<!--#include file="class_dinamic_select.asp"-->
<%
value = replace(request("value")&"", "'", "'")
fieldtype = request("type")
set ds = new DinamicSelect
ds.DataBase = "/mdb-database/comuni.mdb"
if fieldtype = "regioni" then
' REGIONI
ds.DefaultText = "seleziona una regione"
ds.sql = "select distinct pr_regione from Tab_Provincia"
ds.SelectValue = "pr_regione"
ds.SelectText = "pr_regione"
ds.evento = " onchange=""caricaPagina('dbcomuni.asp?type=provincie&value=' " &_
"+ this.options[this.options.selectedIndex].value,'AHAH_provincie');"""
ds.NomeCampo = "regioni"
end if
' PROVINCIE
if fieldtype = "provincie" then
ds.DefaultText = "seleziona una provincia"
ds.sql = "select * from Tab_Provincia where pr_regione='"& value&"'"
ds.selected = value
ds.SelectValue = "pr_sigla"
ds.SelectText = "pr_desc"
ds.evento = " onchange=""caricaPagina('dbcomuni.asp?type=comuni&value='+ " &_
"this.options[this.options.selectedIndex].value,'AHAH_comuni');"""
ds.NomeCampo = "provincie"
end if
'COMUNI
if fieldtype = "comuni" then
ds.DefaultText = "seleziona un comune"
ds.sql = "select loc_desc, loc_prov from Tab_Localita where loc_prov = '"&value&"'"
ds.selected = value
ds.SelectValue = "loc_desc"
ds.SelectText = "loc_desc"
ds.evento = ""
ds.NomeCampo = "comuni"
end if
Response.Write (ds.CreaDinamicSelect())
set ds = nothing
%>
ed anche il file che includo: class_dinamic_select.asp
<%
Class DinamicSelect
Public SelectText 'impostare il nome del campo del database che verrà visualizzato nella lista
Public SelectValue 'impostare il nome del campo del database che verrà passato come valore della lista
Public Selected 'impostare la voce che verrà visualizzata nella lista al caricamento di pagina
Public DataBase 'impostare l'url del database
Public sql 'impostare la query per estrarre i dati
Public Evento 'impostare l'evento che provvederà al submit "parziale" del form
Public NomeCampo 'impostare il nome del campo (nell'ambito del form)
Public DefaultText
Public Function CreaDinamicSelect()
'creazione e apertura della connessioneù
tmpString = ""
Set conn = Server.createobject("adodb.connection")
connstr = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &_
Server.MapPath("/mdb-database/comuni.mdb")
conn.open connstr
tmpString = tmpString & "<select style=""width:100%"" name=""" & me.NomeCampo & """" & me.Evento & """>" & vbcrlf
tmpString = tmpString & "<option value="""">" & Me.DefaultText & "</option>" & vbcrlf
'creazione del recordset
set rs = Server.Createobject("adodb.recordset")
'apertura del recordset
rs.open me.sql,conn,3,3
do until rs.eof
tmpString = tmpString & "<option value=""" & Trim(rs(me.SelectValue)) & """"
if rs(me.SelectValue) = me.selected then
tmpString = tmpString & "selected = ""selected"""
end if
tmpString = tmpString & ">" & Trim(UCase(rs(me.SelectText))) & "</option>" & vbcrlf
rs.movenext
loop
tmpString = tmpString &"</select>"& vbcrlf
'chiusura e distruzione del recordset
rs.close
set rs = nothing
'chiusura e distruzione della connessione
conn.close
set conn = nothing
CreaDinamicSelect = tmpString
End function
End Class
%>
Vi prego help, se non capisco non mi mandano in ferie!!!