Avatar billede fastpoint Nybegynder
10. oktober 2004 - 14:30 Der er 17 kommentarer og
1 løsning

at linke i asp

Hejsa!

Er der nogen som ved hvordan man kan lave et link så når man trykker på det der kun bliver vist de ting i databasen som ligger under en bestemt katagori og under et bestemt emne?

dvs jeg har en række med katagorier og en række med emner til hver katagori... så skal den fx. kun vise under katagorien biler alle emner som hedder opel..

det lidt besværligt nemlig at skulle lave en asp side til hver katagori..
Avatar billede w13 Novice
10. oktober 2004 - 14:38 #1
Så skal du bruge en querystring...

Eks.vis.: http://www.minside.dk/side.asp?kategori=biler

Sådan at du derefter opretter en side - i dette tilfælde ved navn "side.asp" - og på den skriver du eks.vis.:
_____________________________________________________
<%
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/database.mdb")

strSQL = "SELECT * FROM tabel WHERE kategori = '"& request.querystring("kategori") &"' ORDER BY dato DESC"
Set rs = myConn.Execute(strSQL)

If Not (rs.BOF Or rs.EOF) Then
    ' Hvis der er fundet poster på søgningen
      Do While Not rs.EOF
      Response.Write "Dette er et emne: " & rs("dato") & "
      rs.MoveNext
    Loop
Else
    ' Hvis der ikke er fundet poster på søgningen
    Response.Write "Der er endnu intet under denne kategori!"
End If

' Rydder op efter os
'myConn.Close
'Set myConn = Nothing
%>
_____________________________________________________
(Nu håber jeg ikke der er alt for mange fejl i den... Og der skal selvfølgelig rettes til nogle steder, bl.a. med databasenavn og tabelnavn...)

V.h.
  W13
Avatar billede netro Nybegynder
10. oktober 2004 - 14:54 #2
Hvis vi starter med det helt elementære, så vil du typisk have en tabel "kategorier" med alle dine kategorier på følgende form:

KatID    Katnavn
1          Opel
2          Fiat
3          BMW
4          Saab


- og ydermere en tabel "emner" med enmer relateret til de forskellige kategorier:

EmneID    Info    KatID
1        Blabla      2
2        Blabla      4
3        Blabla      2
4        Blabla      1


Alternativet er, at du (som du vidst gør nu?) blot anvender nederste tabelform, hvor der i stedet for et "KatID" står "Katnavn". Det er hverken gyldigt eller godt databasedesign.

Hvis du tager udgangspunkt i mit eksempel og w13's forslag med en querystring, så kan du udtrække alle emner tilknyttet en bestemt kategori med følgende SQL-statement:

SQL = "Select e.Info, k.Katnavn From kategorier k Left Join emner e On k.KatID = e.KatID Where k.KatID = " & Request.Querystring("kategori"))

- hvor din parameter "kategori" er det numeriske ID for kategorien.
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 00:07 #3
til det første forslag får jeg en fejl... måske fordi jeg ikke sætter det rigtigt sammen min måde at kalde på databasen på  variere nemlig lidt fra din... kan du tilrette denne kode så den passer til det du foreslår?

                    <%


Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM tabel WHERE kategori = '"& request.querystring("kategori") &"' ORDER BY dato DESC"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database.mdb")
If Request("alfa") > "" Then strSQL = strSQL & " AND instr('" & LCase(Request("alfa")) & "',lcase(left(title,1)))>0"
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
 
    %>



fejlen jeg får er denne

ODBC driver does not support the requested properties
Avatar billede w13 Novice
11. oktober 2004 - 09:21 #4
Øhm... Nu er det sådan at jeg selv er temmelig dårlig til ASP :-) Jeg har bare selv spurgt herinde angående querystrings, så jeg må nok overlade det til Netro at svare...
Avatar billede netro Nybegynder
11. oktober 2004 - 11:41 #5
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb"))

