Avatar billede fastwrite Nybegynder
09. januar 2004 - 00:14 Der er 26 kommentarer og
1 løsning

viser samme side, selvom ?page= skifter

Jeg har et problem.

Jeg har brugt koden fra dette spørgsmål: http://www.eksperten.dk/spm/415354

Det virker også fint nok.

Problemet er bare, at når jeg trykker på en BESTIL knap ud for det enkelte produkt, genopfrisker den siden, og viser nu side 1 af produkterne, selvom derstår ?page=3 - og når jeg skifter side, er det de samme 5 produkter der bliver vist.

Er det en almindelig fejl? Jeg skal gerne komme med kode, men først vil jeg lige høre om det er en almindelig fejl, og man skal bare gøre det og det, og så virker det.

Jeg har nu brugt 2 timer på at finde ud af det. :o(
Avatar billede tzag_dk Nybegynder
09. januar 2004 - 09:36 #1
Kan jeg ikke se din kode?
Avatar billede deeflate Nybegynder
09. januar 2004 - 12:01 #2
Og du har testet på om sidetallet overhoved bliver modtaget?
Hvis ikke, så prøv at udskrive sidetallet, og hvis det er 1 hver gang, så er det din request.Querystring("page") den er gal med...
Avatar billede fastwrite Nybegynder
10. januar 2004 - 00:52 #3
deeflate - jeg har også lidt haft den mistanke. Hvordan er det nu jeg udskriver sidetallet? Og er der noget konkret jeg bør se efter?
Avatar billede fastwrite Nybegynder
10. januar 2004 - 00:52 #4
hjemmesiden der er problemet er www.mrsskipper.dk (min hustrus hjemmeside) - gå under produkter og smykker, og der virker bladrersystemet fint. Men lige så snart jeg har trykket på BESTIL knappen viser den kun side 1, selvom jeg bladrer frem og tilbage.
Avatar billede deeflate Nybegynder
10. januar 2004 - 14:12 #5
Hmm... jeg prøvede lige og paging virkede kun 1. gang. Da jeg havde trykket bestilt virkede det ikke længere, heller ikke selvom jeg tastede adressen ind og startede forfra.
Det er godt nok underligt...

Det er dette her, der tager sig af sidetallet:

intPage = Request("page")
If isNumeric(intPage) = False Or intPage < 1 Then
    intPage = 1
End If

Først forsøger den at hente tallet fra querystring, og hvis der så ikke står et sidetal, så sætter den det automatisk til 1.
Hvis den første linie mangler, eller hvis der er en fejl i den, så bliver sidetallet altså altid 1.
Jeg tror det er her problemet ligger.

Prøv engang et sted i din kode, evt. lige efter dette stykke, at skrive:

response.Write intpage

det udskriver sidetallet.

En anden ting er, at det nok kunne være en god ide at føre sidetallet med i querystring'en også når man trykker bestil...
Avatar billede fastwrite Nybegynder
10. januar 2004 - 16:52 #6
deflate - det sidste du skriver at føre sidetallet med i querystringen - har du et eks. på dette?

men jeg tror at du er inde på noget af det rigtige.
Avatar billede deeflate Nybegynder
10. januar 2004 - 23:48 #7
Der hvor du angiver den adresse man går til når man trykker på bestil tilføjer du sidetallet.
D.v.s. altså sige, at der hvor f.eks. denne del

<form method="post" onsubmit="this.action='produkt-smykker.asp?kategorid=1&mode=tilkurv&kode=11&pris=135';this.submit();" action=""><input name="submit" type="submit" value="Bestil"></form>

bliver udskrevet skal der f.eks. udskrives:

<form method="post" onsubmit="this.action='produkt-smykker.asp?kategorid=1&mode=tilkurv&kode=11&pris=135&page=2';this.submit();" action=""><input name="submit" type="submit" value="Bestil"></form>

du skal altså tilføje:

"&page=" & intPage

eller

&page=<%=intPage%>

til den adresse.

Her er et eksempel hvor sidetallet er føjet til (sidetallet hedder i dette eksempel intNum og ikke intPage):

Response.Write "<a href=default.asp?style=" & style & "&pid=" & pid & "&page=" & intNum & "&order=" & order & ">" & intNum & "</a> "

Ovenstående er hvis det er indenfor ASP-tags.
Udenfor ASP-tags ville det samme se således ud:

<a href="default.asp?style=<%=style%>&pid=<%=pid%>&page=<%=intNum%>&order=<%=order%>"><%=intNum%></a>
Avatar billede deeflate Nybegynder
10. januar 2004 - 23:51 #8
Hvis du smider din kode her, så er det nok noget lettere at spotte fejlen, men prøv endelig om du kan fikse det selv først (det lærer man oftest mest af).
Men så sørg for at lave et backup af den oprindelige kode... ;)
Avatar billede fastwrite Nybegynder
11. januar 2004 - 17:10 #9
jeg har MANGE backups af de sider ;) Jeg *har* prøvet at lave noget, og fik det gemt, og så gik det i total ged, og så kunne jeg ikke huske hvad jeg lavede om på... måtte starte forfar.. men som du siger - det er noget man lærer af :) Jeg prøver lige din metode..

Men foreløbig TAK for hjælpen!!!!!
Avatar billede fastwrite Nybegynder
11. januar 2004 - 17:43 #10
Jeg har skrevet følgende:

<form method="post" onsubmit="this.action='produkt-smykker.asp?kategorid=<%<form method="post" onsubmit="this.action='produkt-smykker.asp?kategorid=<%=request.QueryString("kategorid")%>&mode=tilkurv&kode=<%=rst("billedepath")%>&pris=<%=rst("pris")%>&page=<%=intpage%>'%>;this.submit();" action=""><input name="submit" type="submit" value="Bestil"></form>

lige så snart jeg har min intpage med i denne formel - så virker bestil knappen ikke.

min intpage startes på denne måde:

<%
intPage = Request("page")
if isNumeric(intpage) = False or intPage < 1 then
    intPage = 1
end If

rst.Open strSQL, con, 1, 3

' hvor mange på hver side
If not (rst.BOF or rst.EOF) then
rst.Pagesize = 10
rst.AbsolutePage = intPage
intRecCount = rst.Pagesize
intPageCount = rst.PageCount
%>

og den kode er sat ind efter mit kald til databasen med

strSQL = "Select * From qrySmykker where kategorid=" & request.QueryString("kategorid")

hvad gør jeg forkert?! for når jeg fjerner intpage i min BESTIL kommando, så virker den fint med bestillingen, men så bare ikke med page=
Avatar billede fastwrite Nybegynder
11. januar 2004 - 17:50 #11
ok - det var min '" der var byttet rundt, derfor den ikke virkede. Nu har jeg fået DEN til at virke, men den viser stadigvæk side 1 selvom selve koden skal vise side 3...
Avatar billede deeflate Nybegynder
11. januar 2004 - 17:55 #12
Det her

<form method="post" onsubmit="this.action='produkt-smykker.asp?kategorid=<%<form method="post" onsubmit="this.action='produkt-smykker.asp?kategorid=<%=request.QueryString("kategorid")%>&mode=tilkurv&kode=<%=rst("billedepath")%>&pris=<%=rst("pris")%>&page=<%=intpage%>'%>;this.submit();" action=""><input name="submit" type="submit" value="Bestil"></form>

er altså også lidt noget rod...
Der er et %> for meget efter page. Ret det til:

<form method="post" onsubmit="this.action='produkt-smykker.asp?kategorid=<%=request.QueryString("kategorid")%>&mode=tilkurv&kode=<%=rst("billedepath")%>&pris=<%=rst("pris")%>&page=<%=intpage%>';this.submit();" action=""><input name="submit" type="submit" value="Bestil"></form>
Avatar billede deeflate Nybegynder
11. januar 2004 - 17:56 #13
Selvfølgelig med din anden rettelse også ;)
Avatar billede deeflate Nybegynder
11. januar 2004 - 18:01 #14
Jeg var lige inde og se igen, og den MÅ få fat i sidetallet for pilene (forrige og næste side) virker som de skal...

Prøv lige før du udskriver linksene til sideskift at udskrive sidetallet.
Jeg tror altså det kommer fint nok med alligevel...
Avatar billede fastwrite Nybegynder
11. januar 2004 - 18:08 #15
du er velkommen til at hente min sidekode her:

