Avatar billede rudymadsen Nybegynder
25. april 2008 - 09:27 Der er 8 kommentarer

En simpel søgeside med 2 parametre

Jeg prøver på at lære, hvordan man laver en søgeside. Mit mål er at have to combo-bokse, hvor jeg vælger mine søgekriterier, og udfører søgningen. Men først vi jeg oprette en søgeside med to kriteriefelter.

Søgningen bliver ikke udført, da browseren melder en HTTP 500 fejl.

Hvad kan der da være galt?

Kildekode:

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/pegasusDB.asp" -->
<%
Dim pegatest__navnparam
pegatest__navnparam = "Henrik Siber"
If (Request.Form(“formnavn”)  <> "") Then
  pegatest__navnparam = Request.Form(“formnavn”)
End If
%>
<%
Dim pegatest__gadeparam
pegatest__gadeparam = "Sjællandsgade"
If (Request.Form(“formgade”) <> "") Then
  pegatest__gadeparam = Request.Form(“formgade”)
End If
%>
<%
Dim pegatest
Dim pegatest_cmd
Dim pegatest_numRows

Set pegatest_cmd = Server.CreateObject ("ADODB.Command")
pegatest_cmd.ActiveConnection = MM_pegasusDB_STRING
pegatest_cmd.CommandText = "SELECT * FROM qBeboere WHERE formnavn = ? and formgade = ?"
pegatest_cmd.Prepared = true
pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param1", 200, 1, 255, pegatest__navnparam) ' adVarChar
pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param2", 200, 1, 255, pegatest__gadeparam) ' adVarChar

Set pegatest = pegatest_cmd.Execute
pegatest_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = 10
Repeat1__index = 0
pegatest_numRows = pegatest_numRows + Repeat1__numRows
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="get" action="pegatest.asp">
  <table width="300" border="0" cellspacing="0" cellpadding="2">
    <tr>
      <td>Navn:</td>
      <td><label>
        <input type="text" name="formnavn" id="formnavn" />
      </label></td>
    </tr>
    <tr>
      <td>Gade:</td>
      <td><input type="text" name="formgade" id="formgade" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><label>
        <input type="submit" name="button" id="button" value="Søg" />
      </label></td>
    </tr>
  </table>
</form>
<p>
<table width="600" border="0" cellspacing="0" cellpadding="2">
  <tr>
    <td>Navn</td>
    <td>Gade</td>
    <td>Sal</td>
    <td><p>Side</p>
    </td>
  </tr>
  <tr>
    <%
While ((Repeat1__numRows <> 0) AND (NOT pegatest.EOF))
%>
      <td><%=(pegatest.Fields.Item("Navn").Value)%></td>
      <td><%=(pegatest.Fields.Item("Gade").Value)%></td>
      <td><%=(pegatest.Fields.Item("Sal").Value)%></td>
      <td><%=(pegatest.Fields.Item("Side").Value)%></td>
      <%
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  pegatest.MoveNext()
Wend
%>
</tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
<p>
</body>
</html>
<%
pegatest.Close()
Set pegatest = Nothing
%>
Avatar billede fennec Nybegynder
25. april 2008 - 09:30 #1
I din browser (IE)
Funktioner >> internetinstillinger >> advanceret >> Fjern afkrydsning i "Vis meddelse om uskadelige HTTP fejl"

Så kan du se den rigtige ASP fejl. Samt linjenr den sker i.
Avatar billede rudymadsen Nybegynder
25. april 2008 - 10:28 #2
Tak for det - så langt. Nu kan jeg da se listen.

Men! Søgningen virker ikke. Når jeg indtaster søgekriterier, er der ligesom at søgningen går igang, men den foretager ikke søgningen.

Her er den nye kildekode:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="dwzPaging/dwzPaging.asp" -->
<!--#include file="Connections/pegasusDB.asp" -->
<%
Dim pegatest__navnparam
pegatest__navnparam = "%"
If (Request.Form("formnavn")  <> "") Then
  pegatest__navnparam = Request.Form("formnavn") 
End If
%>
<%
Dim pegatest__gadeparam
pegatest__gadeparam = "%"
If (Request.Form("formgade")  <> "") Then
  pegatest__gadeparam = Request.Form("formgade")
End If
%>
<%
Dim pegatest
Dim pegatest_cmd
Dim pegatest_numRows

Set pegatest_cmd = Server.CreateObject ("ADODB.Command")
pegatest_cmd.ActiveConnection = MM_pegasusDB_STRING
pegatest_cmd.CommandText = "SELECT * FROM qBeboere WHERE navn like ? and gade like ? ORDER BY Navn"
pegatest_cmd.Prepared = true
pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param1", 200, 1, 255, pegatest__navnparam) ' adVarChar
pegatest_cmd.Parameters.Append pegatest_cmd.CreateParameter("param2", 200, 1, 255, pegatest__gadeparam) ' adVarChar

Set pegatest = pegatest_cmd.Execute
pegatest_numRows = 0
%>
<%
'*********************************
'*  RECORDSET PAGING - NUMERIC
'*  http://www.dwzone-it.com
'*  Version 1.1.0
'*********************************
set dwzPaging_0 = new dwzRecPaging
dwzPaging_0.init()
dwzPaging_0.setTypeNumeric()
dwzPaging_0.setRecordset pegatest
dwzPaging_0.setRecPaging 10
dwzPaging_0.setPages 5
dwzPaging_0.setStyle "None", "None", "None"
dwzPaging_0.setText ">>", "<<", "Første", "Sidste"
dwzPaging_0.setSeparator " | "
dwzPaging_0.setLinkMask "[ {1} ]"
dwzPaging_0.Execute()
set pegatest = dwzPaging_0.getRecordset()
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = 10
Repeat1__index = 0
pegatest_numRows = pegatest_numRows + Repeat1__numRows
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="get" action="pegatest.asp">
  <table width="300" border="0" cellspacing="0" cellpadding="2">
    <tr>
      <td>Navn:</td>
      <td><label>
        <input type="text" name="formnavn" id="formnavn" />
      </label></td>
    </tr>
    <tr>
      <td>Gade:</td>
      <td><input type="text" name="formgade" id="formgade" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><label>
        <input type="submit" name="button" id="button" value="Søg" />
      </label></td>
    </tr>
  </table>
</form>
<p>
<table width="600" border="0" cellspacing="0" cellpadding="2">
  <tr>
    <td>Navn</td>
    <td>Gade</td>
    <td>Sal</td>
    <td><p>Side</p>    </td>
  </tr>

    <% 
While ((Repeat1__numRows <> 0) AND (NOT pegatest.EOF))
%>
      <tr>
      <td><%=(pegatest.Fields.Item("Navn").Value)%></td>
      <td><%=(pegatest.Fields.Item("Gade").Value)%></td>
      <td><%=(pegatest.Fields.Item("Sal").Value)%></td>
      <td><%=(pegatest.Fields.Item("Side").Value)%></td>
      </tr>
      <%
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  pegatest.MoveNext()
Wend
%>

</table>
<p>
  <%
'*********************************
'*  RECORDSET PAGING - NUMERIC
'*********************************
dwzPaging_0.GetPaging()
'*********************************
'*  RECORDSET PAGING - NUMERIC
'*********************************
%>
</body>
</html>
<%
pegatest.Close()
Set pegatest = Nothing
%>
<%
'*********************************
'*  RECORDSET PAGING - NUMERIC
'*********************************
set dwzPaging_0 = nothing
'*********************************
'*  RECORDSET PAGING - NUMERIC
'*********************************
%>
Avatar billede fennec Nybegynder
25. april 2008 - 10:55 #3
Har du et link til siden så vi kan se det i aktion?? Tror fejlen sker i din dwzPaging kode.

Prøv evt slette "dwzPaging_0.GetPaging()" koden.
Avatar billede rudymadsen Nybegynder
25. april 2008 - 11:32 #4
Det var ikke paging koden. Jeg fjernede den, og resultatet er det sammen:

http://asp.ab-pegasus.dk/pegatest.asp

/Rudy
Avatar billede fennec Nybegynder
25. april 2008 - 11:38 #5
Prøv lige at lave en response.write på dine to parametre værdier lige inden du tilføjer dem tli SQL'en:

response.write "navn: "& pegatest__navnparam &"<br>" '<-- indsæt disse 2 linjer her i koden
response.write "gade: "& pegatest__gadeparam &"<br>" '<-- indsæt disse 2 linjer her i koden
Set pegatest_cmd = Server.CreateObject ("ADODB.Command")
pegatest_cmd.ActiveConnection = MM_pegasusDB_STRING
...
Avatar billede rudymadsen Nybegynder
25. april 2008 - 11:43 #6
Ok.

Resultatet:

navn: %
gade: %
Avatar billede rudymadsen Nybegynder
25. april 2008 - 11:44 #7
Resultatet giver det samme, sevom jeg tilføjer parametre i søgefelterne
Avatar billede solle Nybegynder
30. april 2008 - 21:47 #8
Du bruger følgende 2 ting:
1) <form id="form1" name="form1" method="get" action="pegatest.asp">
2) If (Request.Form("formgade")  <> "") Then

når formen har "method=get" så skal du hente variablerne vha.
"Request.QueryString", og ikke "request.form".

så enten ændrer du <form> til "method=post" ellers, "Request.Form" til "Request.QueryString"
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