Galleri med PREV og NEXT knapper.

Tags:    asp

Hej med jer

Håber at der er nogle der kan være behjælpelig med følgende udfordring.

Følgende ASP kode gør det muligt at klikke frem og tilbage i et givent billed galleri, MEN mangler en stump kode der ikke får første billed med PREV knappen og sidste billed i databasen med NEXT knappen til at gå i fejl '80020009', skulle gerne kunne ramme den sidste eller første billed istedet for fejlen.

Her er koden:
Fold kodeboks ind/udKode 


Er en total nybegynder indenfor ASP, derfor mit spørgsmål.
På forhånd mange tak.



8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
iCount er den variabel der holder antallet af billeder. Hvis du allerede ved det er 1888, kan du jo bare sætte iCount til at være 1888. Hvis ikke, så skal du lige huske at evaluere det SQL statement først.

Med den fejl der, så kunne jeg måske forestille mig at den måske bare appender % med ind til SQL statementet. Så prøv at udregne hvad (iID-1)%iCount er inden du sætter det ind. Så noget a la:
Fold kodeboks ind/udKode 


Det skulle gerne en ide af hvad jeg mener - forstår du hvor jeg vil hen med det? Du skal ikke kigge så meget på koden som du skal forstå ideen bag det.

Håber det hjælper.



Lav en statement der tæller hvor mange billeder der er. Like so iCount = "SELECT COUNT(*) FROM images WHERE iValid=True" og så siger du iMovePrev = "SELECT * FROM images WHERE iValid=True AND iID=" & ((iID - 1)%iCount).

Dette gør at hvis du har 12 billeder og prøver at tilgå nummer 13, siger den 13%12 = 1. Du skal nok lige justere med en offByOne faktor hvis du enten begynder med id som 0 eller 1.

Håber du forstår hvad jeg mener og håber det hjælper.




Lav en statement der tæller hvor mange billeder der er. Like so iCount = "SELECT COUNT(*) FROM images WHERE iValid=True" og så siger du iMovePrev = "SELECT * FROM images WHERE iValid=True AND iID=" & ((iID - 1)%iCount).

Dette gør at hvis du har 12 billeder og prøver at tilgå nummer 13, siger den 13%12 = 1. Du skal nok lige justere med en offByOne faktor hvis du enten begynder med id som 0 eller 1.

Håber du forstår hvad jeg mener og håber det hjælper.


Hej Mads og mange tak for dit svar.

Har indsat følgende kode (står måske forkert) men den fejler:
Fold kodeboks ind/udKode 


Fejlen er:
Microsoft VBScript compilation error '800a0408'

Invalid character

/includes/images-inc.asp, line 92

iMovePrev = "SELECT * FROM images WHERE iValid=True AND iID=" & ((iID - 1)%iCount)



Hej Mads

Forstår godt i hvilken retning det skal gå, dog vil systemet ikke acceptere karakteren %, skal den evt. pakkes ind eller andet?

Microsoft VBScript compilation error '800a0408'

Invalid character

/includes/images-inc.asp, line 98

iMinus = (iID-1)%iCount

På forhånd mange tak.



Det er modulus operatoren. Jeg slog den lige op og den hedder åbenbart bare Mod i VBScript. Så det hedder iMinus = (iID-1) Mod iCount. Hvis det ikke virker, må du bare lave din egen modulus funktion. Ellers kan jeg ikke forestille mig et sprog der er noget som helst værd uden en modulus operator.



Hej Mads

Som jeg startede med, så er jeg en ren novice i ASP og har ikke den store kendskab til dette sprog eller for den sags skyld andre sprog. Så det med at lave sin egen modulus og hvor koden skal indsættes i den oprindelig kode for at fungere, det ved jeg ganske enkelt ikke, måske det er det forkerte forum jeg agerer i, da det lyder til at man som minimum skal have lidt baggrundsviden indenfor de enkelte sprog.



Som sagt kan du bruge "Mod" som i iMinus = (iID-1) Mod iCount. Og modulus er nemt nok at lave - hvis du ikke laver det til det her, kunne det være en god øvelse at gøre bare for at gøre det. Slå op på wikipedia hvad den gør helt præcist og så implementer din egen version af den, den behøver hverken optimal eller pæn - bare den virker. Og så kan du gøre den bedre og hurtigere senere.



Jeg har forgæves forsøgt at få det til at virke, men jeg er bare for nybegynder agtig, så alt i alt er jeg lige vidt, men pointene skal du da have for at have forsøgt.



t