---
title: "Asp & javascript!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/46969-asp-javascript"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Asa"
published: "2002-06-30T19:42:12.000Z"
updated: "2002-07-01T10:42:29.000Z"
replies: 15
views: 420
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/46969-asp-javascript"
---

# Asp & javascript!

## #1 — Asa, 2002-06-30T19:42Z

Jag har en selectruta där jag hämtar en huvudkategori och när jag väljer ett alternativ vill jag att alla underkategorier som finns under den man väljer visas i närsta selectruta utan att sidan laddas om! 

Jag har så här nu: 

\<%Set RecSet = Conn.Execute("Select \* From artiklar Where id=" & Request.QueryString("id"))%\> 
\<tr\> 
\<td width="165"\>\<b\>Huvudkategori: \</b\>\<br\> 
\<select name="typ" style="width: 140"\> 
\<option value=""\>-- Välj -- 
\<%Set UIDES = Conn.Execute("SELECT \* From kategori Where id \<\> '' Order By namn") 

Do Until UIDES.EOF%\> 
\<option value="\<%=UIDES("namn")%\>" \<%If RecSet("typ") = UIDES("id") Then Response.Write " SELECTED"%\>\>\<%=UIDES("namn")%\>\<br\> 
\<%UIDES.MoveNext 
Loop%\> 
\</select\> 
\</td\> 
\<td width="235"\>\<b\>Underkategori: \</b\>\<br\> 
\<select name="kat" style="width: 140"\> 
\<option value=""\>-- Välj -- 
\<%Set RS=Conn.Execute("Select \* From kategori Where uid='" & RecSet("typ") & "' Order By namn") 

Do Until RS.EOF%\> 
\<option value="\<%=RS("namn")%\>" \<%If RecSet("kat") = RS("namn") Then Response.Write " SELECTED"%\>\>\<%=RS("namn")%\>\<br\> 
\<%RS.MoveNext 
Loop%\> 
\</select\> 
\</td\> 
\</tr\> 

Hoppas nån kan hjälpa mig och att det går!

Permalänk: https://www.webforum.nu/p/46969

## #2 — solbulle, 2002-06-30T19:44Z

<http://www.webforum.nu/showthread.php?s=&threadid=12695>

Permalänk: https://www.webforum.nu/p/711227

## #3 — Asa, 2002-06-30T20:32Z

Fattar noll!

Permalänk: https://www.webforum.nu/p/711239

## #4 — solbulle, 2002-06-30T20:54Z

Hur många huvudkategorier har du? Samt ungefär hur många underkategorier per huvudkategori?

Permalänk: https://www.webforum.nu/p/711244

## #5 — Asa, 2002-06-30T21:11Z

Det är olika! Man lägger till dem till databasen så det varierar!

Permalänk: https://www.webforum.nu/p/711253

## #6 — PatrikB, 2002-06-30T21:17Z

Hur ser dina tabeller ut i databasen?
Tabellnamn
\- falt1
\- falt2
etc.

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/711257

## #7 — Asa, 2002-06-30T21:20Z

```

id	uid	Namn	AU
	DVD	Action	0
	DVD	Tecknat	0
	DVD	Animerat	0
	VHS	Action	0
	VHS	Action	0
DVD		DVD	3
Motor		Motor	0
PC		PC	0
VHS		VHS	2

id är huvudkat, uid är underkat och AU är antal underkategorier under id

Hoppas du fattar
```

Permalänk: https://www.webforum.nu/p/711260

## #8 — PatrikB, 2002-06-30T21:50Z

Är det endast en tabell du jobbar mot??
Vad heter tabellen?

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/711270

## #9 — PatrikB, 2002-06-30T22:52Z

testa detta:

