Carmen ha scritto:
Ciao a tutti,
Chiedo il vostro aiuto in quanto in rete avevo trovato questo script che consente di far girare categorie e sottocategorie nella stessa select (combobox).
Però non saprei come rendere lo script dinamico con i dati prelevati da un db access visto che al momento lo script risulta statico. Posto il codice se qualcuno x favore può aiutarmi.
<form name="dynamiccombo">
<select name="stage2" size="1" onChange="displaysub()">
<option value="#">Testo di riempimento</option>
<option value="#">Testo di riempimento</option>
<option value="#">Testo di riempimento</option>
</select>
<input type="button" name="test" value="Visita il sito!"
onClick="gothere()">
</form>
<script type="text/javascript" language="JavaScript">
<!--
//1: Qui si definiscono i link per le categorie principali
//Inserire altri elementi nell'array per creare altre voci
//La prima riga contiene il testo visualizzato come primo elemento
var category=new Array()
category[0]=new Option("Seleziona una categoria ", "")
category[1]=new Option("Linguaggi", "combo1")
category[2]=new Option("Servizi", "combo2")
category[3]=new Option("Guide", "combo3")
//2: Qui si definiscono i link per le sottocategorie
//Inserire altri elementi nell'array per creare altre voci
//L'ultima riga dovrebbe contenere il testo per far tornare l'utente alle categorie principali
var combo1=new Array()
combo1[0]=new Option("FreePHP","http://www.google.it")
combo1[1]=new Option("FreeASP","http://www.google.it")
combo1[2]=new Option("TORNA ALLE CATEGORIE PRINCIPALI","")
var combo2=new Array()
combo2[0]=new Option("Webtool","http://www.google.it")
combo2[1]=new Option("Corsi di formazione","http://www.google.it")
combo2[2]=new Option("Libri","http://www.google.it")
combo2[3]=new Option("TORNA ALLE CATEGORIE PRINCIPALI","")
var combo3=new Array()
combo3[0]=new Option("Javascript","http://www.google.it")
combo3[1]=new Option("CSS","http://www.google.it")
combo3[2]=new Option("TORNA ALLE CATEGORIE PRINCIPALI","")
var curlevel=1
var cacheobj=document.dynamiccombo.stage2
function populate(x){
for (m=cacheobj.options.length-1;m>0;m--)
cacheobj.options[m]=null
selectedarray=eval(x)
for (i=0;i<selectedarray.length;i++)
cacheobj.options[i]=new Option(selectedarray[i].text,selectedarray[i].value)
cacheobj.options[0].selected=true
}
function displaysub(){
if (curlevel==1){
populate(cacheobj.options[cacheobj.selectedIndex].value)
curlevel=2
}
else
gothere()
}
function gothere(){
if (curlevel==2){
if (cacheobj.selectedIndex==cacheobj.options.length-1){
curlevel=1
populate(category)
}
else
location=cacheobj.options[cacheobj.selectedIndex].value
}
}
populate(category)
//-->
</script>
Ciao...
Ciao dovresti fare le interrogazioni su db e riempire con dei cicli gli array.... codice asp e javascript misto.... soluzione che nn mi piace sinceramente...
tipo:
var category=new Array()
category[0]=new Option("Seleziona una categoria ", "")
category[1]=new Option("Linguaggi", "combo1")
category[2]=new Option("Servizi", "combo2")
category[3]=new Option("Guide", "combo3")
1. fai la select su db
2. scorri i risultati e riempi l'array
quindi per esempio (ma i modi sono diversi...):
var category=new Array()
<%
DIM objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = "stringa connessione"
objConn.Open
DIM SQL
SQL = "SELECT * FROM table"
DIM objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open SQL, objConn
DO WHILE NOT objRS.EOF%>
for i= 1 to objRS.RecordCount -1%>
category[<% i%>]=new Option(objRS("nomecampo1"), objRS("nomecampo2"))
<%
objRS.MoveNext
Loop
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
forse ho commesso qualche errore per fare presto :) ma il concetto è quello :))