Avatar billede idiotbarn Nybegynder
04. november 2002 - 23:36 Der er 19 kommentarer og
1 løsning

page en søgning

Jeg har læst et lignende spørgsmål her på eksperten, men jeg kan nu ikke få det til at virke. Jeg har en side kaldet search2.asp. Denne skal udskrive mine søgeresultater, og det virker også fint på første side i pagningen, men derefter virker det ikke mere, hvad er der i vejen med flg script?:



<html><head>
<title></title>
</head>
<form name="Bru" method="post" action="search2.asp?Mode=sog&strKeyword=" & strKeyword & ">
<input type="submit" name="asd" value="sd"><br>

<input type="text" name="T1" size="20" maxlength="20">
<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If

Set rs = Server.CreateObject("ADODB.RecordSet")

strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("XXXXX.mdb")

strKeyword = Trim(Request.Form("T1"))
    if strKeyword = "" then
    strKeyword = Request("Keyword")
    End if

strSQL = "SELECT Brugernavn, Kodeord, Email, Sidste_login, Aktiveret FROM Users WHERE"
strSQL = strSQL & " (Brugernavn LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Kodeord LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Email LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Sidste_login LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Aktiveret LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Id LIKE '%" & strKeyword & "%')"

rs.Open strSQL, strDSN, 1


    rs.PageSize = 2
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount
   
If Not (rs.BOF Or rs.EOF) Then
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


    Do While Not rs.EOF And intRecCount > 0
    Response.Write rs("Brugernavn") & "<br>" & rs("Kodeord") & "<br>" & rs("Email") & "<br>" & rs("sidste_login") & "<br>" & rs("Aktiveret") & "<p>"
   
       
    intRecCount = intRecCount - 1
    rs.MoveNext
    Loop
   


rs.Close
Set rs = Nothing

Response.Write "Side "
For intNum = 1 To intPageCount
Response.Write "<a href=search2.asp?strKeyword=" & strKeyword & "page=" & intNum & ">" & intNum & "</a> "
Next

Response.Write "<br>"
If Clng(intPage) > 1 Then
    Response.Write "<a href=search2.asp?strKeyword=" & strKeyword & "page=" & intPage - 1 & ">&lt;&lt;</a>"

Else
    Response.Write "&lt;&lt;"
End If

Response.Write "&nbsp;"

If Clng(intPage) < Clng(intPageCount) Then

    Response.Write "<a href=search2.asp?strKeyword=" & strKeyword & "page=" & intPage + 1 & ">&gt;&gt;</a>"
Else
    Response.Write "&gt;&gt;"
End If
'*****************************************************************




%>


</form>
</html>

<html><head>
<title></title>
</head>
<form name="Bru" method="post" action="search2.asp?Mode=sog&strKeyword=" & strKeyword & ">
<input type="submit" name="asd" value="sd"><br>

<input type="text" name="T1" size="20" maxlength="20">
<%
intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If

Set rs = Server.CreateObject("ADODB.RecordSet")

strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../Wack/Community.mdb")
Mode=Request.Querystring("Mode")

strKeyword = Trim(Request.Form("T1"))
    if strKeyword = "" then
    strKeyword = Request("Keyword")
    End if
%>

<%
strSQL = "SELECT Brugernavn, Kodeord, Email, Sidste_login, Aktiveret FROM Users WHERE"
strSQL = strSQL & " (Brugernavn LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Kodeord LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Email LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Sidste_login LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Aktiveret LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Id LIKE '%" & strKeyword & "%')"

rs.Open strSQL, strDSN, 1


    rs.PageSize = 2
    rs.AbsolutePage = intPage
    intRecCount = rs.PageSize
    intPageCount = rs.PageCount
   
If Not (rs.BOF Or rs.EOF) Then
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


    Do While Not rs.EOF And intRecCount > 0
    Response.Write rs("Brugernavn") & "<br>" & rs("Kodeord") & "<br>" & rs("Email") & "<br>" & rs("sidste_login") & "<br>" & rs("Aktiveret") & "<p>"
   
       
    intRecCount = intRecCount - 1
    rs.MoveNext
    Loop
   


rs.Close
Set rs = Nothing

Response.Write "Side "
For intNum = 1 To intPageCount
Response.Write "<a href=search2.asp?strKeyword=" & strKeyword & "page=" & intNum & ">" & intNum & "</a> "
Next

Response.Write "<br>"
If Clng(intPage) > 1 Then
    Response.Write "<a href=search2.asp?strKeyword=" & strKeyword & "page=" & intPage - 1 & ">&lt;&lt;</a>"

Else
    Response.Write "&lt;&lt;"
End If

Response.Write "&nbsp;"

If Clng(intPage) < Clng(intPageCount) Then

    Response.Write "<a href=search2.asp?strKeyword=" & strKeyword & "page=" & intPage + 1 & ">&gt;&gt;</a>"
Else
    Response.Write "&gt;&gt;"
End If
'*****************************************************************




%>


</form>
</html>
Avatar billede idiotbarn Nybegynder
04. november 2002 - 23:36 #1
ok kun en gang :)
Avatar billede eagleeye Praktikant
04. november 2002 - 23:46 #2
I dine link kalder du querstringen som indeholder søge ordne for strkeyword

Response.Write "<a href=search2.asp?strKeyword=" & strKeyword & "page=" & intPage - 1 & ">&lt;&lt;</a>"


Der hvor du rigtigt nok hendter fra en querystring hvis der ikke kommer noget fra en form kalder du den Keyword:

strKeyword = Request("Keyword")

Det kan du rette til:

strKeyword = Request("strkeyword")
Avatar billede medions Nybegynder
04. november 2002 - 23:47 #3
Response.Write "Side "
For intNum = 1 To intPageCount
Response.Write "<a href=search2.asp?mode=sog&strKeyword=" & strKeyword & "page=" & intNum & ">" & intNum & "</a> "
Next

Response.Write "<br>"
If Clng(intPage) > 1 Then
    Response.Write "<a href=search2.asp?mod=sog&strKeyword=" & strKeyword & "page=" & intPage - 1 & ">&lt;&lt;</a>"

Else
    Response.Write "&lt;&lt;"
End If

Response.Write "&nbsp;"

If Clng(intPage) < Clng(intPageCount) Then

    Response.Write "<a href=search2.asp?mode=sog&strKeyword=" & strKeyword & "page=" & intPage + 1 & ">&gt;&gt;</a>"
Else
    Response.Write "&gt;&gt;"
End If

Du skal sikre dig du har alle dine parameter med over til næste side...

//>Rune
Avatar billede eagleeye Praktikant
04. november 2002 - 23:47 #4
Der mangler faktsik også et & tegne i dine link der skal & tegne mellem 2 querystrings.:


Response.Write "<a href=search2.asp?strKeyword=" & strKeyword & "&page=" & intPage - 1 & ">&lt;&lt;</a>"
Avatar billede idiotbarn Nybegynder
05. november 2002 - 00:06 #5
Tak til jer begge, men det var eagleeye der hjalp hurtigst
Avatar billede idiotbarn Nybegynder
05. november 2002 - 20:02 #6
Lige et ekstra spm:

strSQL = "SELECT Id, Brugernavn, Kodeord, Email, Sidste_login, Aktiveret FROM Users WHERE"
strSQL = strSQL & " (Brugernavn LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Kodeord LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Email LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Sidste_login LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Aktiveret LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Id LIKE '%" & strKeyword & "%') order by " & Order

rs.Open strSQL, DSN, 1
*********************************
Den siger:
*********************************
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC-driver understøtter ikke de ønskede egenskaber.

Kan man ikke bruge order by når jeg gør det på den måde?
/
Avatar billede eagleeye Praktikant
05. november 2002 - 20:16 #7
Jo det skulle du gerne.. Jeg tror nærmer fejlen kommer fordi den ikke kan finde DSN hedder din connection streng ikke strDSN ?:
rs.Open strSQL, DSN, 1

rs.Open strSQL, strDSN, 1
Avatar billede idiotbarn Nybegynder
05. november 2002 - 20:51 #8
nej:
Set rs = Server.CreateObject("ADODB.RecordSet")

Set Conn = Server.CreateObject("ADODB.Connection")
        DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
        DSN = DSN & "DBQ=" & Server.MapPath ("../Wack/Community.mdb")
Avatar billede eagleeye Praktikant
05. november 2002 - 20:54 #9
Hvis du ikke har en så prøv at tilføje Conn.Open DSN

og prøv at rette rs.Open til:

rs.Open strSQL, Conn, 1
Avatar billede eagleeye Praktikant
05. november 2002 - 20:55 #10
Eller så prøv at udskrive SQL sætningen før rs.Open linien:

Response.write strSQL
Response.End
rs.Open ......

og tjek at der er angivet et kolonne navn efter ORDER BY xxx
Avatar billede idiotbarn Nybegynder
05. november 2002 - 21:12 #11
ok, Der var en fejl ved at jeg ikke fik nogen data i Order variablen. Det er rettet, men det giver den samme fejl. Med:

Conn.Open DSN
rs.Open strSQL, Conn, 1

Giver det fejlen:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC-driver understøtter ikke de ønskede egenskaber.
/suspekt/admin/search.asp, line 66
Hvor linie 66 er:
rs.Open strSQL, Conn, 1
Avatar billede eagleeye Praktikant
05. november 2002 - 21:22 #12
Det forstår jeg ikke.. Prøv lige med denne database provider/driver:

DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath ("../Wack/Community.mdb")

Conn.Open DSN
rs.Open strSQL, Conn, 1
Avatar billede idiotbarn Nybegynder
05. november 2002 - 21:26 #13
hvad skal jeg ha med og ikke ha med så? Altså af det vi lavede før
Avatar billede eagleeye Praktikant
05. november 2002 - 21:27 #14
Sådan her:

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath ("../Wack/Community.mdb")
Conn.Open DSN

...
...
rs.Open strSQL, Conn, 1
Avatar billede idiotbarn Nybegynder
05. november 2002 - 21:32 #15
Microsoft JET Database Engine (0x80040E10)
Der er ikke angivet nogen værdi for en eller flere krævede parametre.
/suspekt/admin/Search.asp, line 70


linie 70:
rs.Open strSQL, Conn, 1
Avatar billede eagleeye Praktikant
05. november 2002 - 21:36 #16
Det kunne type på der mangler et kolonne navn et sted.
Avatar billede eagleeye Praktikant
05. november 2002 - 21:36 #17
Sagt på en anden måde hvis et kolonnenavn er stavet forkert i forhold til i databasen.
Avatar billede eagleeye Praktikant
05. november 2002 - 21:43 #18
Fejlen kan også komme hvis strKeyword er tom ""

Prøv i din SQL at barbere det væk som ikke er nødvendligt. Eks vis ID som sikker er et autonummer felt. Ligeledes med Aktiveret.



strSQL = "SELECT Id, Brugernavn, Kodeord, Email, Sidste_login FROM Users WHERE"
strSQL = strSQL & " (Brugernavn LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Kodeord LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Email LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Sidste_login LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " order by " & Order
Avatar billede idiotbarn Nybegynder
05. november 2002 - 21:44 #19
FEDT...så virker det...det var en taste fejl da jeg satte det andet ind...Har du nogen ide om hvorfor at man kan når ens db åbnes på den måde`?
Avatar billede eagleeye Praktikant
05. november 2002 - 21:46 #20
Den anden måde bør også virke nu, men jeg syntes Microsoft.Jet.OLEDB.4.0; drivere giver bedre fejl koder.
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