```
<%
Option Explicit

Response.Buffer = True

Dim strConnString
Dim strSQLkat
Dim strSQLskat
Dim objConn
Dim rstKategori
Dim rstSubKategori
Dim varKategori
Dim varSubKategori
Dim strId
Dim strName
Dim I
Dim strUID
Dim strLastUID
Dim intCounter

strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/db-folder/db-file.mdb")

strSQLkat = "SELECT * FROM Kategori WHERE id <> '' ORDER BY Namn ASC"

Set objConn = Server.CreateObject("ADODB.Connection")
	objConn.Open strConnString
	Set rstKategori = objConn.Execute(strSQLkat)
		If Not rstKategori.EOF Then varKategori = rstKategori.GetRows()
	Set rstKategori = Nothing
	
	strSQLskat = "SELECT * FROM Kategori WHERE uid <> '' ORDER BY uid ASC, Namn ASC"
	Set rstSubKategori = objConn.Execute(strSQLskat)
		varSubKategori = rstSubKategori.GetRows()
	Set rstSubKategori = Nothing
	objConn.Close
Set objConn = Nothing
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>dynamiska menyer i javascript</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<SCRIPT language="javascript">
function boxData(sText, vValue){
	this.text = sText;
	this.value = vValue;
}

function populateBox(obj, icase){
	// alert(icase);
	igr = icase;
	vgr = eval("vMan" + igr);
	if (igr){
		obj.length = (vgr.length);
		for(n=0;n<vgr.length;n++){
			obj.options[n].value = vgr[n].value;
			obj.options[n].text = vgr[n].text;
		}
		obj.selectedIndex = 0
	}else{
		obj.length = 1;
		for(n=0;n<obj.length;n++){
			obj.options[n].value = 0;
			obj.options[n].text = obj.options[n].text;
		}
		obj.selectedIndex = 1;
	}
}

// -- populeras med asp. det är dessa arrayer som ska populeras i andra selectboxen
//    beroende på selectbox1 value --

<%
If IsArray(varSubKategori) Then
	intCounter = 0
	For I = 0 TO UBound(varSubKategori,2)
		strUID = varSubKategori(1,I)
		strName = varSubKategori(2,I)
		
		If strUID <> strLastUID Then
			Response.Write "vMan" & strUID & " = new Array();" & vbcrlf
			intCounter = 0
		End If
		
		Response.Write "vMan" & strUID & "[" & intCounter & "] = new boxData(""" & strName & """,""" & strUID & """);" & vbcrlf
		strLastUID = strUID

		intCounter = intCounter + 1

	Next
End If
%>
// var vMan1 = new Array();

// vMan1[0] = new boxData("stad 1 land 1",1);
// vMan1[1] = new boxData("stad 2 land 1",2);
// vMan1[2] = new boxData("stad 3 land 1",3);
// vMan1[3] = new boxData("stad 4 land 1",4);

// var vMan2 = new Array();

// vMan2[0] = new boxData("stad 1 land 2",1);
// vMan2[1] = new boxData("stad 2 land 2",2);
// vMan2[2] = new boxData("stad 3 land 2",3);
// vMan2[3] = new boxData("stad 4 land 2",4);

// -- slut populeringen av arryer med asp --

</SCRIPT>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="">
  <select name="select" onChange="populateBox(document.form1.select2,this.options[selectedIndex].value);">
    <option value="0" selected>Välj kategori</option>
<%
	If IsArray(varKategori) Then
		For I = 0 TO UBound(varKategori,2)
			strId = varKategori(0,I)
			strName = varKategori(2,I)
%>
    <option value="<% =strId%>"><% =strName%></option>
<%
		Next
	End If
%>
  </select>
  <select name="select2">
    <option value="0" selected>Ingen kategori vald</option>
  </select>
</form>
</body>
</html>
```

Du kommer dock att få ett javascript fel om inga subkategorier finns till en huvudkategori ...... kan ej hjälpa dig där då jag inte e riktigt hemma på Javascript ... testa i javascript-forumet med det.

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/711306

## #10 — Asa, 2002-06-30T23:17Z

En tabell med namn kategorier!

Permalänk: https://www.webforum.nu/p/711310

## #11 — Asa, 2002-06-30T23:20Z

Tackar för det! Funkar fint förrutom det du sa om javascriptet!

Permalänk: https://www.webforum.nu/p/711312

## #12 — Asa, 2002-06-30T23:59Z

Om jag inte vill använda GetRows då? Gör ite det i min aspkod och blir svårt att ändra till Getrows!

Min omgjorda kod:

```
<%Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/webshop.mdb")

Set RS = Conn.Execute("SELECT * FROM Kategori WHERE id <> '' ORDER BY Namn ASC")
	If Not RS.EOF Then HKat = RS.GetRows()
Set RS = Nothing
Set RecSet = Conn.Execute("SELECT * FROM Kategori WHERE uid <> '' ORDER BY uid ASC, Namn ASC")
	UKat = RecSet.GetRows()
Set RecSet = Nothing
Conn.Close
Set Conn = Nothing%>

<html>
<head>
<title>Dynamiska menyer i javascript</title>
<SCRIPT language="javascript">

function boxData(sText, vValue){
	this.text = sText;
	this.value = vValue;
}

function underkat(obj, icase){
	// alert(icase);
	igr = icase;
	vgr = eval("vMan" + igr);
	if (igr){
		obj.length = (vgr.length);
		for(n=0;n<vgr.length;n++){
			obj.options[n].value = vgr[n].value;
			obj.options[n].text = vgr[n].text;
		}
		obj.selectedIndex = 0
	}else{
		obj.length = 1;
		for(n=0;n<obj.length;n++){
			obj.options[n].value = 0;
			obj.options[n].text = obj.options[n].text;
		}
		obj.selectedIndex = 1;
	}
}

<%If IsArray(UKat) Then
	x = 0
	For I = 0 To UBound(UKat,2)
		strUID = UKat(1,I)
		strName = UKat(2,I)
		
		If strUID <> strLastUID Then
			Response.Write "vMan" & strUID & " = new Array();" & vbcrlf
			x = 0
		End If
		
		Response.Write "vMan" & strUID & "[" & x & "] = new boxData(""" & strName & """,""" & strUID & """);" & vbcrlf
		strLastUID = strUID

		x = x + 1
	Next
End If%>

</SCRIPT>
</head>

<body>
<form name="kat" method="post" action="">
  <select name="kat" onChange="underkat(document.kat.typ,this.options[selectedIndex].value);">
    <option value="" selected>Välj kategori</option>
        <%If IsArray(HKat) Then
	For I = 0 TO UBound(HKat,2)
		strId = HKat(0,I)
		strName = HKat(2,I)%>
    <option value="<%=strId%>"><%=strName%></option>
        <%Next
	End If%>
  </select>
  <select name="typ">
    <option value="" selected>Ingen kategori vald</option>
  </select>
</form>
</body>
</html>
```

