Avatar billede pelbym Nybegynder
21. august 2001 - 12:17 Der er 18 kommentarer og
1 løsning

Søgefunktion med MySQL DB

Er der nogen som kan hjælpe med en søgefunktion, der medtager mere end et ord, i selve søgningen ?
Avatar billede casperhojstrup Nybegynder
21. august 2001 - 12:42 #1
strSQL = \"SELECT * FROM dinTabel WHERE OrdEt LIKE ditSøgeord1 OR OrdTo LIKE ditSøgeord2\"
set oRs = oConn.Execute(strSQL)
Avatar billede casperhojstrup Nybegynder
21. august 2001 - 12:43 #2
FEEEEEEEEEEEEEEEJL

strSQL = \"SELECT * FROM dinTabel WHERE DinCelle LIKE ditSøgeord1 OR DinCelle LIKE ditSøgeord2\"
set oRs = oConn.Execute(strSQL)
Avatar billede pelbym Nybegynder
21. august 2001 - 12:53 #3
Hmmm lidt forklaring af problemet.....
Her anvendes min søgning

<tr>
<td align=\"center\">
<form action=\"soegkoral.asp\" method=\"post\">
<table border=\"0\" width=\"450\">

<tr>
<td><b>Indtast søgeord: </b></td>
<td><input type=\"text\" name=\"ord\" class=\"input\" value=\"<%=Request.form(\"ord\")%>\"> <input type=\"submit\" value=\"Søg\" class=\"button\"></td>
</tr>

<tr>
<td>
<form action=\"../database/vis_koral.asp\" method=\"post\">
<table border=\"0\">


Når vis_koral kaldes anvender jeg

set rs = conn.execute(\"select * from t_koral where id = \" & request.querystring(\"id\"))
If not rs.eof then

Hvor skal jeg ændre for at kunne medtage flere ord ?

Avatar billede casperhojstrup Nybegynder
21. august 2001 - 12:57 #4
Hvor har du de andre ord ?
Avatar billede pelbym Nybegynder
21. august 2001 - 13:01 #5
Ord er et inputfelt med vilkårlig indtastning fra bruger der søger i db
Avatar billede pelbym Nybegynder
21. august 2001 - 13:03 #6
Men den medtager ikke mere end et helt ord, dvs ingen delte ord, eller flere.

Det er mit problem! Kan du hjælpe ?
Avatar billede casperhojstrup Nybegynder
21. august 2001 - 13:04 #7
ahhhhhhhhhh.......nu er jeg med !

mon ikke man skal dele ordene op først og så søge med dem alle ?
Avatar billede zeptic Nybegynder
21. august 2001 - 13:18 #8
Du bliver nødt til at dele dem op.

Det fremgår ikke umiddelbart hvilken kolonne der skal søges i, så i nedenstående skal kolonnen ord erstattes med navnet på den rigtige kolonne.

ord=Trim(Request(\"ord\"))
splittetord=Replace(ord,\" \",\"\',\'\") \' mellemrum erstattes med \',\'
splittedord=\"\'\" & splittedord & \"\'\"
SQL=\"select * from t_koral where id = \" & request.querystring(\"id\")
SQL=SQL& \" and ord IN (\" & splittedord & \")

set rs = conn.execute(SQL)

//koden er ikke afprøvet
Avatar billede casperhojstrup Nybegynder
21. august 2001 - 13:20 #9
Jeg kan godt se hvad der skal til, men jeg kan ikke koden lige fra hoften.
Kan du ikke vente lidt og hvis ingen svare, sp skriv mig en besked, så skal jeg kigge på det ?
Avatar billede zeptic Nybegynder
21. august 2001 - 13:21 #10
hovsa, der mangler et \"

SQL=SQL& \" and ord IN (\" & splittedord & \")\"
Avatar billede pelbym Nybegynder
21. august 2001 - 13:29 #11
Okey...
Avatar billede pelbym Nybegynder
21. august 2001 - 13:32 #12
Det er sådan set i alle kolonnen der søges, hele t_koral
Avatar billede zeptic Nybegynder
21. august 2001 - 13:50 #13
Så har jeg fuldstændig misforstået dig. Jeg troede du havde en tekst med flere ord, hvor du ville have de observationer ud der matchede en bestemt kolonne.

Ellers bliver du nødt til eksplicit at søge i hver enkel kolonne:

SQL=\"select col1, col2, col3, id from t_koral where id = \" & request.querystring(\"id\")\"
SQL=SQL & \" and (col1=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or col2=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or col3=\'\" & Request(\"ord\") & \"\')\"
Avatar billede pelbym Nybegynder
21. august 2001 - 13:51 #14
t_koral er en tabel med ca 10 kolonner
Avatar billede pelbym Nybegynder
21. august 2001 - 13:52 #15
Ok jeg prøver det...
Avatar billede pelbym Nybegynder
21. august 2001 - 16:02 #16
Hmmm det virker ikke helt, jeg får en fejlmeddelse der sige:
Command text was not set for the command object.

Her er hele filen, hvad har jeg gjort galt ?


<table width=\"100%\" border=\"0\">
<tr>
<td><h1>Koraller</h1>

Dette er koralsiden hvor alle informationer omkring koraller findes.<br>
<br>
Indtast et søgeord og du vil straks få alle resultaterne nedenfor.<br>
<br>
</td>
</tr>

<tr>
<td background=\"images/straightline.gif\">&nbsp;</td>
</tr>

<tr>
<td align=\"center\">
<form action=\"soegkoral2.asp\" method=\"post\" id=form name=form>
<table border=\"0\" width=\"450\">

<tr>
<td><b>Indtast søgeord: </b></td>
<td><input type=\"text\" name=\"ord\" class=\"input\" value=\"<%=Request.form(\"ord\")%>\"> <input type=\"submit\" value=\"Søg\" class=\"button\" id=submit name=submit></td>
</tr>
<p>


</table>
</form>
</td>
</tr>
<%
If len(request.form(\"ord\")) < 3 then
%>
<tr>
<td><b>Din søgesætning skal indeholde mindst 3 tegn</b></td>
</tr>
<%
else
%>


<tr>
<td>



<%ord=Trim(Request(\"ord\"))%>

<%splittetord=Replace(ord,\" \",\"\',\'\") \'mellemrum erstattes med \',\' %>
<%splittedord=\"\'\" & splittedord & \"\'\" %>


SQL=\"select Familienavn_Engelsk, Familienavn_Dansk, Familiebeskrivelse, Handelsnavn, Latinsk_navn, Beskrivelse, Kendetegn, Opsummering from t_koral where id = \" & request.querystring(\"id\")\"
SQL=SQL & \" and (Familienavn_Engelsk=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Familienavn_Dansk=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Familiebeskrivelse=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Handelsnavn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Latinsk_navn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Beskrivelse=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Kendetegn=\'\" & Request(\"ord\") & \"\'\"
SQL=SQL & \" or Opsummering=\'\" & Request(\"ord\") & \"\')\"

<%
set rs = conn.execute(SQL)
If not Rs.EOF then
%>
<br>                        <table cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"#000000\" border=\"0\" width=\"100%\">
                            <tr>
                                <td width=\"100%\">
                                        <table cellspacing=\"0\" cellpadding=\"2\" border=\"0\" width=\"100%\">
                                            <tr>
                                                <td bgcolor=\"#99CCFF\" class=\"Blok_top\"> Koraller</td>
                                            </tr>
                                        </table>
                                </td>
                            </tr>
                        </table>
<br>
<%
do while not Rs.EOF
%>
<a href=\"../database/vis_koral.asp?id=<%=rs(\"id\")%>\"><%=rs(\"latinsk_navn\")%></a> - <%=rs(\"handelsnavn\")%><br>
<%
rs.movenext
loop
end if
end if

%>

</td>
</tr>
</table>

Avatar billede pelbym Nybegynder
24. august 2001 - 11:40 #17
Jeg har forsøgt i flere dage.... kan nogle hjælpe ??? Der er ingen fejlmeddelser, men hellerikke noget resultat. Her er filen.


<!--#include file=\"../res/top_layout.asp\"-->
<table width=\"100%\" border=\"0\">
<tr>
<td><h1>Koraller</h1>

Dette er koralsiden hvor alle informationer omkring koraller findes.<br>
<br>
Indtast et søgeord og du vil straks få alle resultaterne nedenfor.<br>(kun et ord, ingen mellemrum)<br>
<br>
</td>
</tr>

<tr>
<td background=\"images/straightline.gif\">&nbsp;</td>
</tr>

<tr>
<td align=\"center\">
<form action=\"soegkoral2.asp\" method=\"post\" id=form name=form>
<table border=\"0\" width=\"450\">

<tr>
<td><b>Indtast søgeord: </b></td>
<td><input type=\"text\" name=\"ord\" class=\"input\" value=\"<%=Request.form(\"ord\")%>\"> <input type=\"submit\" value=\"Søg\" class=\"button\" id=submit name=submit></td>
</tr>
<p>


</table>
</form>
</td>
</tr>
<%
If len(request.form(\"ord\")) < 3 then
%>
<tr>
<td><b>Din søgesætning skal indeholde mindst 3 tegn</b></td>
</tr>
<%
else
%>


<tr>
<td>


<%

ord=Trim(Request.form(\"ord\"))
splittetord=Replace(ord,\" \",\"\',\'\") \'mellemrum erstattes med \',\'
splittedord=\"\'\" & splittedord & \"\'\"


SQL=\"select * from t_koral where Familienavn_Engelsk like \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Familienavn_Dansk like \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Familiebeskrivelse like \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Handelsnavn like \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Latinsk_navn like \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Beskrivelse like \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Kendetegn like \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Opsummering like \'\" & Request.form(\"ord\") & \"\'\"


set rs = conn.execute(SQL)
If not Rs.EOF then
%>
<br>                        <table cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"#000000\" border=\"0\" width=\"100%\">
                            <tr>
                                <td width=\"100%\">
                                        <table cellspacing=\"0\" cellpadding=\"2\" border=\"0\" width=\"100%\">
                                            <tr>
                                                <td bgcolor=\"#99CCFF\" class=\"Blok_top\"> Koraller</td>
                                            </tr>
                                        </table>
                                </td>
                            </tr>
                        </table>
<br>
<%
do while not Rs.EOF
%>
<a href=\"../database/vis_koral.asp?id=<%=rs(\"id\")%>\"><%=rs(\"latinsk_navn\")%></a> - <%=rs(\"handelsnavn\")%><br>
<%
rs.movenext
loop
end if
end if

%>



</td>
</tr>
</table>

<!--#include file=\"../res/bottom_layout.asp\"-->






Mit sql resultat fra søgningen er, ved at søge på gule grønne:

select * from t_koral where Familienavn_Engelsk like \'gule grønne\' or Familienavn_Dansk like \'gule grønne\' or Familiebeskrivelse like \'gule grønne\' or Handelsnavn like \'gule grønne\' or Latinsk_navn like \'gule grønne\' or Beskrivelse like \'gule grønne\' or Kendetegn like \'gule grønne\' or Opsummering like \'gule grønne\'


Der er massere af records i db(mysql) der opfylder kriteriet, men ingen vises ?

Hjælp please......
Avatar billede pelbym Nybegynder
22. oktober 2001 - 14:47 #18
Hmmm efter mange måneder med intet svar fandt jeg selv svaret....

<%

ord=Trim(Request.form(\"ord\"))
OrdArray = Split(ord, \" \")

SQL=\"select * from t_koral where Familienavn_Engelsk = \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Familienavn_Dansk = \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Familiebeskrivelse LIKE \'%\" & Request.form(\"ord\") & \"%\'\"
SQL=SQL & \" or Handelsnavn = \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Latinsk_navn = \'\" & Request.form(\"ord\") & \"\'\"
SQL=SQL & \" or Beskrivelse LIKE \'%\" & Request.form(\"ord\") & \"%\'\"
SQL=SQL & \" or Kendetegn LIKE \'%\" & Request.form(\"ord\") & \"%\'\"
SQL=SQL & \" or Opsummering LIKE \'%\" & Request.form(\"ord\") & \"%\'\"
For i = 0 to ubound(OrdArray)
SQL=SQL & \" or Familienavn_Engelsk = \'\" & OrdArray(i) & \"\'\"
SQL=SQL & \" or Familienavn_Dansk = \'\" & OrdArray(i) & \"\'\"
SQL=SQL & \" or Familiebeskrivelse LIKE \'%\" & OrdArray(i) & \"%\'\"
SQL=SQL & \" or Handelsnavn = \'\" & OrdArray(i) & \"\'\"
SQL=SQL & \" or Latinsk_navn = \'\" & OrdArray(i) & \"\'\"
SQL=SQL & \" or Beskrivelse LIKE \'%\" & OrdArray(i) & \"%\'\"
SQL=SQL & \" or Kendetegn LIKE \'%\" & OrdArray(i) & \"%\'\"
SQL=SQL & \" or Opsummering LIKE \'%\" & OrdArray(i) & \"%\'\"
Next

set rs = conn.execute(SQL)
If not Rs.EOF then
%>


Her er kode, hvis det hjælper andre
Avatar billede pelbym Nybegynder
22. oktober 2001 - 14:49 #19
Giver dermed mig selv points, desværre
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