Avatar billede djsteiner Nybegynder
14. juni 2011 - 19:20 Der er 14 kommentarer og
1 løsning

paging

hej jeg har et problem med noget kode.

problemmet er at når man søger for eksemple på "L" så udskriver den også navne som ikke indholder "L"

håber dette givermening!

Her har i koden:


Del 1: index.asp  :


<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include file="includes/config.asp" -->
<!-- #include file="dbconnect.asp" -->
<%
mycase = request.QueryString("mycase")
%>



<!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>test</title>

</head>
       
<body>
<html>
                                                                        <table cellpadding="0" cellspacing="0" width="153">
                <tr> <form action="index.asp?mycase=searchres" method="post">
                <td width="110"><input type="text" name="sog" style="width:110px; border:1px #000 solid;" /></td>
                <td width="43"><input type="submit" value="Ok" style="width:43px; height:22px;"/></td>
                </form>
                </tr>
                </table>
               
                <br /><br />
               
               
                   
                        <!-- #include file="case.asp" -->
                       
                       
                       
                       
               
               
   
</body>
</html>


del 2 case.asp :



<%
page = request.QueryString("page")
Select Case mycase

Case "searchres"

session("sog") = replace(replace(server.HTMLEncode(request.Form("sog")),"'",""),"=","")

    set antal = conn.execute("select count(*) as records from bruger where brugernavn like '%"&session("sog")&"%' ")
    Records = Clng(antal("records"))
    antal.close
    set antal = nothing
   
    page = request.QueryString("Page")
    if page = "" or not isNumeric(page) then
        page = int(1)
    else
        page = int(page)
    end if
   
    PageSize = int(10)
    Start = page*PageSize
    Start = Start-PageSize
   
    j = records/PageSize
    If j/1 = int(j) Then
        Pages = j
    Else
        Pages = int(j)+1
    End if
   
    set pro = conn.execute("select * from bruger where brugernavn like '%"&session("sog")&"%'  order by ID asc LIMIT " & Start & ", " & PageSize & "")   
    if (pro.eof or pro.bof) then%>
    Din søgning gav ikke noget resultat!



<%    else    %>       
                   
                        <%    do until pro.eof%>
                       
   
<a href="index.asp?mycase=showseachs&id=<%=pro("ID")%>"><%=pro("brugernavn")%></a> <br />



                       
                               
                       
                        <%                   
                        pro.movenext
                        loop    %>
                       
<%    end if    %>   
<br />
                        <div id="pageskift">
<%    if not records < pagesize then

    For i = 1 to Pages
  if i = page then
    Response.Write "<span class='skift'><strong>" & i & "</strong></span> "
  else
  Response.Write "<a href='index.asp?mycase=searchres&Page=" & i & "' class='prolink'>"
    Response.Write i
    Response.Write "</a> "
  end if
next   
end if   


%>



<%

case "showseachs"

id = request.QueryString("id")

sql = "SELECT * FROM bruger WHERE ID="&id
set rs = Conn.Execute(sql)

%>

<%do until rs.eof %>

                <%=rs("bruger_tekst")%><br />
        <%rs.movenext
    loop %>   


<%



end select

%>
Avatar billede keysersoze Guru
14. juni 2011 - 19:39 #1
gør den det konsekvent - eller fejler alle andre sider end side 1? Som du har bygget din kode op kunne jeg nemlig forestille mig at din session vil indeholde ingenting så snart man bladrer videre da request.Form("sog") jo vil være tom - så du er nødt til at tjekke på om der er submitted eller ej inden du sætter værdi i session.
Avatar billede djsteiner Nybegynder
14. juni 2011 - 19:49 #2
Den udskriver alle brugernavnen efter side 1 


kunne man lave det med noget andet end session ?

hvordan tjekker jeg om den er tom eller ej ?
Avatar billede keysersoze Guru
14. juni 2011 - 20:04 #3
Det farlige ved en session er at den udløber - så søger du på noget, når til side 3 og så går til frokost vil  resultatet også fejle når du kommer tilbage.

Går som google og smid søgestrengen op i en querystring - så undgår du fejlen du har nu og du undgår at din session løber ud.
Avatar billede djsteiner Nybegynder
14. juni 2011 - 20:27 #4
jeg har prøvet sådan her:

strSearch = replace(request.form("strsearch"),"'","''")

    set antal = conn.execute("select count(*) as records from bruger where brugernavn LIKE '%"&strSearch&"%'")





stadig samme fejl
Avatar billede keysersoze Guru
14. juni 2011 - 21:01 #5
request.form spørger kun på formelementer - vil du kunne ramme bredt skal du nøjes med at skrive request. Samtidig skal du sørge for at føre søgestrengen videre i dine frem/tilbage links.
Avatar billede djsteiner Nybegynder
14. juni 2011 - 21:28 #6
er  det sådan her man tilføjer søge strengen i mine links ?

Response.Write "<a href='index.aspmycase=searchres"&strSearch&"&Page=" & i & ">"
Avatar billede keysersoze Guru
14. juni 2011 - 21:54 #7
Response.Write "<a href='index.asp?mycase=searchres&strsearch=" & strSearch & "&Page=" & i & "' class='prolink'>"
Avatar billede djsteiner Nybegynder
14. juni 2011 - 22:11 #8
stadig det samme
Avatar billede keysersoze Guru
14. juni 2011 - 22:29 #9
du giver os ikke særlig meget at arbejde med. Prøv at udskriv nogle hjælpe-variabler undervejs - hvad indeholder din strSearch, hvordan ser fx din SQL ud når du eksekverer den osv.
Avatar billede djsteiner Nybegynder
14. juni 2011 - 23:24 #10
men man kan se at strsearch="

for noget med

index.asp?mycase=searchres&strsearch=i&Page=2

når nan trykker på side 2

Men når man trykker på side 3 så virker det ikke.

du kan selv lige prøve det her:

http://www.2b2.dk/search.asp

måske det giver større mening
Avatar billede keysersoze Guru
15. juni 2011 - 07:48 #11
så må du tage et nærmere kig på hvor du tildeler variablen strSearch værd - igen, udskriv nogle hjælpevariabler undervejs og se hvad de indeholder. Tjek også at navne osv stemmer overens.
Avatar billede djsteiner Nybegynder
21. juni 2011 - 23:01 #12
Hej keysersoze

Jeg har fået det til at virke dog med noget javascript som jeg fandt på nettet:)

du kan se resultatet her:

http://www.2b2.dk/search.asp

Men du skal da have point for din hjælp!

Giv lige et svar :)
Avatar billede keysersoze Guru
21. juni 2011 - 23:16 #13
En af de vigtigste grunde til at vælge paging er, at der ikke skal sendes så mange data til klienten - så du skal være opmærksom på, at når du nu har valgt javascript går denne fordel bort da alle data stadig sendes til klienten.
Avatar billede djsteiner Nybegynder
22. juni 2011 - 08:47 #14
Okay det vil sige at det er en dårlig løsning ?


Det skal lige siges at jeg godt kan få paging i ASP til virke hvis jeg laver det uden søging.

Så problemet er at jeg ikke kan få det til virke når jeg tilføjer søgeresultatet til mit paging link.

Tror hvis jeg skulle lave det en anden gang skulle det være i PHP.

Men da dette ikke er noget jeg laver til mig selv er det ikke muligt.
Avatar billede keysersoze Guru
22. juni 2011 - 10:01 #15
Hvis du laver paging for at gør det overskueligt er det en fin løsning - laver du paging for at forbedre performance er det en dårlig løsning (faktisk gør den resultatet langsommere).

Udfordringen vil være præcis den samme i PHP som den er i ASP så kan du løse det i det ene kan du også i det andet - og omvendt. Skal du have hjælp gennem sproget til at lave paging skal du i stedet kigge på ASP.NET, hvor det noget enklere kan løses vha opsætning af nogle færdige kontroller.
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