28. april 2002 - 13:50Der er
26 kommentarer og 1 løsning
søgning i accesdatabase
Jeg skal lave en søgning i en databse, hvor man skal kunne søge på filmtitler. Da jeg er meget grøn inden for området vil jeg gerne have en meget udførlig vejledning. siden kan ses på: http://tirdyr.dyndns.dk jeg kan også kontaktes på icq #92711123
Har du en database med filmtitler i? Hvis ja, hvad hedder dine felter og tabeller? - så skal jeg prøve at skrive noget til dig, så du kan se systemet i det.
jeg ville nok bruge en streng med like, da du derved ikke skal skrive det hele, kunne se ud i stil med denne: sql="SELECT * FROM filmtabel where titel LIKE '%" & request("searchtitel") & "%')"
tirdyr: hvis du er helt grøn i asp, bør du nok læse nogle af de tutorials der findes. se f.eks. http://www.html.dk/tutorials/asp/ Der er nogle fine tutorials om asp nederst.
Databasen hedder grulf's movies så er der feltet "title" det er den der skal søges på der udover er der "type" feltet, og "nr" feltet, og "number of cds" feltet.. der skal vises alle felter når der søges på "title"...
Prøv om du kan forstå det her... ellers vil jeg anbefale at du læser de artiker. Det her er een måde at gøre det på. Jeg har ikke lige testet om det virker.
<%
Dim vPath, pPath, ConString
vPath = "database\grulfsmovies.mdb" 'use this one if database is in root of cart folder pPath = Server.MapPath( vPath )
'Det vigtigste vi skal vide for at kunne svare dig er: Hvad hedder din database-fil... Hvad hedder tabellen med de forskellige film i og hvad hedder kolonnerne.
'Det som der er meningen er nu at man laver et script der søger i databasen efter ALLE titler der MINDER om den man har indtastet i søgefeltet. som er "LIKE" din søgning.
'Først laver man en forbindelse til databasen, således:
<% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & ("C:\databaser\grulfs.mdb") ' Hvor C:\databaser\grulf.mdb er det sted på serveren hvor din database ligger Conn.Open DSN
'Jeg antager at formular-feltet som brugeren indtaster sin søgning i, hedder "search".
'Nu laver vi den streng der skal bestemme hvad vil have UD af databasen:
strSQL = "Select * from movies where title = '" & request.form("search")& "' order by title"
'Nu lægger vi alle resultaterne ind i et såkaldt record set (rs) så vi kan tage alle resultaterne ud, en ad gangen:
set rs = Conn.Execute(strSQL)
'Så laver vi et LOOP som udkskriver samtlige resultater, et ad gangen. Men vi finder først ud af om der overhovedet ER nogen resultater, sådan her:
IF rs.BOF = TRUE THEN ' Der er ingen resultater Response.write "Der er ikke fundet nogen film!" ELSE ' Hvis der ER fundet nogen film laver vi så loop'et som skriver dem i en liste. Loop'et stopper når RS er kommet til ende (EOF = End Of File)
Response.write "Her er resultaterne" Response.write "<p>" DO response.write "Titel: " & rs("title") & ", Nr.: " & rs("nr") & "<br>" rs.Movenext LOOP WHILE NOT rs.EOF Response.write "</p>" END IF ' Nu er listen blevet skrevet ud og vi afslutter database forbindelser.
Conn.Close set Conn = Nothing %>
' Hmmm ... Gad vide om det virker... Jeg går selvfølgelig ud fra at du kan finde ud af at lave et tekstfelt, i en formular, som hedder Search. Hvis der er flere spm. så skriv...
fil.asp er den fil hvor du lægger det script jeg lige har sendt dig ind i. Selve formularen behøver nemlig ikke at være i samme fil som scriptet. Selve fil.asp laver ikke andet end at udskrive listen.
Hvis du opretter et spm. senere vil jeg gerne forklare hvordan du smelter dele sammen...
Hvad siger browseren at fejlen er? Vær sikker på at tabellen med dine film i hedder "movie" eller at du skriver det rigtige navn ind i linien.
Vær opmærksom på at det ikke er FIL-navnet der skal stå men selve tabellen INDE I filen, som skal stå der. Jeg ved ikke om der skal stå "Titel" eller "Title" ... Ellers prøv denne:
strSQL="SELECT * FROM movies where title LIKE '%" & request.form("search") & "%'"
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.