webForumDet fria alternativet

Söka ifrån access

ASP

14 svar · 629 visningar · startad av Exploit

Medlem sedan nov. 2006107 inlägg
Frågan#1

Hej igen alla....

Nu till ett ytterligare problem på min sajt...

Jag har ett länkarkiv skrivet i asp & sparas i en access databas.
kategori länkarna är i meny & själva länkarna öppnas i en iframe.

nu till mitt probbz. när jag lägger upp länkarna så ska innehavaren till länken ha en möjlighet att skapa ett par keywords som ligger i en egen tabell i databasen. sen skulle jag vilja ha en sökruta på sajten som ska söka igenom alla sökord/keyword i databasen.. sen så ska alla dom träffarna relaterade till respektive länk visas i min iframe med andra ord du söker på tex. bilar, då ska alla länkar med dom keywords visas!!!

//Jocke

Medlem sedan juli 20041 183 inlägg
#2

Asså, du ska göra en länkkatalog och konkurera med google, altavista, yahoo, etc? :P

Hur är dina keywords kopplade till länkarna?

För att söka i en access-databas (kanske fler också) skriver man t.ex.:

SELECT * FROM Tabell WHERE Kolumn LIKE '%bilar%'

För att söka på flera keywords kan man skapa sin SQL-sats dynamiskt innan man exekverar frågan mot databasen. Standarden i sökvärlden är AND mellan frågorna.

SELECT * FROM Tabell WHERE Kolumn1 LIKE '%bil%' AND Kolumn2 LIKE '%sökterm%'

%-tecknena i sammarbete med LIKE säger att det får stå vad som hellst före och efter söktermen. I fallet bilar är "gula bilar åker" sann. Vill du söka exakt gör du bara en vanlig SELECT fråga...

Medlem sedan nov. 2006107 inlägg
#3

Nae ska inte konkurera med dom :-)

Grejen är den att jag inte har inkluderat keyword funktionen än..
just nu har jag en admin sida där jag fyller i namn,hemsida(url),beskrivning samt en bild(logga) skulle vilja utöka admin sidan med typ en memo ruta som jag skriver dom olika sökorden i o sen att den ska sparas i databasen precis som det andra gör.
räcker det med att jag har en likadan typ memoruta som jag fyller i länk beskrivningen i fast sökorden ska ju inte visas på sajten utan bara finnas där.....

Medlem sedan juli 20041 183 inlägg
#4

Jag hade skapat en till kolumn i tabellen och sparat nyckelorden tillsammans med länken. Du kan separera nyckelorden med kommatecken eller nåt så att det blir enklare att se. Sen gör du en sökning på den kolumnen med % och LIKE som jag beskrev.

Medlem sedan nov. 2006107 inlägg
#5

Så här ser min sok.asp ut...

<HTML>
<%@ LANGUAGE="VBSCRIPT" %>
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("../db/lankar.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")

SELECT * FROM lankar WHERE key LIKE "%'" &
Request.Form("sokord")& "%'"

Set RS=Connect.Execute (SQL)

Do Until RS.EOF
%>

<TABLE border='2' width='500'><tr><td>
<%=RS("namn")%><br>
<%=RS("text")%><br>
<%=RS("kat")%><br>
<%=RS("hemsida")%><br><br><br>
</td></tr>
</TABLE>

<%
RS.MoveNext
LOOP
RS.Close
Connect.Close
%>

</HTML>

Medlem sedan nov. 2006107 inlägg
#6

Jag får det inte att funka sidan kan inte visas...

Medlem sedan juni 200032 967 inlägg
#7
SELECT * FROM lankar WHERE key LIKE "%'" & 
Request.Form("sokord")& "%'"

skall vara:

SQL = "SELECT * FROM lankar WHERE key LIKE '%" & Request.Form("sokord")& "%'"

sidan kan inte visas...

stäng av "egna http-felmeddelanden" / "friendly error messages" i IE, så får du vettigare felmeddelanden som kan hjälpa dig att felsöka.

Slutligen: använd [kod]-taggar när du postar kod, så blir det lättare att läsa.

Medlem sedan juli 20041 183 inlägg
#8

Du har sktivit fel i SQL-frågan och du sparar inte frågan i någon variabel:

SQL = "SELECT * FROM lankar WHERE key LIKE '%" & Request.Form("sokord") & "%' ORDER BY namn ASC;"

edit // [asp] funkade inte och det är väl najs med lite sortering också? :)

edit // och sen är jag också :P

Medlem sedan nov. 2006107 inlägg
#9

tackar tackar nu funkar det...
men när inget ord finns med så visas bara en tom sida hur fixar man till det så att det står ex. ingen träff....

Medlem sedan juli 20041 183 inlägg
#10

Kolla hur många rader som returnerades

Tror de är RS.RecordCount

Medlem sedan juni 200032 967 inlägg
#11
...
Set RS=Connect.Execute (SQL)

If RS.EOF then
     response.write "Ingen träff"
End if

Do Until RS.EOF
...
Medlem sedan nov. 2006107 inlägg
#12

Om man vill göra om koden "ingen träff" så att det kommer en popup ruta istället??

Medlem sedan juni 200032 967 inlägg
#13
response.write "<script>alert('Ingen träff');</script>"
Medlem sedan juli 20041 183 inlägg
#14

Exploit skrev:

Om man vill göra om koden "ingen träff" så att det kommer en popup ruta istället??

Skulle jag avråda ifrån. Popup fönster har missbrukats något kolossalt så många personer kommer inte se ditt meddelande då det blockeras av deras webbläsare.

Annars om du fortfarande vill ha popup ändrar du din body så att popupfönstret visas om det inte finns någon träff.

<body onload="popup()">

popup() är en javascript-funktion som öppnar ett popupfönster.

edit // eh, ignorera detta. @nders har rätt igen. Han är som ett litet intelligent monster som alltid har rätt! :P

Medlem sedan nov. 2006107 inlägg
#15

oki tackar..

298 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
164 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)