Hej, <code></code> Varför ta bort tecknen? I en sträng är det bara se till att man inte kan bryta strängen:Fritextsökning i Access
Jag undrar om det finns någon vänlig själ som vill delge mig ett script för fritextsökning i en accessdatabas (vissa fält). Jag är nybörjare i ASP, därför min vädjan.
Tack på förhand... Sv: Fritextsökning i Access
Hej!
Hur menar du med 'fritext'-sökning? Menar du att du vill låta användaren t ex skriva in ett sökord sedan vill du kolla om detta ord finns med i ett specifikt fält i Access-databasen (och returnera alla poster som har detta ord med)?
Exempel:
Tabellen heter: MyNews
Det fält som skall letas igenom heter: News
Unik nyckel i tabellen: ID
och du vill returnera alla ID:n för de poster som innehåller det söka ordet 'asp', då skulle du kunna köra följande SQL-fråga från din ASP-sida för att returnera alla poster:
<code>
SELECT ID, News
FROM MyNews
WHERE News LIKE '%asp%'
</code>
Här skulle även fält som innehåller bokstäverna 'asp' returneras, vill du bara ha tillbaka hela ord så kan du istället köra:
<code>
SELECT ID, News
FROM MyNews
WHERE News LIKE '% asp %'
</code>
Sedan vill du förstås inte ALLTID söka efter ordet 'asp', så du får ju låta användaren skriva in sökordet i ett formulär på en sida som sedan postar sökordet till en ASP-sida, denna tillverkar sedan SQL-frågan:
<code>
<%
Dim sSQL
Dim sORD
sORD = Request.Form("search")
sSQL = "SELECT ID, News FROM MyNews " _
& "WHERE News LIKE '% " & sORD & " %'"
' osv. kod för att köra denna fråga mot din connection
' mot databasen...
' sedan kod för att skicka tillbaka resultatet till användaren
' på ett snyggt sätt...
%>
</code>
Kanske lite over-kill i detta fall, men kod som den ovanför gör det rätt lätt för en hacker att ställa till oreda i din databas, det finns olika sätt att skydda sig mot de lättaste attackerna - i en SQL-Server kan du t ex använda Stored Procedures för att lagra SQL-frågan i databasen istället, i en enklare ASP-sida kanske du skall skydda dig mot elakheter genom att 'filtrera' bort otrevliga tecken i det sökord som användaren skrev in:
<code>
sOrd = Request.Form("search")
sOrd = Replace(sOrd, "'", "")
sOrd = Replace(sOrd, ";", "")
' osv...
</code>
<br>
Lycka till!<br>
<b>// Qez</b>Sv: Fritextsökning i Access
sOrd = Request.Form("search")
sOrd = Replace(sOrd, "'", "''")
Kan man även söka på: I'll find what I'm looking for