Fråga angående liknande loop.

ASP

6 svar · 235 visningar · startad av Brimba

Medlem sedan dec. 19995 874 inlägg
Trådstart#1

Hej!

Låt oss säga att jag har en databas full med produkter, låt oss sen säga att i samma databas är produkterna uppdelade i olika kategorier.

Då kan man tex välja att göra flera SQL frågor och ta "WHERE kat = 3" "WHERE kat = 4"

och lägga svaren i variabler och skriva ut dem, men om man istället vill loopa sig igenom detta, hur går man tillväga då?

Alltså, jag vill att svaren retuneras i drop down listor, jag skall ge ett exempel på hur det är löst idag:


Processor = "SELECT tabArt.ArtID, tabArt.Artikel, tabArt.ArtExkl, tabArt.TypID FROM tabArt WHERE tabArt.TypID = 1 AND (tabArt.Web = 1) ORDER BY tabArt.Artikel"
SET PR = Connection.Execute(Processor)

RAM = "SELECT tabArt.ArtID, tabArt.Artikel, tabArt.ArtExkl, tabArt.TypID FROM tabArt WHERE tabArt.TypID = 2 AND (tabArt.Web = 1) ORDER BY tabArt.Artikel"
SET RA = Connection.Execute(RAM)

			<%=text%>Processor</font><br>
			<SELECT name="processor" onChange="tal1 = this[this.selectedIndex].pris *1,updatera()"> 
			<OPTION name="processor" pris="0" value="">Inget</OPTION>
			<%
				DO UNTIL PR.EOF
			%>
		      <OPTION name="processor" pris="<%= PR("ArtExkl")%>" value="<%= PR("ArtID") %>"><%= PR("Artikel")%> - <%= PR("ArtExkl")%>kr</OPTION>
			<%
				PR.MoveNext
				Loop
			%>
			<OPTION value=""><% = mellan %></OPTION>
			</SELECT>
			<br>

			<%=text%>Ram</font><br>
			<SELECT name="ram" onChange="tal2 = this[this.selectedIndex].pris *1,updatera()"> 
			<OPTION name="ram" pris="0" value="">Inget</OPTION>
			<%
				DO UNTIL RA.EOF
			%>
		      <OPTION name="ram" pris="<%= RA("ArtExkl")%>" value="<%= RA("ArtID") %>"><%= RA("Artikel")%> - <%= RA("ArtExkl")%>kr</OPTION>
			<%
				RA.MoveNext
				Loop
			%>
			<OPTION value=""><% = mellan %></OPTION>
			</SELECT>

Jag vill altså lösa det på så sätt att for each KAT then och så lägga in det i en drop down meny som jag beskrev ovan. Nu gör jag ju det manuellt, men så kan man ju inte hålla på.

Någon som har några tips?

Tack!

Medlem sedan dec. 19998 577 inlägg
#2

... jag har löst nått liknande genom att använda mig av JOIN. Först kollar jag vilka kategorier som finns (med JOIN), och sedan utifrån dom så skapar du SQL-satsen dynamiskt... har ingen syntax i huvudet just nu, får se om jag kan framana den snart :) ...

Medlem sedan dec. 19996 721 inlägg
#3

Jag antar att du har en tabell i databasen som innehåller kategorierna (ID och namn). Då kan du väl loopa igenom dessa och exekvera en ny select för varje rad i tabellen.

cats=conn.execute("select * from brimbacats")
do until cats.eof
prodssql = "SELECT tabArt.ArtID,tabArt.Artikel, tabArt.ArtExkl, tabArt.TypID FROM tabArt WHERE tabArt.TypID = " & cats("ID") & " AND (tabArt.Web = 1) ORDER BY tabArt.Artikel"
SET prods = Connection.Execute(prodssql)
skriv ut menyn för prods-recordset

loop

eller så kan du selecta alla produkter i alla kategorier, sortera på kategori och artikelnummer (select * from artiklar orderby typid,artikel), och loopa igenom hela recordsetet. För varje looprunda läggar du in typid i en variabel, och om den variabeln har förändrats påbörjar du en ny dropmeny (if mTypid>mTypid then...).

Joina med kategoritabellen så kan du få ut kategorinamnet också.

Medlem sedan dec. 19995 874 inlägg
#4

Hej!

Tack emission!

Jag satt å fiffla med arrays innan du sa ett sanningens ord.

Tack!

Medlem sedan mars 20002 836 inlägg
#5

Hello,

påbörjar du en ny dropmeny (if mTypid>mTypid then...).

Skulle nog använda mig av :

If mTypId <> mTypId

eller är det fel tänkt?

/PatrikB

Medlem sedan dec. 19996 721 inlägg
#6

Ja, alltså, jag menade ju rs("typid")>mTypid...

Medlem sedan dec. 19995 874 inlägg
#7

Ehh, det har jag redan löst :)

305 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
173 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)