Set rs = Server.CreateObject("ADODB.RecordSet")

strSQL = "SELECT * FROM tabel WHERE kategori = '"& request.querystring("kategori") &"'"

If Request("alfa") > "" Then strSQL = strSQL & " AND instr('" & LCase(Request("alfa")) & "',lcase(left(title,1)))>0"

rs.Open strSQL, Conn, 1
If Not (rs.BOF Or rs.EOF) Then
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 11:51 #6
hmm jeg får stadig samme fejl... den linie den klager over er denne

If Request("alfa") > "" Then strSQL = strSQL & " AND instr('" & LCase(Request("alfa")) & "',lcase(left(title,1)))>0"

men hvis jeg sletter den siger den stadig at der er fejl på det linie nummer

fejlen lyder stadig på

ODBC driver does not support the requested properties.
Avatar billede w13 Novice
11. oktober 2004 - 13:07 #7
Hvilket program redigerer du koden i?
Avatar billede netro Nybegynder
11. oktober 2004 - 14:02 #8
Så er det formentlig ikke den samme linie som sidst. For før var det en ODBC-fejl.

Hvad er fejlmeddelelsen?
Avatar billede w13 Novice
11. oktober 2004 - 14:17 #9
(Det skrev han, at det også var denne gang...)  :-)
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 14:32 #10
Dreamweaver... men burde da ikke være et problem?

og ja jeg fik præcis samme fejl som sidst:/
Avatar billede netro Nybegynder
11. oktober 2004 - 14:56 #11
Så kan jeg ikke tro, at det er den linie...
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 17:10 #12
Den siger den linie der, men som sagt om jeg sletter den eller lader den være ændre ikke på noget...

der må være en fejl i koden. hvad betyder den fejl er da?

ODBC driver does not support the requested properties.
Avatar billede netro Nybegynder
11. oktober 2004 - 19:40 #13
Driveren understøtter ikke måden, hvorpå recordsættet åbnes. Hvordan så din kode ud, inden den gav fejl?
Avatar billede fastpoint Nybegynder
11. oktober 2004 - 20:51 #14
<%


Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT TOP 30 * FROM data WHERE godkendt=1 AND catagory='other'"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database.mdb")
If Request("alfa") > "" Then strSQL = strSQL & " AND instr('" & LCase(Request("alfa")) & "',lcase(left(title,1)))>0"
strSQL = StrSQL & " ORDER BY title "
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
 
    %>


det her er en anden side hvor jeg bruger præcis det samme.. og skriver jeg koden sådan virker det også... hvordan vil du tilrette det så den requester katagorien?
Avatar billede netro Nybegynder
11. oktober 2004 - 23:15 #15
Okay. Har du husket at rette "kategori" og "tabel" til dine egne navne i mit sidste svar? Prøv med:

<%


Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT TOP 30 * FROM data WHERE godkendt=1 AND catagory='" & request.querystring("kategori") & "'"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database.mdb")
If Request("alfa") > "" Then strSQL = strSQL & " AND instr('" & LCase(Request("alfa")) & "',lcase(left(title,1)))>0"
strSQL = StrSQL & " ORDER BY title "
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
 
    %>

Du skal tilføje din querystring i enden af URL'en.

http://www.domaene.dk/sidens_navn.asp?kategori=opel
Avatar billede fastpoint Nybegynder
12. oktober 2004 - 00:43 #16
Perfekt!! Denne gang virkede det sgu: )))) gør da helt klart tingene meget lettere og mere overskueligt! Tusind tak for hjælpen... er du interesseret i point så smid venligst et svar; )
Avatar billede fastpoint Nybegynder
12. oktober 2004 - 00:46 #17
sådan for min egen videns skyld... hvis jeg ville lave endnu en opdeling ville linket så bare fortsætte med endnu et spørgsmålstegn?

altså efter opel

sådan

opel?nykategori=xxx
Avatar billede netro Nybegynder
12. oktober 2004 - 08:57 #18
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester