Avatar billede mrjowns Novice
12. september 2001 - 15:18 Der er 22 kommentarer og
1 løsning

Søgning virker ikke! Hvorfor?

Her er koden:

<% Response.Buffer = True %>

<%    dim mode

mode = request(\"mode\")

if mode = \"\" then
    response.redirect(\"search.asp?mode=start\")
end if

%>

<html>

<head>
<title>Søgeresultat</title>
</head>

<body>

<%
if mode = \"start\" then
    Soeg
end if

if mode = \"search\" then
    Resultat
end if
%>

<%    sub Soeg %>

<form name=\"soeg\" action=\"search.asp\" onsubmit=\"returnValidator(this)\">
<div align=\"center\">
  <center>
  <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"450\">
    <tr>
      <td width=\"100\"><input type=\"text\" name=\"Keyword\" size=\"20\"></td>
      <td><input type=\"submit\" name=\"mode\" value=\"Search\"></td>
    </tr>
  </table>
  </center>
</div>

<% end sub %>


<%    sub Resultat
\' Henter værdierne
strKeyword = Trim(Request.Form(\"Keyword\"))

If Len(strKeyword) = 0 Then
    \' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect(\"search.asp\")
Else
    \' Hvis der er skrevet i feltet
    strKeyword = Replace(strKeyword,\"\'\",\"\'\'\")
End If

\' Opbygger en dynamisk SQL streng
strSQL = \"SELECT OPGNAVN, AFDNAVN, PROJEKTNAVN, OPGID, OPGLEDER, OPGOPRETTET FROM opgave1 WHERE\"
strSQL = strSQL & \" (OPGNAVN LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (PROJEKTNAVN LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (OPGID LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (OPGLEDER LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (OPGOPRETTET LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" ORDER BY OPGID\"

\' Skaber forbindelse til DBen
%>
<!-- #include file=\"database.asp\" -->
<%

\' Skaber et recordset udfra SQL strengen
Set rs = Conn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
    \' Hvis der er fundet poster på søgningen
    Response.Write \"<p>Søgeresultat</p>\"
    Response.Write \"<table border=1>\"
    Response.Write \"<tr><th>OpgID</th><th>OpgNavn</th><th>Afdnavn</th><th>Projekt</th><th>Opgleder</th><th>Opgoprettet</th></tr>\"
    Do While Not rs.EOF
        Response.Write \"<tr><td>\" & rs(\"OPGID\") & \"</td>\"
        Response.Write \"<td>\" & rs(\"OPGNAVN\") & \"</td>\"
        Response.Write \"<td>\" & rs(\"AFDNAVN\") & \"</td>\"
        Response.Write \"<td>\" & rs(\"PROJEKTNAVN\") & \"</td>\"
        Response.Write \"<td>\" & rs(\"OPGLEDER\") & \"</td>\"
        Response.Write \"<td>\" & rs(\"OPGOPRETTET\") & \"</td></tr>\"
        rs.MoveNext
    Loop
    Response.Write \"</table>\"
Else
    \' Hvis der ikke er fundet poster på søgningen
    Response.Write \"<p>Der er ikke fundet noget på denne søgning</p>\"
End If

\' Rydder op efter os
Conn.Close
Set Conn = Nothing
%>

<% end sub %>
</body>
</html>
_____________________________________________

Efter man trykker søg får jeg bare en helt blank side - ingen feflmeddelelser.

Adresselinien er også ok - der står f.eks. search.asp?keyword=mig&mode=search

...og det er jo godt nok!!! Hvad er der galt?
Avatar billede sherlock Nybegynder
12. september 2001 - 15:30 #1
\"Search\" = \"search\" ??
Avatar billede mrjowns Novice
12. september 2001 - 15:34 #2
Ok, det fatter jeg ikke noget af...! :-)))
Avatar billede mrjowns Novice
12. september 2001 - 15:36 #3
Jeg har rettet form.mode.value til search i stedet for Search men det gør ikke nogen forskel!

--jowns--
Avatar billede eagleeye Praktikant
12. september 2001 - 15:43 #4
det sherlock mer er:

Din submit knap:
<input type=\"submit\" name=\"mode\" value=\"Search\">

Din kode som tester på mode:
if mode = \"search\" then
  Result
end if

Det bliver til dette:
if \"Search\" = \"search\" then
  Result
end if

Så prøv at rette submit kanppen til:
<input type=\"submit\" name=\"mode\" value=\"search\">
Avatar billede sherlock Nybegynder
12. september 2001 - 15:46 #5
99 point til eagleeye :-)
Avatar billede mrjowns Novice
12. september 2001 - 15:53 #6
Jeg har ændret følgende:

Min submit knap:
<input type=\"submit\" name=\"mode\" value=\"Search\">

Min kode som tester på mode:
if mode = \"Search\" then
  Result
end if

Resultatet er, at jeg i adresselinien får \"search.asp?keyword=mig&mode=search

Dvs. at det ser ud som om at der ikke bliver indsat noget i mode da \"search\" er med lille \"s\" (det eneste sted det står er i toppen, hvor der spørges om mode = \"\" else ...start...)

Hvorfor?
Avatar billede sherlock Nybegynder
12. september 2001 - 16:00 #7
>>>>> onsubmit=\"returnValidator(this)\"

Hvor er din returnValidator funktion ????
Avatar billede mrjowns Novice
12. september 2001 - 16:04 #8
Hmmmm, PAS FISK osv...! :-)))

