Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > ASP > Generella frågor

Hämta ut data med kategorier

Kallgard
Kallgard

Gradering

#19469

Hej!

Jag vill kunna hämta ut och lista artiklar under speciella kategorier. Vet inte riktigt hur jag ska gå till väga för att göra detta. Jag har skapat detta i min databas:

Tabell: Kategori
Innehåller: ID | kategori | info Tabell: Artiklar
Innehåller: ID | rubrik | artikeln | kategoriID


Sedan försökt med följande kod för att hämta ut informationen:

<%
SQL = "Select * FROM tbl_artiklar order by datum desc"
Set RecSet = Connect.Execute(SQL)
 
SQL2 = "Select * FROM kategori where kategori=" & RecSet("kategoriID")
Set RecSet2 = Connect.Execute(SQL2)
 
If RecSet.EOF Then
'felmess
Response.Write("Inga artiklar ännu.")
Else
Do Until recset.EOF 
%>
<%=Recset("rubrik")%>
 
<%RecSet.MoveNext
Loop
 
Recset.close
Set Recset = Nothing
End IF
%>

Någon som skulle vilja hjälpa mig med detta då jag själv inte har en aning om hur man ska göra? :)

Såhär vill jag att det ska hämtas:

Kategori1
Rubrik på artikel1
Rubrik på artikel2
Kategori2
Rubrik på artikel1
Rubrik på artikel2

 

Mvh Magnus

mvh Kallgard.se
Redigerades av Kallgard den 18 februari 2010. Läs tidigare inlägg.
Redigerades av Kallgard den 18 februari 2010. Läs tidigare inlägg.
ID: #19469 | Skapades: 2010-02-18 18:35:30 | Tråden har 13 svar och har lästs 318 gånger.

voigtan
voigtan

Gradering

#19470

Är det bara en nod det kan vara? eller kan alla kategorier har ondliga under-kategorier?

Annars: Gör en JOIN frågar mot kategorin, Sortera Kategorin, Loopar => Om Kategorin är annolunda från förra loopen => Skriv ut den nya rubriken.

Så hade jag gjort i alla fall för att slippa så många SQL anrop.

 

Om du vill köra med den kod du har skrivit så måste du flytta in ditt recordset i loopen annars så kommer du aldrig få rätt SQL fråga.

 

Bara kolla igenom din kod:

SQL2 = "Select * FROM kategori where kategori=" & RecSet("kategoriID")
Set RecSet2 = Connect.Execute(SQL2)


If RecSet.EOF Then
Du sätter RecSet("gategoriID") även om du inte ta hänsyn att RecSet kan vara tom, sen kollar du om den är EOF, vilket om den är så kommer den crashar innan du kommer till den raden, se över din kod.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 18 februari 2010. Läs tidigare inlägg.
Redigerades av voigtan den 18 februari 2010. Läs tidigare inlägg.
ID: #19470 | Skapades: 2010-02-18 18:51:05

Kallgard
Kallgard

Gradering

#19471

Okej tack. Hur skapar jag en JOIN som du tycker att jag bör göra?

mvh Kallgard.se
ID: #19471 | Skapades: 2010-02-18 19:20:45

voigtan
voigtan

Gradering

#19472
Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19472 | Skapades: 2010-02-18 19:21:56

Kallgard
Kallgard

Gradering

#19473

Det där med JOIN verkar vara krångligt, kan jag använda mig utav den kod jag påbörjat? och hur gör jag för att fixa till den? är inte speciellt bra på asp. 

mvh Kallgard.se
ID: #19473 | Skapades: 2010-02-18 19:59:34

voigtan
voigtan

Gradering

#19474

Citerar Kallgard:

Det där med JOIN verkar vara krångligt, kan jag använda mig utav den kod jag påbörjat? och hur gör jag för att fixa till den? är inte speciellt bra på asp. 

Citerar voigtan:

Annars: Gör en JOIN frågar mot kategorin, Sortera Kategorin, Loopar => Om Kategorin är annolunda från förra loopen => Skriv ut den nya rubriken.

... 

Om du vill köra med den kod du har skrivit så måste du flytta in ditt recordset i loopen annars så kommer du aldrig få rätt SQL fråga.

 

Bara kolla igenom din kod:

SQL2 = "Select * FROM kategori where kategori=" & RecSet("kategoriID")
Set RecSet2 = Connect.Execute(SQL2)