ftp.tsmedia.dk" target="_blank">ftp://eksperten:eksperten@ftp.tsmedia.dk
gå i skuffen 449075
Avatar billede fastwrite Nybegynder
11. januar 2004 - 18:09 #16
ligger som zip fil
Avatar billede fastwrite Nybegynder
11. januar 2004 - 20:27 #17
deflate - jeg prøver lige.
Avatar billede fastwrite Nybegynder
11. januar 2004 - 20:29 #18
Nu har jeg kopieret din linje direkte ind, og som du kan se virker det stadigvæk ikke. Det er da højst besynderligt....
Avatar billede deeflate Nybegynder
11. januar 2004 - 21:07 #19
Tjae...
Jeg laver lige et lokalt setup og tester lidt på det. Vender tilbage så snart jeg har noget...
Avatar billede deeflate Nybegynder
11. januar 2004 - 21:56 #20
Jeg har fundet dit problem.
Du overskriver recordsettet i "tekst til kurv"-sektionen.
Kald i stedet det recordset for rstKurv eller lignende, så er problemet løst.

Prøv at skifte dette i din kurvetekstdel:

  strSQL2 = "Select * From qrySmykker WHERE billedepath=" & tekst(0)
  set rst = Con.execute(strSQL)
  pris = pris + (rst("pris") * tekst(1))


ud med følgende:

  strSQL2 = "Select * From qrySmykker WHERE billedepath=" & tekst(0)
  set rstKurv = Con.execute(strSQL)
  pris = pris + (rstKurv("pris") * tekst(1))
Avatar billede deeflate Nybegynder
11. januar 2004 - 21:58 #21
Og så skal du selvfølgelig huske at ændre "rst" til "rstKurv" alle relevante steder.
Avatar billede fastwrite Nybegynder
11. januar 2004 - 22:09 #22
orv.. jeg prøver lige...
(har du virkelig lavet et lokalt setup?! Du er for god, mand.. du burde næsten have penge for det her)
Avatar billede fastwrite Nybegynder
11. januar 2004 - 22:20 #23
YES!! ****DET VIRKER****

Deeflate - jeg bukker for din store, store hjælp!!!

maaan  - det er super!!! Hvordan kunne du gennemskue den fejl?!
Avatar billede deeflate Nybegynder
11. januar 2004 - 23:26 #24
Sidetallet blev jo, som jeg også skrev tidligere, modtaget korrekt.
Så måtte fejlen være i pagingen af recordsettet.
Og det måtte være i forbindelse med kurven, fordi fejlen først opstod, når der var trykket bestil, og blev ved sålænge der var noget i kurven.
Så kiggede jeg efter, hvad der skete med recordsettet i forbindelse med kurven, og der så jeg jo så, at du overskrev det.

Det strider imod princippet i pagingen.
Når du læser nye records ind undervejs, bryder du med dette her:

  rst.Pagesize = 10
-->rst.AbsolutePage = intPage
  intRecCount = rst.Pagesize
  intPageCount = rst.PageCount

og derfor bliver posterne ikke paget, selvom det er det rigtige sidetal i intPage.

Og så vil jeg lige tilføje, at du nok også bør rette så du får sidetallet med i querystring'en, når man tømmer kurven og et par andre steder, men det kan du jo selv lige nørkle lidt med ;)
Avatar billede deeflate Nybegynder
11. januar 2004 - 23:39 #25
Og hvis du er seriøs omkring at give mig noget for hjælpen, må du da meget gerne forhandle lidt med din kone om vennepris på et par øreringe eller noget ;)
Der er virkelig nogle pæne ting imellem :o)
Avatar billede fastwrite Nybegynder
11. januar 2004 - 23:39 #26
deeflate - jeg havde faktisk ikke regnet med at du ville skrive hvad du gjorde, men det hjælper mig yderligere i min erfaring med ASP! Jeg takker!!!!

Måske du også gad se på http://www.eksperten.dk/spm/450409 nu du er igang med at gøre mig glad ;o)
Avatar billede deeflate Nybegynder
11. januar 2004 - 23:53 #27
Det er jo det vi alle er her for - at lære og få erfaring ;)
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