28. august 2002 - 10:31Der er
26 kommentarer og 2 løsninger
Search! Keyword skal deles hvis f.eks. det er to ord!
Hey! Jeg har lavet dette simple search script! Den henter keyword fra en form i en search.html Mit problem er så bare at når den søger i databasen efter keyword så tager den det man har skrevet i formen som et "ord/keyword" f.eks. "engelsk hest" Det søger den efter i databasen som et ord! Jeg vil gerne have at den søger efter det som to forskellige ord!
Mit script ses her!
<% Response.Buffer = True %>
<% strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then
Response.Clear Response.Redirect("rightmain.asp")
Else
strKeyword = Replace(strKeyword,"'","''")
End If
strSQL = "SELECT Id, Emne, Link, Besk, Titel, Karakter, Fag, Name, Email FROM link2 WHERE" strSQL = strSQL & " (Emne LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (Link LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (Besk LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (Titel LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (Karakter LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (Fag LIKE '%" & strKeyword & "%')"
Set Conn = Server.CreateObject("ADODB.Connection") Conn.connectionstring = "Provider=SQLOLEDB;Data Source=xxx.xxx.xxx.xxx;Initial Catalog=xxxxxx.dk; User ID=xxxxxx.dk;Password=xxxxx;"
Conn.Open
Set rs = Conn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
Do While Not rs.EOF
URL = rs("Link") Besked = rs("Besk") Titel = rs("Titel") ID = rs("ID") Karakter = rs("Karakter") Fag = rs("Fag")
Link = "<b><a href=answer.asp?nummer=" & ID & " target='blank'>" & Titel & "</a></b>"
Response.Write "<li>" & Link & "</li>" & " <br> Fag: " & Fag & " - Karakter: " & Karakter & " - Tryk på link for beskrivelse :)"
rs.MoveNext Loop Else
Response.Write "<li>Desværre din søgning gav intet resultat :("
End If
Conn.Close Set Conn = Nothing %>
Pointsne bliver kun givet for et svar der virker! Ellers er jeg lidt ligeglad hvordan i løser mit problem bare det virker :) Håber på at i har en løsning på forhånd tak :)
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
Her er din koden tilrettet så den med OR mellem det alle ord..:
<% Response.Buffer = True %>
<% strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then
Response.Clear Response.Redirect("rightmain.asp")
Else
strKeyword = Replace(strKeyword,"'","''")
End If
ordArray = Split(strKeyword, " ") strSQLWhere = "" strSQL = "SELECT Id, Emne, Link, Besk, Titel, Karakter, Fag, Name, Email FROM link2 WHERE " for i = lbound(ordArray) to ubound(ordArray) if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR " strSQLWhere = strSQLWhere & "(Emne LIKE '%" & ordArray(i) & "%')" next for i = lbound(ordArray) to ubound(ordArray) if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR " strSQLWhere = strSQLWhere & "(Link LIKE '%" & ordArray(i) & "%')" next for i = lbound(ordArray) to ubound(ordArray) if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR " strSQLWhere = strSQLWhere & "(Besk LIKE '%" & ordArray(i) & "%')" next for i = lbound(ordArray) to ubound(ordArray) if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR " strSQLWhere = strSQLWhere & "(Title LIKE '%" & ordArray(i) & "%')" next for i = lbound(ordArray) to ubound(ordArray) if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR " strSQLWhere = strSQLWhere & "(Karakter LIKE '%" & ordArray(i) & "%')" next for i = lbound(ordArray) to ubound(ordArray) if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR " strSQLWhere = strSQLWhere & "(Fag LIKE '%" & ordArray(i) & "%')" next
Set Conn = Server.CreateObject("ADODB.Connection") Conn.connectionstring = "Provider=SQLOLEDB;Data Source=xxx.xxx.xxx.xxx;Initial Catalog=xxxxxx.dk; User ID=xxxxxx.dk;Password=xxxxx;"
Conn.Open
Set rs = Conn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
Do While Not rs.EOF
URL = rs("Link") Besked = rs("Besk") Titel = rs("Titel") ID = rs("ID") Karakter = rs("Karakter") Fag = rs("Fag")
Link = "<b><a href=answer.asp?nummer=" & ID & " target='blank'>" & Titel & "</a></b>"
Response.Write "<li>" & Link & "</li>" & " <br> Fag: " & Fag & " - Karakter: " & Karakter & " - Tryk på link for beskrivelse :)"
rs.MoveNext Loop Else
Response.Write "<li>Desværre din søgning gav intet resultat :("
Hej, jeg har lige prøvet at bruge det på noget jeg har gang i, men den søger ikke på to ord???
Her er koderne:
<% strKeyword = Trim(Request.Form("soeg"))
If Len(strKeyword) = 0 Then
Response.Clear Response.Redirect("default.asp")
Else
strKeyword = Replace(strKeyword,"'","''")
End If
ordArray = Split(strKeyword, " ") strSQLWhere = "" strSQL = "SELECT Catalogs.catalogName as UdskrivNavn, Products.ProductID, products.productDesc, Products.ProductName, Products.CatalogID FROM Products, catalogs where Catalogs.catalogNameID = Products.CatalogID" strSQL = strSQL & " AND (products.productName LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (products.productDesc LIKE '%" & strKeyword & "%')"
for i = lbound(ordArray) to ubound(ordArray) if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR " strSQLWhere = strSQLWhere & "(Products.ProductName LIKE '%" & ordArray(i) & "%')" next for i = lbound(ordArray) to ubound(ordArray) if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR " strSQLWhere = strSQLWhere & "(products.productDesc LIKE '%" & ordArray(i) & "%')" next
Set con = server.CreateObject("ADODB.Connection") Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../e-handel/db/database.mdb")
Doh jeg har stavet et af dine kolonne navne forkert ... Dein kolonne hedder titel og ikke som jeg har skevet title, så prøv at rette denne linie: strSQLWhere = strSQLWhere & "(Title LIKE '%" & ordArray(i) & "%')"
ARGH!!!!!!!!! Når jeg søger på et ord viser den alle enteries i databasen.... når jeg søger på to ord kommer samme fejl som før :/ Ja ID og Karakter i min database er ikke tekst!
prøv også at fjern karakter fra WHERE delen for at se om det evt er den kolonne som giver fejl:
for i = lbound(ordArray) to ubound(ordArray) ' if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR " ' strSQLWhere = strSQLWhere & "(Karakter LIKE '%" & ordArray(i) & "%')" next
Har tjekket de foskellige ting nu med intet hjalp :/ Det er godt nok mystisk! Nu får jeg fjlen lige gyldig hvad jeg søger på! Hvis du vil kan du prøve selv på www.paniktimen.dk
Ellers kan du prøve at tilføje en kolonne af gang starte med dette:
strSQL = "SELECT Id, Emne, Link, Besk, Titel, Karakter, Fag, Name, Email FROM link2 WHERE " for i = lbound(ordArray) to ubound(ordArray) if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR " strSQLWhere = strSQLWhere & "(Emne LIKE '%" & ordArray(i) & "%')" next
og derefter: strSQL = "SELECT Id, Emne, Link, Besk, Titel, Karakter, Fag, Name, Email FROM link2 WHERE " for i = lbound(ordArray) to ubound(ordArray) if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR " strSQLWhere = strSQLWhere & "(Emne LIKE '%" & ordArray(i) & "%')" next for i = lbound(ordArray) to ubound(ordArray) if strSQLWhere <> "" then strSQLWhere = strSQLWhere & " OR " strSQLWhere = strSQLWhere & "(Link LIKE '%" & ordArray(i) & "%')" next
Da jeg kørte med det gamle virkede det fint :) Bortset fra at den søgte på det som et ord jo :) men den kom med de rigtige resultater og det hele :) Men nu prøver jeg lige det du forslog :)
Weee kanon det virker efter lidt justering! :) Sorry eagle men pointsne går næsten kun til Nightwitness! Men giver dig 10 for din flittighed :D TAKKER NightWitness! :D
LOL magen til ***** kode skal man lede længe efter.
Den søger jo efter strKeyword som ikke er defineret for de fleste kolonner. Den enste kolonne som søges i er Emne og så det enda kun det sidste ord som der blvier søgt efter ......
Hehe ja det ved jeg godt men har rettet den og nu virker den :) Ham der lavede den var vist lidt doven :)
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.