Permalänk: https://www.webforum.nu/p/711317

## #13 — cupy, 2002-07-01T00:09Z

Det finns en bra exempel  [här](http://www.4guysfromrolla.com/webtech/101099-1.shtml)

Permalänk: https://www.webforum.nu/p/711319

## #14 — Asa, 2002-07-01T08:14Z

Om man utgår ifrån en tabell bara då?

```

id	uid	Namn	AU
	DVD	Action	0
	DVD	Tecknat	0
	DVD	Komedi	0
	VHS	Action	0
DVD		DVD	3
Motor		Motor	0
PC		PC	0
VHS		VHS	1
```

id är huvudkat, uid är underkat och AU är antal underkategorier under id

Permalänk: https://www.webforum.nu/p/711382

## #15 — solbulle, 2002-07-01T10:36Z

På vilket sätt blir det svårt att använda dig av getrows på din sida? Vad använder du den hämtningen från databasen till i övrigt?
Du kan ju lägga data från getrosw-arrayen i variabler om du tycker att det blir lättare att arbeta med det.

Permalänk: https://www.webforum.nu/p/711467

## #16 — Asa, 2002-07-01T10:42Z

Detta är koden jag har nu som är för det när man ska använda det jag behöver hjälp med! Jag öppnar databasen längst upp på sidan och denna kodsnutt ligger typ på rad 400. Är inne på en adminsida.

```
<%If Request.QueryString("action") = "andraart" AND Session("admin") = "ok" Then

Set RecSet = Conn.Execute("Select * From artiklar Where id=" & Request.QueryString("id"))%>

<table width="100%" border="0" align="center">
  <form action="admin.asp?do=inne&action=andratart&id=<%=RecSet("id")%>" method="post"  name="andraart" onSubmit="return artikelandra()">
  <tr>
    <td width="165"><b>Huvudkategori: </b><br>
        <select name="typ" style="width: 140">
          <option value="">-- Välj --
          <%Set UIDES = Conn.Execute("SELECT * From kategori Where id <> '' Order By namn") 

          Do Until UIDES.EOF%>
               <option value="<%=UIDES("namn")%>" <%If RecSet("typ") = UIDES("id") Then Response.Write " SELECTED"%>><%=UIDES("namn")%><br>
          <%UIDES.MoveNext 
          Loop%>
        </select>
    </td>
    <td width="235"><b>Underkategori: </b><br>
        <select name="kat" style="width: 140">
          <option value="">-- Välj --
          <%Set RS=Conn.Execute("Select * From kategori Where uid='" & RecSet("typ") & "' Order By namn")

            Do Until RS.EOF%>
               <option value="<%=RS("namn")%>" <%If RecSet("kat") = RS("namn") Then Response.Write " SELECTED"%>><%=RS("namn")%><br>
          <%RS.MoveNext
            Loop%>
        </select> 
    </td>
  </tr>
   <tr> 
        <td valign="middle" colspan="3"> <b>Artikelnr: </b><br><input type="text" name="artikelnr" size="22" value="<%=RecSet("artikelnr")%>"></td>
  </tr>
  <tr>
    <td><b>Pris: </b><br><input type="text" name="pris" size="10" value="<%=RecSet("pris")%>"></td>
    <td><b>Pris exkl: </b><br><input type="text" name="prise" size="10" value="<%=RecSet("prise")%>"></td>
  </tr>
   <tr> 
        <td valign="middle" colspan="2"> <b>Bildens sökväg: </b><br><input type="text" name="bild" size="50" value="<%=RecSet("bild")%>"></td>
  </tr>
  <tr>
    <td colspan="2"><b>Artikelrubrik: </b><br><input type="text" name="artikel" size="50" value="<%=RecSet("artikel")%>"></td>
  </tr>
  <tr>
    <td colspan="2"><b>Info om artikeln: </b><br><textarea cols="61" rows="10" name="info"><%=RecSet("info")%></textarea></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><hr width="100%" noshade color="#000000" size="1"></td>
  </tr>
   <tr> 
     <td colspan="2"><input type="submit" name="submit" value="Slutför"></td>
   </tr>
    <tr>
      <td colspan="2" align="center"><hr width="100%" noshade color="#000000" size="1"></td>
    </tr>
    <tr>
      <td colspan="2"><a href="javascript:history.back()">Tillbaka</a></td>
    </tr>
</form>
</table>
<%End If%>
```

Permalänk: https://www.webforum.nu/p/711473

---

Tråden på webben: https://www.webforum.nu/amne/asp/46969-asp-javascript
