Avatar billede melted Nybegynder
22. juli 2003 - 11:27 Der er 9 kommentarer

Søgefunktion i forum

Jeg har et forum som jeg gerne vil lave en søgefunktion til.

Jeg har disse felter i databasen:
FORUMS
------
for_ID
for_name

MESSAGES
--------
msg_date
msg_time
msg_subject
msg_body
msg_author
msg_ID
for_ID

REPLIES
-------
rep_ID
msg_ID
for_ID
rep_date
rep_time
rep_author
rep_body

Jeg vil så gerne have mulighed for at kunne søge samlet i både MESSAGES (msg_body og msg_subject) og REPLIES (rep_body) og med FORUMS tilknyttet (kun til at vise hvilket forum indlægget ligger i), men er i tvivl om hvordan jeg skal strikke en SQL sammen til dette.

Ud over dette kunne jeg også godt tænke mig at få highlightet søgeordet i søgeresultaterne så man kan se et lille udsnit.

Håber nogen kan hjælpe!
Avatar billede mini-me Nybegynder
22. juli 2003 - 11:32 #1
strSQL = "SELECT msg_body, msg_subject, rep_body FROM MESSAGES, REPLIES, FORUMS WHERE"
        strSQL = strSQL & " (msg_body LIKE '%" & strKeyword & "%')"
        strSQL = strSQL & " OR (msg_subject LIKE '%" & strKeyword & "%')"
        strSQL = strSQL & " OR (rep_body  LIKE '%" & strKeyword & "%')"
        set rs = conn.execute(strSQL)
Avatar billede melted Nybegynder
22. juli 2003 - 11:38 #2
Mangler noget JOIN et eller andet sted...
Måske sådan : REPLIES --> MESSAGES --> FORUMS
Avatar billede melted Nybegynder
22. juli 2003 - 12:00 #3
Det skal være sådan at når man søger, så søger man både i MESSAGES og REPLIES, men da REPLIES ikke har nogen subjects (overskrifter) så skal det være overskriften fra MESSAGES der bliver vist, men brødteksten fra REPLIES...

Puha... håber det er til at forstå, ellers må I spørge.
Avatar billede mini-me Nybegynder
22. juli 2003 - 13:00 #4
Jeg ved ikke men vil nu mene at det du beder om der er en større opgave og nok ikke kun 30 point...
Avatar billede Slettet bruger
22. juli 2003 - 17:40 #5
gider ikke lige tæske hele koden igennem... men ideen er lidt i retning af det her.. ved ikke om du kan gennemskue mit meget rodede eksempel :oD


set sr = conn.execute("select * from xxx order by watever")

do while not rs.EOF

xxx = split(sr("xxx"),request.form("søgeord"))
if xxx(1)<>"" then
udskrivdenne="ja"
end if

yyy = split(sr("yyy"),request.form("søgeord"))
if yyy(1)<>"" then
udskrivdenne="ja"
end if

if udskrivdenne="ja" then
response.write det indlæg, der nu har giver søgeresultat... så kan du eventuelt skrive det ud som xxx(0) & "<b>" & request.form("søgeord") & "</b>" & xxx(1), så man fremhæer søgeordert med fed
end if


rs.movenext
loop
Avatar billede melted Nybegynder
22. juli 2003 - 18:43 #6
>>>mini-me

Hmm... det drejer sig vel bare om en SQL-sætning... burde vel ikke være det sværeste :)
Avatar billede melted Nybegynder
22. juli 2003 - 18:54 #7
>>>kvadratrodenaf1

Det ser nogenlunde ud, men hvad hvis jeg kun vil vise max 100 tegn og søgeordet står midt i en sætning længere fremme end de 100 tegn?
Avatar billede Slettet bruger
24. juli 2003 - 14:02 #8
set srx = conn.execute("select * from xxx order by watever")
set sry = conn.execute("select * from yyy order by watever")

do while not rs.EOF

'overskriften
xxx = split(srx("xxx"),request.form("søgeord"))
if xxx(1)<>"" then
udskrivdennea="ja"
udskrivdenne="ja"
end if

'teksten
yyy = split(sry("yyy"),request.form("søgeord"))
if yyy(1)<>"" then
udskrivdenneb="ja"
udskrivdenne="ja"
end if

if udskrivdenne="ja" then

'UDSKRIVER OVERSKRIFT

if udskrivdennea="ja" then

'hvis overskriften har givet nogle søgeresultater, skal søgeordet skrives med fed

'skriver fed
response.write xxx(0) & "<b>" & request.form("søgeord") & "</b>" & xxx(1)
else

'udskriver overskrften uden formatering
response.write sr("xxx")
end if

'UDSKRIVER TEKST

if udskrivdenneb="ja" then%>

<script>


if (yyy(0).length<50)
// hvis der ikke er 50 tegn foran søgeordet skal den bare skrive hele yyy(0)
{document.write yyy(0);}
{document.write (yyy(0).substring(yyy(0).length - 50, yyy(0).length));};
document.write ("<b><% response.write request.form("søgeord") %> </b>");
if (yyy(1).length<50)
{document.write yyy(1);}
{document.write yyy(1).substring(0,50);};
<%
end if
else
%>
if <% response.write sry("yyy") %>.length<100)
{document.write (" <% response.write sry("yyy") %> ");}
{document.write (" <% response.write sry("yyy") %>.substring(0,100)");};
<%
end if
end if
%>
</script>

jeg er ikke en haj til js, så det kan godt være, der er nogle fejl... i må rette mig, hvis der er...
Avatar billede melted Nybegynder
24. juli 2003 - 14:22 #9
Kigger på det i løbet af iaften eller imorgen :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester