Avatar billede kkd Nybegynder
28. oktober 2003 - 09:04 Der er 10 kommentarer og
2 løsninger

Søgefunktions problemer

Hej...

Jeg har hentet denne søgefunktion http://www.asp.dk/sources.asp?mode=view_source&tech_id=1&id=1163 men ikke tale om jeg kan få den til at virke - jeg er ikke særlig god til .asp!

Jeg har følgende formular, som brugeren indtaster i
<form name="form1" method="post" action="searc.asp">
  <input name="word" type="text" value="">
  <p>
    <label>
    <select name="katagori">
      <option value="Kat1, Kat2, Kat3, Kat4, Kat5" selected>Alle</option>
      <option value="Kat1">Teknik</option>
      <option value="Kat2">Fisk</option>
      <option value="Kat3">Sygdomme</option>
      <option value="Kat4">Vandkemi</option>
      <option value="Kat5">Andet</option>
    </select>
    </label>
  </p>
  <p>
    <label> Titel
    <input type="radio" name="radio" value="Titel">
    <br>
    Indhold
    <input type="radio" name="radio" value="Indhold">
    <br>
    Begge
    <input type="radio" name="radio" value="Begge" checked>
    </label>
  </p>
</form>

I databasen (Leksikon.mdb) er der fem tabeller (Kat1 til Kat5), og i hver tabel er der posterne ID (autonummer) Titel og Indhold
Jeg vil gerne have at ved at vælge i label "katagori" vælger man hvilken tabel der skal søges i, og i label "radio" vælger man om der skal søges på Titel, Indhold eller begge.

Jeg er på helt bar bund... HJÆÆÆLP!

/kkd :oD
Avatar billede medions Nybegynder
28. oktober 2003 - 09:12 #1
Sådan...

<%
  strSQL = "SELECT * FROM " & Request.Form("katagori") & " WHERE"
  strSQL = strSQL & " (Navn LIKE '" & strKeyword & "')"
  strSQL = strSQL & " OR (Adresse LIKE '" & strKeyword & "')"
  strSQL = strSQL & " OR (Bynavn LIKE '" & strKeyword & "')"
  strSQL = strSQL & " OR (Beskrivelse LIKE '" & strKeyword & "')"
%>

?

//>Rune
Avatar billede kkd Nybegynder
28. oktober 2003 - 09:20 #2
Den søgefunktion jeg henviser til, er i stand til at benytte bolske operatorer på tværs af tabeller, det kan jeg ikke se at det, du har postet kan. (Jeg skal f.eks. kunne indtaste : grøn NOT hvid "en portion" hvorved den laver det om til grøn NOT hvid AND "en portion"
Avatar billede mm12010 Nybegynder
28. oktober 2003 - 09:23 #3
<%
  strKeyword=Request.Form("navn")
  strSQL = "SELECT * FROM " & Request.Form("katagori") & " WHERE"
  If Request.Form("radio")="Begge" Then
    strSQL = strSQL & " (Titel LIKE '" & strKeyword & "')"
    strSQL = strSQL & " OR (Indhold LIKE '" & strKeyword & "')"
  Else
    strSQL = strSQL & " ("& Request.Form("radio") &" LIKE '" & strKeyword & "')"
  End if
%>
Avatar billede kkd Nybegynder
28. oktober 2003 - 09:31 #4
Virker stadig ikke.... den funktion jeg taler om (og det er den jeg er interesseret i, eller en der kan det samme) udskifter f.eks. mellemrum med AND operatorer, så man kan benytte bolske operatorer i sin søgning.
I må gerne lige prøve at se på scriptet, jeg har inket til!
Avatar billede eagleeye Praktikant
28. oktober 2003 - 21:54 #5
Det leteste er vel at bruge det samme som scriptet nemlig checkbox'e så man vælger de kolonner man vil søge i, og vil man søge i begge vælges de begge to?
Avatar billede eagleeye Praktikant
28. oktober 2003 - 22:09 #6
Du har en side der hedder valtest.asp den tager du koden fra eller her er den:

<%
Search = Request("Search")
TableList = Replace(Request("Poster"), " ", "")
%>

Du søgte på:
<BR>
<B><%= Search %></B>

<P>

I tabellerne:<BR>
<B><%= TableList %></B>

<P>

Det evalueres til:<BR>
<B><%= SQLValSearchString(Search) %></B>

<P>

Og omkrives i SQL til:<BR>
<B><%= SQLClause(Search, TableList) %></B>



---------------------

Den laver du om til dette så den passer til din form sådan her, det er lavet med en SQL sætning til sidst du lige skal rette til med tabelnavnet og kolonnenavnet for katefgori hvis de ikke passer ;)

<%
kat = Request.Form("katagori")
kat = replace(kat," ","")
kat = "'" & replace(kat,",","','") & "'"

Search = Request("word")

TableList = LCase(Request.Form("radio"))
if TableList = "begge" then TableList = "titel,indhold"


'Din SQL sætning
SQL = "SELECT * FROM tabelnavn WHERE " & SQLClause(Search, TableList) & " AND kategori IN (" & kat & ")"

Response.Write SQL

%>
Avatar billede kkd Nybegynder
29. oktober 2003 - 16:02 #7
Det virker stadig ikke - jeg kan slet ikke åbne valtest-siden!
Det ser ud til at du har misforstået lidt: I databasen er der 5 tabeller, nemlig Kat1, Kat2... Kat5. I hver af de 5 tabeller er der tre kolonner, nemlig Titel, Indhold (og ID) - det ser ud til at du får byttet om på dem i koden!
Avatar billede kkd Nybegynder
30. oktober 2003 - 09:43 #8
Nu er jeg kommet frem til en SQL i den her retning:
SELECT * FROM Tabel1, Tabel2, Tabel3, Tabel4, Tabel5 WHERE (((Titel LIKE '%test%') OR (Indhold LIKE '%test%')))

Denne sætning skulle gerne søge efter ordet "test" i kolonnerne "Titel" eller "Indhold" i alle fem tabeller. Jeg er klar over den er forkert, men hvordan skal den se ud, for at være rigtig.
Avatar billede eagleeye Praktikant
30. oktober 2003 - 20:28 #9
SELECT * FROM Tabel1, Tabel2, Tabel3, Tabel4, Tabel5 WHERE (((Tabel1.Titel LIKE '%test%') OR (Tabel1.Indhold LIKE '%test%'))) OR (((Tabel2.Titel LIKE '%test%') OR (Tabel2.Indhold LIKE '%test%'))) OR (((Tabel3.Titel LIKE '%test%') OR (Tabel3.Indhold LIKE '%test%'))) OR (((Tabel4.Titel LIKE '%test%') OR (Tabel4.Indhold LIKE '%test%'))) OR (((Tabel5.Titel LIKE '%test%') OR (Tabel5.Indhold LIKE '%test%')))



Men det giver et forkort output med FROM xx,yy,cc da den forsøger at JOIN'e tabelerne, du skal nok havde gang i UNION som kan samle flere tabel til en stort tabel.
Avatar billede kkd Nybegynder
03. november 2003 - 16:02 #10
Jeg var ude på et sidespor med kommentaren 30/10-2003 09:43:57.
Jeg har mine fem tabeller med to koloner i hver, som der skal kunne søges på, er scriptet ikka lavet til det, eller skal jeg have fat i noget andet?
Avatar billede eagleeye Praktikant
03. november 2003 - 18:48 #11
Jeg har mine fem tabeller med to koloner i hver, som der skal kunne søges på, er scriptet ikka lavet til det, eller skal jeg have fat i noget andet?

Nej det er det ikke lavet til det er lavet til at søge i en tabel med X antal kolonner. Det som i søge scriptet hedder "I tabellerne:" skulle efter det jeg kan se og prøvet mig til hedde "I kolonnerne:".

Det eneste det script giver er WHERE delen til en SQL sætning eks:
(((Post1 LIKE '*adfasdf*') OR (Post2 LIKE '*adfasdf*') OR (Post3 LIKE '*adfasdf*') OR (Post4 LIKE '*adfasdf*') OR (Post5 LIKE '*adfasdf*')))

Så skal du selv sætte "SELECT * FROM tabelnavn WHERE" foran.
Avatar billede kkd Nybegynder
03. november 2003 - 20:57 #12
OK tak, så har jeg misforstået/eller scriptet er dårligt forklaret.
Jeg håber det er i orden, du kun for nogle point - min søgefunktion er jo ikke blevet lavet... :oD
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