If RecSet.EOF Then
Du sätter RecSet("gategoriID") även om du inte ta hänsyn att RecSet kan vara tom, sen kollar du om den är EOF, vilket om den är så kommer den crashar innan du kommer till den raden, se över din kod.

Läs igenom din kod flytta kodsnuttarna du har på rätt plats.

Ett exempel är att du försöker loopar artiklarna och sen RecSet2 försöker du hämta kategori för det? Hur skall du egentligen presentera det?

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 18 februari 2010. Läs tidigare inlägg.
ID: #19474 | Skapades: 2010-02-18 20:25:21

Shadi
Shadi

Gradering

#19475

JOIN är faktiskt rätt så smidigt och enkelt. Pröva att läsa min artikel och se ifall det hjälper:

http://www.aspkoll.se/artikel/55-an...-och-inner-join/

Administratör på AspKoll.se!
ID: #19475 | Skapades: 2010-02-18 21:55:27

voigtan
voigtan

Gradering

#19476

han har fått ett korrekt på aspsidan.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19476 | Skapades: 2010-02-18 21:56:16

Kallgard
Kallgard

Gradering

#19479

Mycket bra artikel Shadi, nu efter jag läst den fungerar det fin fint med JOIN:)

En liten sak, om man vill sortera rubrikerna efter datum så att nyast hamnar högst upp under alla kategorier, hur går jag tillväga då?

Testade med detta men det fungerade inte:

SQL = "SELECT k.kategori, r.rubrik, r.datum FROM tblKategori k INNER JOIN tblArtiklar r ON k.kategori = r.kategoriId ORDER BY k.kategori, r.rubrik, r.datum desc"

mvh Kallgard.se
ID: #19479 | Skapades: 2010-02-19 13:23:47

voigtan
voigtan

Gradering

#19480

Du vill sortera från kategori först, det vill du för att få en gruppering snyggt, sen flyttar du på rubrik och datum, för just nu säger du:

Sortera Kategori sen sortera du för rubrik och sist datumet om det skulle vara samma rubrik på två artiklar.

SQL = "SELECT k.kategori, r.rubrik, r.datum FROM tblKategori k INNER JOIN tblArtiklar r ON k.kategori = r.kategoriId ORDER BY k.kategori, r.datum DESC, r.rubrik"

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19480 | Skapades: 2010-02-19 13:29:35

Kallgard
Kallgard

Gradering

#19481

Tack det fungerade!

Kan jag putta in ett WHERE någonstans som Shadi gjorde i sin artikel för att plocka ut ett speciellt id? Det jag skulle vilja är att också kunna hämta ut endast de artiklar som har teori = t. 

Försökte med detta:

SQL = "SELECT k.kategori, r.datum, r.rubrik, r.ID, r.teori FROM tblKategori k INNER JOIN tblArtiklar r ON k.kategori = r.kategoriId WHERE r.teori = t ORDER BY  k.kategori, r.datum DESC, r.rubrik, r.ID"

Fast det fungerade inte.

mvh Kallgard.se
ID: #19481 | Skapades: 2010-02-19 13:47:35

voigtan
voigtan

Gradering

#19482

Om teori är en bokstav så är det:

SQL = "SELECT k.kategori, r.datum, r.rubrik, r.ID, r.teori FROM tblKategori k INNER JOIN tblArtiklar r ON k.kategori = r.kategoriId WHERE r.teori = 't' ORDER BY  k.kategori, r.datum DESC, r.rubrik, r.ID"
Och att teori finns i tabellen 'tblArtiklar'

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #19482 | Skapades: 2010-02-19 13:49:45

Kallgard
Kallgard

Gradering

#19483

Tack så hemskt mycket voigtan! Nu ska jag inte ställa mer dumma frågor förhoppningsvis:P

mvh Kallgard.se
ID: #19483 | Skapades: 2010-02-19 13:55:36

voigtan
voigtan

Gradering

#19484

Citerar Kallgard:

Tack så hemskt mycket voigtan! Nu ska jag inte ställa mer dumma frågor förhoppningsvis:P

Inga frågor är dumma, så länge du lär dig något så bli du en erfarenhet rikare. Bara du vet varför man skriver som man gör ;)

 

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 19 februari 2010. Läs tidigare inlägg.
ID: #19484 | Skapades: 2010-02-19 13:57:17
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy