Nu kommer ytterligare en fråga:
Säg att en databas ser ut på följande sätt:
Primärnyckel - prylid
Prylnamn
Prylkategori
Ur den här vill jag hämta ut alla prylkategorier, sedan under varje prylkategori lista alla prylar som hör till den prylkategorin i stil med
datorer
-dator 1
-dator 2
-dator 3
mobiltelefoner
-mobiltelefon1
-mobiltelefon2
GPS
-GPS1
-GPS2
osv.
Jag kan dock inte komma på hur jag skall skriva koden för en accessdatabas med ASP...
Kom igen wF-genier, work your magic!
SPiNMedlem sedan mars 20007 896 inlägg Jag skyller det här inlägget på två raka veckors arbete, en sommar utan semester och allmänt hjärnsläpp.
hur menar du då?
jag tänkte först använda ett
visa = "select nånting nånting order by kategori"
och sen ytterligare en kallelse för prylarna inom den kategorin
visa = "select osv where prylkategori = '" & trim(recset("prylkategori")&"'
loop
loop på kategori
hur kan jag få in din kod här SPiN?
LarsGMedlem sedan dec. 200012 464 inlägg select Prylkategori,
Prylnamn
from Prylar
order by prylkategori
Du får själv hålla reda på (i din ASP-kod) när du får en ny kategori och i det läget skriva ut namnet. Det är inget som man löser med hjälp av SQL.
hm, då kanske det är asp-koden jag behöver hjälp med... behöver tråden flyttas?
För att förtydliga vad LarsG menar: Du kommer få ut datat på denna form:
[b]Prylkategori Prylnamn[/b]
Datorer Dator 1
Datorer Dator 2
Datorer Dator 3
Motor Mobil 1
Mobiler Mobil 2
Mobiler Mobil 3
GPS GPS 1
GPS GPS 2
GPS GPS 3
Det din kod måste göra i det fallet är att detektera när det kommer en ny kategori. Lite pseudokod:
tmpKat = ""
while not rs.eof()
if tmpKat <> rs.kategorinamn
skrivutkategori rs.kategorinamn
tmpKat = rs.kategorinamn
end if
skrivutpryl rs.prylnamn
rs.next
end while
Detta är bara pesudokod, och knappast i närheten gångbar ASP. Men jag hoppas att du ska se vilken logik som behövs i ASP'n. (Ungefär som om jag skulle snacka franska, utifrån min gamla skolfranska... Jag skulle få ur mig ett par ord, kanske till och med göra mig förstådd, men det skulle ändå låta skrattretande.)
Här är min faktiska kod just nu:
<%
Set RecSet2 = Server.CreateObject("ADODB.Recordset")
Visa2 = "SELECT * FROM collectiondb WHERE visa = 'ja' order by kategori ASC "
RecSet2.Open Visa2, Connect, adOpenStatic, adLockOptimistic
%><% Do Until RecSet2.EOF %><div id="text">
<div id="listatop"><b><% = Ucase(RecSet2("kategori")) %></b></div>
</div>
<div class="box"><%
Set RecSet3 = Server.CreateObject("ADODB.Recordset")
Visa3 = "SELECT * FROM collectiondb WHERE visa = 'ja' and kategori = '" & Trim(Recset2("kategori")) & "' order by collectionid DESC "
RecSet3.Open Visa3, Connect, adOpenStatic, adLockOptimistic
%>
<% Do Until RecSet3.EOF %>
<div id="minibox"><h5><a href="images/<% = RecSet3("bildstor") %>" class="lightbox" title="<% = RecSet3("rubrik") %>"><img border="0" src="images/<% = RecSet3("bildmini") %>"></a><br><b><% = RecSet3("rubrik") %></b><br>
<% = RecSet3("pris") %> kr</h5></div>
<% RecSet3.Movenext
loop
%></div><% RecSet2.Movenext
loop
%>
Den listar dock om samma kategori lika många gånger som det finns prylar i den aktuella kategorin... så nu kommer tricket att få ett asp-skript som bara skriver ut den en gång... hm...
@ndersMedlem sedan juni 200032 969 inlägg
magnusfeldth skrev:
ingen som har nån idé?
Jo - nitro gav dig utmärkt pseudokod. Försök implementera efter hans exempel. :)
mvh
@ndersMedlem sedan juni 200032 969 inlägg Eller - om du vill göra det så enkelt som möjligt för dig utan att lära dig speciellt mycket - kan du ändra din första sql-fråga till:
Visa2 = "SELECT DISTINCT kategori FROM collectiondb WHERE visa = 'ja' order by kategori ASC "
Men det är helt klart bättre att göra det med en join klippa hela första frågeriet och sedan använda nitros pseudo-variant.
tack snabeln. klart jag vill lära mig, men med tidsbrist, feber och allmän 80 timmars arbetsvecka känns en snabb lösning ganska skön ibland