Øjeblik....
Avatar billede mrjowns Novice
12. september 2001 - 16:06 #9
Du er smart Sherlock >> Det gør jo ingen forskel om den er der eller ej!!! :-)

Nu har jeg slettet den, men det giver stadig samme resultat!!!

--jowns--
Avatar billede sherlock Nybegynder
12. september 2001 - 16:08 #10
Jo det gør en forskel. Og hvis du kører med scriptdebugging kan du se det. Din form fejler nå du har en rutine på der ikke findes.
Avatar billede eagleeye Praktikant
12. september 2001 - 16:09 #11
Prøv efter <body>  bare for at teste:

response.write mode & \"<br>\"
så kan vi se om det er der fejlen er..
Avatar billede sherlock Nybegynder
12. september 2001 - 16:10 #12
og Keyword
Avatar billede eagleeye Praktikant
12. september 2001 - 16:11 #13
I første omgang ville jeg tro du slet ikke kommer ind i Result funktionen.
Avatar billede mrjowns Novice
12. september 2001 - 16:12 #14
OK, men nu har jeg i hvert fald slettet den - og visuelt hjalp det mig ikke over hovedet! Stadigvæk en blank side med \"search.asp?keyword=mig&mode=search\" i adresselinien!

Nu er jeg jo rimelig newb...!

...men kunne det være:

If Len(strKeyword) = 0 Then
    \' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect(\"search.asp\")
Else
    \' Hvis der er skrevet i feltet
    strKeyword = Replace(strKeyword,\"\'\",\"\'\'\")
End If

________________________________

\"Len\" er jo ikke defineret nogle steder? Kan det være det?

--Jowns--
Avatar billede sherlock Nybegynder
12. september 2001 - 16:13 #15
<!-- #include file=\"database.asp\" -->

Hvordan ser den ud. Det er \"sjovt\" at den er inkluderet midt i en rutine.
Avatar billede mrjowns Novice
12. september 2001 - 16:15 #16
eagleeye >> så kommer der til at stå \"Search\" på min skærm....! Det bliver indsat i mode!
Avatar billede eagleeye Praktikant
12. september 2001 - 16:15 #17
Len er en kendt function som finder længden af en streng.
Avatar billede mrjowns Novice
12. september 2001 - 16:17 #18
Det er en ganske alm. db-connection - ikke andet! Den er testet positiv :-)))))

--Jowns--
Avatar billede eagleeye Praktikant
12. september 2001 - 16:19 #19
Bruger du dette kode:
if mode = \"Search\" then
  Result
end if

ELLER Dette
if mode = \"Search\" then
  Resultat
end if

din kode som du har fra starten kalder Resultat den kode som du har lagt ind senere kalder Result.
Avatar billede mrjowns Novice
12. september 2001 - 16:22 #20
Der er da ikke nogen steder jeg har brugt Result???

--jowns--
Avatar billede mrjowns Novice
12. september 2001 - 16:23 #21
Jeg er nød til at smutte!!! Vender tiltage senere på dagen! Snakkes...

--jowns--
Avatar billede zeptic Nybegynder
12. september 2001 - 18:59 #22
Du laver en strKeyword = Trim(Request.Form(\"Keyword\")), og dvs. at du forudsætter at din form POST\'er, men da du jo kan se URL\'en, så GET\'er den, derfor får du ikke noget data i strKeyword.

Du kan rette det ved at skrive strKeyword = Trim(Request(\"Keyword\")), for så er du sikker på, at du får fat i indholdet af det formen sender, uanset om du GET\'er eller POST\'er din form.

Det er altid en god ide excplicit at skrive hvilken metode du vil bruge i din form (jeg tror endda også at det er et krav fra w3c).
Avatar billede mrjowns Novice
27. september 2001 - 22:23 #23
Sherlock overtog opgaven *G* ...men du er er jo også en haj! Du får pointene!! ;-D

--jowns--

PS Undskyld ventetiden!
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