13. oktober 2001 - 18:44Der er
23 kommentarer og 2 løsninger
Søg på mere end et ord, f.eks. \"togvogn+lokomotiv\"
Hejsa
Jeg sidder og sysler lidt med en side om modeltog, og jeg har ikke rigtig så meget styr på ASP. Jeg skal dog lave et \"katalog\" over togsæt, med lokomotiver, skinner, vogne osv.
Til det, skal jeg bruge en søgemaskine, som kan så på mere end et ord, ligesom på jubii, hvor man kan skrive \"lokomotiv+vogne\" eller \"lokomotiv-vogne\"
food4u.dk--> nu er det lang tid siden jeg har været på siden, men er det ikke lidt unfair, at du \"lytter med\", på et spørgsmål jeg giver 3000 point for?
jack_daniels >> for det første. 3000 points for et sånt spørsmål er jo *helt* hårreisende. For det andre så kan du ikke annet enn tiltrekke brukere når du oppretter et spørsmål til 3000 points. For det tredje så kan du ikke forhindre at noen \"lytter med\", man kan jo uansett når som helst lese svaret som blir postet her inne.
Jeg foreslår at du setter antall points ned til 300. For 3000 points så skulle man kreve noe *langt* større enn en simpel søkemaskin.
nute--> Hmm, jeg har kigget lidt rundt her på eksperten, hvor der er nogle der har stillet et spårgsmål noget lignende, og de har satset fra 200-700, og så ender det med at det bliver noget med at der er en der skal betales til at lave det. Og det vil jeg ikke, jeg ved ikke engang om min side bliver lagt ud, så derfor vil jeg ikke betale noget (penge) for det! (Man kan vidst ikke sætte point summen ned)
det du skal ha tak i rimelig simpelt å lage. Du skal bare ta imot en søkestreng og analysere den for noen tegn. Det er noen simple if\'s du skal skrive, og det er ærlig talt *ikke* verdt 3000 points.
Joda du kan sette ned poengsummen når du aksepterer. Du aksepterer et svar, men snupper de fleste poeng selv. Det er sånne innlegg som dette som ødelegger ideologien til eksperten.
Ikke noget specielt jeg smid et link så du kunne se om det var sådan noget du søgte. Jeg syntes også at 3000 points er vildt overdrevet :). Koden her, er lavet til et andet spm her på eksperten og han gav 300 points for det:
<% Response.Buffer = True %> <html> <head> <title>Søgeresultat</title> </head> <body> <center> <% \' Henter værdien fra sidste side strKeywordForm = Trim(Request.Form(\"Keyword\")) If Len(strKeywordForm) = 0 Then \' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect(\"default.asp\") End if strKeywordForm = Replace(strKeywordForm,\"\'\",\"\'\'\") strKeywordForm = Replace(strKeywordForm,\" \",\" \")
nFeltItems = Request.Form(\"felter\").Count If nFeltItems = 0 then \' Hvis der ikke er skrevet i feltet Response.Redirect(\"default.asp\") End If wordArray = Split(strKeywordForm,\" \",-1)
firstTime = true lastFunctionWord = \"\" changeFunction = false for wc = LBound(wordArray) to UBound(wordArray) if firstTime = true then firstTime = false if nFeltItems > 0 then strSQL = \"((\" & Request.Form(\"felter\")(1) & \" LIKE \'%\" & wordArray(wc) & \"%\'\" for i = 2 to nFeltItems strSQL = strSQL & \" OR \" & Request.Form(\"felter\")(i) & \" LIKE \'%\" & wordArray(wc) & \"%\'\" next strSQL = strSQL & \")\" end if else if Ucase(wordArray(wc)) = \"OG\" then if (lastFunctionWord = \"ELLER\") and (changeFunction = false) then lastFunctionWord = \"OG\" strSQL = strSQL & \") AND (\" changeFunction = true else lastFunctionWord = \"OG\" strSQL = strSQL & \" AND \" changeFunction = false end if elseif Ucase(wordArray(wc)) = \"ELLER\" then if lastFunctionWord = \"OG\" and changeFunction = false then lastFunctionWord = \"ELLER\" strSQL = strSQL & \") OR (\" changeFunction = true else lastFunctionWord = \"ELLER\" strSQL = strSQL & \" OR \" changeFunction = false end if elseif Ucase(wordArray(wc)) = \"IKKE\" then strSQL = \"(\" & strSQL & \")\" strSQL = strSQL & \") AND (\" lastFunctionWord = \"IKKE\" else if lastFunctionWord = \"IKKE\" then str_NOT = \" NOT \" function_Word = \" AND \" else str_NOT = \"\" function_Word = \" OR \" end if if nFeltItems > 0 then strSQL = strSQL & \"(\" & Request.Form(\"felter\")(1) & str_NOT & \" LIKE \'%\" & wordArray(wc) & \"%\'\" for i = 2 to nFeltItems strSQL = strSQL & function_Word & Request.Form(\"felter\")(i) & str_NOT & \" LIKE \'%\" & wordArray(wc) & \"%\'\" next strSQL = strSQL & \")\" end if end if end if next strSQL = strSQL & \")\"
strDSN = \"Data Source=d:\\home\\eagleeyedk\\db\\db5.mdb;Provider=Microsoft.Jet.OLEDB.4.0;\" \'strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\".\\db\\db5.mdb\") Set myConn = Server.CreateObject(\"ADODB.Connection\") Set rs = Server.CreateObject(\"ADODB.RecordSet\") myConn.Open strDSN
strSQLWhere = strSQL
\'DENNE SQL HVIS DER ER TO TABLLER SOM SKAL JOINES strSQL = \"SELECT *, tabel_navn.ID as tabelID \" strSQL = strSQL & \"FROM tabel_navn LEFT JOIN Handelsetekst ON tabel_navn.cpr = Handelsetekst.cpr\" strSQL = strSQL & \" WHERE \" & strSQLWhere
\'DENNE SQL HVIS DER KUN ER EN TABEL \'strSQL = \"SELECT * FROM tabel_navn WHERE \" & strSQLWhere
if not (rs.BOF and rs.EOF) then Response.Write \"<table border=1>\" Response.Write \"<tr><td>ID</td><td>Emne</td><td>Vedr</td><td>Handelsetekst</td></tr>\" do while not rs.EOF Response.Write \"<tr>\" Response.Write \"<td>\" & rs(\"tabelID\") & \"</td>\" Response.Write \"<td>\" & rs(\"Emne\") & \"</td>\" Response.Write \"<td>\" & rs(\"Vedr\") & \"</td>\" Response.Write \"<td>\" & rs(\"tekst\") & \"</td>\" Response.Write \"</tr>\" rs.MoveNext loop Response.Write \"</table>\" end if
rs.Close
myConn.Close Set myConn = Nothing %> </center> </body> </html>
Jeg vil meget gerne hjælpe dig vidre med det, men det bliver ikke iaften, jeg er på vej ud af døres.
Du kan rette OG/ELLER til + og IKKE til - i koden.
Bemærk SQL sætningen som jeg bruger JOINer to tabller så hvis du bare har en table brugen den som er udkommenteret lige neden under. Som det er lige nu får søge-koden kolonne navne fra Default.asp siden checkboxe så de skal ændre eller skal det laves om til at den søger i nogle faste kolonner.
I den nye result.asp er felternes navne i et array. Hvis du vil se kan jeg godt lige smide kode her... ca 200 linier kode.
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.