30. maj 2001 - 22:07Der er
7 kommentarer og 1 løsning
udskriv specifikt indhold fra database efter søgning
Jeg er ved at lave en filmdatabase på nettet. Jeg har bare et problem.
Jeg har et en søgeside katalog.htm der refererer til katalog_resutater.asp.
Søger jeg i alle felter uden at indtaste text finder resultatsiden alle poster i databasen. Vil jeg derimod søge på en titel der begynder med fx \'F\' er resultatsiden blank selvom der er flere records med \'F\'
et skud fra hofte kunne være at du bruger AND i din SQL sætning istedet for OR
SELECT produktions_id, titel, genre, producer, synops FROM katalog WHERE titel LIKE \'\" + Replace(katalog__varGenre, \"\'\", \"\'\'\") + \"\' AND genre LIKE \'\" + Replace(katalog__varTitel, \"\'\", \"\'\'\")
hvilket betyder at både \"titel\" og \"genre\" skal være lig med eller begynde med f.eks. F
Hvis du vil undgå at alle poster vise når der ikke står noget i feltet kan du bare lave redirect.
Jeg har en søge funktion som ser sådan her ud: Den virker, men så igen, det er heller ikke mig der har lavet den :) <% \' Henter værdien fra soeg.htm strKeyword = Trim(Request.Form(\"Keyword\"))
If Len(strKeyword) = 0 Then \' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect(\"search.htm\") Else \' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,\"\'\",\"\'\'\") End If
\' Opbygger en dynamisk SQL streng strSQL = \"SELECT ID, Bandnavn, Sangnavn FROM Tab WHERE\" strSQL = strSQL & \" (Bandnavn LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (Sangnavn LIKE \'%\" & strKeyword & \"%\')\"
\' Skaber DSNLess forbindelse til DBen strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"../system/Tabs.mdb\") Set myConn = Server.CreateObject(\"ADODB.Connection\") myConn.Open strDSN
\' Skaber et recordset udfra SQL strengen Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then
Do While Not rs.EOF %> <a href=\"Tab.asp?Id=<%=RS(\"Id\")%>\" target=\"_blank\"><%=rs(\"Bandnavn\")%></a> <p> <% rs.MoveNext Loop Response.Write \"\" Else \' Hvis der ikke er fundet poster på søgningen Response.Write \"<p>Der er ikke fundet noget på denne søgning</p>\" End If
\' Rydder op efter os myConn.Close Set myConn = Nothing %> </font> <td><font face=\"Impact\" color=\"#F86C00\"> <% \' Henter værdien fra soeg.htm strKeyword = Trim(Request.Form(\"Keyword\"))
If Len(strKeyword) = 0 Then \' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect(\"search.htm\") Else \' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,\"\'\",\"\'\'\") End If
\' Opbygger en dynamisk SQL streng strSQL = \"SELECT ID, Bandnavn, Sangnavn FROM Tab WHERE\" strSQL = strSQL & \" (Bandnavn LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (Sangnavn LIKE \'%\" & strKeyword & \"%\')\"
\' Skaber DSNLess forbindelse til DBen strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"../system/Tabs.mdb\") Set myConn = Server.CreateObject(\"ADODB.Connection\") myConn.Open strDSN
\' Skaber et recordset udfra SQL strengen Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then
Do While Not rs.EOF %> <%=rs(\"Sangnavn\")%> <p> <% rs.MoveNext Loop Response.Write \"\" Else \' Hvis der ikke er fundet poster på søgningen Response.Write \"<p>Der er ikke fundet noget på denne søgning</p>\" End If
\' Rydder op efter os myConn.Close Set myConn = Nothing %>
Prøv at generere din SQL streng afhængigt af værdien i mnuGenre:
Select Case katalog__varGenre
Case \"%\" strSQL = \"SELECT produktions_id, titel, genre, producer, synops FROM katalog WHERE titel LIKE \'%\" + Replace(katalog__varTitel, \"\'\", \"\'\'\") + \"%\' OR genre LIKE \'%\" + Replace(katalog__varTitel, \"\'\", \"\'\'\") + \"%\' ORDER BY genre\"
Case \"genre\" strSQL = \"SELECT produktions_id, titel, genre, producer, synops FROM katalog WHERE genre LIKE \'%\" + Replace(katalog__varTitel, \"\'\", \"\'\'\") + \"%\' ORDER BY genre\"
Case \"titel\" strSQL = \"SELECT produktions_id, titel, genre, producer, synops FROM katalog WHERE titel LIKE \'%\" + Replace(katalog__varTitel, \"\'\", \"\'\'\") + \"%\' ORDER BY genre\"
Case \"producer\" \' Findes der et \"producer\" felt i din tabel?
Ah, sorry - jeg kan se at der er et producerfelt, så den sidste SQL sætning skal selvfølgelig være:
Case \"producer\" strSQL = \"SELECT produktions_id, titel, genre, producer, synops FROM katalog WHERE producer LIKE \'%\" + Replace(katalog__varTitel, \"\'\", \"\'\'\") + \"%\' ORDER BY genre\"
Synes godt om
Ny brugerNybegynder
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.