277 messaggi dal 13 giugno 2001
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...

Carmen
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 :))
277 messaggi dal 13 giugno 2001
Ciao,

Però non saprei come popolare la select in base alla prima scelta fatta

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","")


in sostanza in base alla scelta della categoria principale viene creato un secondo array che ripopola la select... Come fare???

Carmen
Carmen ha scritto:
Ciao,

Però non saprei come popolare la select in base alla prima scelta fatta

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","")


in sostanza in base alla scelta della categoria principale viene creato un secondo array che ripopola la select... Come fare???


Dipende... sono tutti dati presi da db? Come sono relazionati?
277 messaggi dal 13 giugno 2001
Ciao,

Si, sono tutti dati presi dal db. Il db è strutturato cosi:

catsub,catid,catnome

la select deve visualizzare il campo catnome (che sarebbe il nome della categoria), come valore mi deve dare sempre quello del campo catid
Modificato da Carmen il 10 agosto 2011 17.30 -

Carmen
Carmen ha scritto:
Ciao,

Si, sono tutti dati presi dal db. Il db è strutturato cosi:

catsub,catid,catnome

la select deve visualizzare il campo catnome (che sarebbe il nome della categoria), come valore mi deve dare sempre quello del campo catid
Modificato da Carmen il 10 agosto 2011 17.30 -


ok, questa la prima select... le altre?
277 messaggi dal 13 giugno 2001
Le altre non esistono. La select e sempre la stessa come puoi vedere nel codice postato all'inizio.

i dati che la select deve visualizzare/restituire sono sempre catid,catnome
Modificato da Carmen il 10 agosto 2011 21.59 -

Carmen
Carmen ha scritto:
Le altre non esistono. La select e sempre la stessa come puoi vedere nel codice postato all'inizio.

i dati che la select deve visualizzare/restituire sono sempre catid,catnome
Modificato da Carmen il 10 agosto 2011 21.59 -


Forse non mi è chiaro allora il problema.

dall'esempio ci sono 4 array e una select.

Da codice devi quindi riempire gli array con i dati presi dal db.(con il codice che ho postato)

Cosa non riesci a fare?

Quell'esempio che hai postato, gestisce già in javascript la selezione, tu devi adattarlo...
Modificato da lorenzo_ il 11 agosto 2011 13.32 -
Modificato da lorenzo_ il 11 agosto 2011 13.35 -

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.