<mega verhaal>
Ik heb een online fotoboek gemaakt wat op zich al lange tijd prima draait. Een bezoeker kan een onderwerp kiezen en krijgt dan in één scherm alle foto's behorend bij dat onderwerp in preview(verkleind formaat)te zien. Als er op een foto wordt geklikt krijg je een vergrote versie van de foto te zien. Om het gebruiksgemak te verhogen kan je ook direct bij de grote foto naar de volgende of vorige grote foto klikken. Zie voor voorbeeld www.piepers.tk
Omdit voor elkaar te krijgen heb ik alle foto's in een tabel geplaatst. Zo ziet de tabel er uit:
-id (autonummer)
- fotoGroot( link van de grote foto)
- fotoKlein(link van de kleine foto)
- omschrijving
- categorie(het onderwerp van de foto, met nu 4 keuze mogelijkheden)
In het scherm van de grote foto is de link van de vorige foto gewoon de huidige id -1, voor de volgende foto de huidige id +1, met een if constructie om BOF en EOF op te vangen. De gebruiker ziet dus niet de foto per onderwerp 1 voor 1 langskomen, maar scrolt als het ware door de tabel. Dit wil ik nu veranderen, de gebruiker kiest een grote foto en kan van daaruit de volgende en vorige foto kiezen, maar ziet alleen de foto's van het geselecteerde onderwerp, zonder foto's van een ander onderwerp.
In de tabel lopen de id's behorend bij de verschillende onderwerpen niet regelmatig op, dus bijv. foto 1 heeft als onderwerp A, foto 2 heeft onderwerp B en foto 3 heeft weer onderwerp A.
Op zich goed te doen zou je zeggen, dus daarom heb ik de volgende code geschreven:
Het eerste onderwerp heeft foto's met id 1-14, en gaat daarna verder met id 73-115. De bovenstaande code laat prima de eerste foto's zien, inclusief de goede vorige en volgende foto link, maar zodra foto 73 of hoger wordt opgevraagd krijg ik deze melding:
Terwijl er dus wel records in de tabel staan.
Om het nog gekker te maken krijg ik de records als ik ze één voor één opvraag (while lus) wel te zien( na de tweede query dus ook)!
Als work around heb ik met de functie getRows() alle records en een array geplaatst, maar dan is het resultaat precies hetzelfde...
Ik snap er echt niks meer van en vermoed een BUG in asp...
HELP
edit> code aangepast.
Ik heb een online fotoboek gemaakt wat op zich al lange tijd prima draait. Een bezoeker kan een onderwerp kiezen en krijgt dan in één scherm alle foto's behorend bij dat onderwerp in preview(verkleind formaat)te zien. Als er op een foto wordt geklikt krijg je een vergrote versie van de foto te zien. Om het gebruiksgemak te verhogen kan je ook direct bij de grote foto naar de volgende of vorige grote foto klikken. Zie voor voorbeeld www.piepers.tk
Omdit voor elkaar te krijgen heb ik alle foto's in een tabel geplaatst. Zo ziet de tabel er uit:
-id (autonummer)
- fotoGroot( link van de grote foto)
- fotoKlein(link van de kleine foto)
- omschrijving
- categorie(het onderwerp van de foto, met nu 4 keuze mogelijkheden)
In het scherm van de grote foto is de link van de vorige foto gewoon de huidige id -1, voor de volgende foto de huidige id +1, met een if constructie om BOF en EOF op te vangen. De gebruiker ziet dus niet de foto per onderwerp 1 voor 1 langskomen, maar scrolt als het ware door de tabel. Dit wil ik nu veranderen, de gebruiker kiest een grote foto en kan van daaruit de volgende en vorige foto kiezen, maar ziet alleen de foto's van het geselecteerde onderwerp, zonder foto's van een ander onderwerp.
In de tabel lopen de id's behorend bij de verschillende onderwerpen niet regelmatig op, dus bijv. foto 1 heeft als onderwerp A, foto 2 heeft onderwerp B en foto 3 heeft weer onderwerp A.
Op zich goed te doen zou je zeggen, dus daarom heb ik de volgende code geschreven:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| <%
intHuidigeId= CInt(Request.QueryString("id"))
rsfoto.Open "SELECT * FROM foto WHERE id LIKE '"& IntHuidigeId &"'", dbConnection, 3, 3
'Geen resultaat
if rsfoto.eof then
response.write "Geen foto gevonden."
else
'Sla het onderwerp op voor hergebruik
OpgevraagdeOnderwerp = rsfoto("categorie")
'Schrijf de foto naar de browser
%>
= rsfoto( bla bla)
<%
rsfoto.close
rsfoto.open "SELECT id FROM foto WHERE categorie LIKE '"& OpgevraagdeOnderwerp &"'", dbConnection, 3, 3
rsfoto.movefirst
IntEersteRecord = rsfoto("id")
rsfoto.moveLast
IntLaatsteRecord = rsfoto("id")
rsfoto.absoluteposition = IntHuidigeId
if IntHuidigeId = IntEersteRecord then
rsfoto.move 1
%>
<A HREF="fotogroot.asp?id=<%= rsfoto("id")%>&onderwerp=<% = OpgevraagdeOnderwerp %>"
>Volgende foto</A>
<%
elseif IntHuidigeId = IntLaatsteRecord then
rsfoto.move -1
%>
<A HREF="fotogroot.asp?id=<%= rsfoto("id")%>&onderwerp=<% = OpgevraagdeOnderwerp %>"
>Vorige foto</A>
</TD>
<%
else
rsfoto.move -1
%>
<A HREF="fotogroot.asp?id=<%= rsfoto("id")%>&onderwerp=<% = OpgevraagdeOnderwerp %>"
>Vorige foto</A>
</TD>
<%
rsfoto.move 2
%>
<A HREF="fotogroot.asp?id=<%= rsfoto("id")%>&onderwerp=<% = OpgevraagdeOnderwerp %>"
>Volgende foto</A>
<%
end if |
Het eerste onderwerp heeft foto's met id 1-14, en gaat daarna verder met id 73-115. De bovenstaande code laat prima de eerste foto's zien, inclusief de goede vorige en volgende foto link, maar zodra foto 73 of hoger wordt opgevraagd krijg ik deze melding:
code:
1
| BOF of EOF is Waar, of de huidige record is verwijderd. Voor de gewenste bewerking moet er een huidige record zijn. |
Terwijl er dus wel records in de tabel staan.
Als work around heb ik met de functie getRows() alle records en een array geplaatst, maar dan is het resultaat precies hetzelfde...
Ik snap er echt niks meer van en vermoed een BUG in asp...
HELP
edit> code aangepast.