Avatar billede cygnet Praktikant
13. juli 2003 - 13:40 Der er 5 kommentarer og
1 løsning

Næste - Forrige billede

Jeg er ved at lave et fotoalbum, hvor stien til billederne bliver gemt.

Nu har jeg fået lavet en oversigt og en side hvor det billede man har valgt kan ses.

Men det jeg gerne vil have er at man skal kunne trykke på næste og forrige billede når man er inde på et billede.

Databsen er bygget op således

[ Billeder ]

| ID | Filnavn | Kategori |

Hvor id er unikt, filnavn er stien til billedet og kategori er et nummerfelt. F.eks. 1 - der fortælle hvilken billedeserie billedet høre til.

Håber på hjælp fra en ekspert derude.

/cygnet
Avatar billede ducks Nybegynder
13. juli 2003 - 13:49 #1
Avatar billede hossein Nybegynder
13. juli 2003 - 13:50 #2
Avatar billede eagleeye Praktikant
13. juli 2003 - 13:51 #3
Man kan ikke bruge +/- 1 med 100% sikkerhed da der kan være "huller" i ID rækken hvis man slætter/tilføjer billeder.
Man må lave to SQL som finde den forrige og næste ID.:



<%
set rs = server.CreateObject("ADODB.Recordset")
set conn = server.CreateObject("ADODB.Connection")
'Her åbes databasen og den hedder db9.mdb det retter du bare til at passe med din
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db9.mdb")

kat = Request.QueryString("kat")

'find max og min ID
SQL = "SELECT max(ID) as maxid, min(ID) as minid FROM billeder WHERE kategori=" & kat

Set rs = Conn.Execute (SQL)
maxID = rs("maxid")
minID = rs("minid")

'hendt ID fra querystingen. og hvis ID er tom sæt ID = minID i db'en
id = Request.QueryString("id")
if id = "" then id = minID

'Find næste og forrige ID
SQL = "SELECT TOP 1 ID FROM billeder WHERE ID > " & id & " AND kategori="&kat
set rs = Conn.Execute(SQL)
if rs.EOF then
  nesteID = ""
else
  nesteID = rs("ID")
end if

SQL = "SELECT TOP 1 ID FROM billeder WHERE UsersID < " & id & " AND kategori="&kat & " ORDER BY UsersID DESC"
set rs = Conn.Execute(SQL)
if rs.EOF then
  forrigeID = ""
else
  forrigeID = rs("ID")
end if



'Så han man dette
' valgt ID = ID
' Næste ID = nesteID
' Forrige ID = forrigeID
' Føste ID = minID
' Sidste ID = maxID

'UDSKRIV HER


'Her laves Link
if Int(minID) = Int(id) then
  Response.Write "Første "
else
  Response.Write "<a href=""?kat="&kat&"&id=" & minID & """>Første</a> "
end if

if forrigeID = "" then
  Response.Write "Forrige "
else
  Response.Write "<a href=""?kat="&kat&"&id=" & forrigeID & """>Forrige</a> "
end if

if nesteID = "" then
  Response.Write "Næste "
else
  Response.Write "<a href=""?kat="&kat&"&id=" & nesteID & """>Næste</a> "
end if

if Int(maxID) = Int(id) then
  Response.Write "Sidste "
else
  Response.Write "<a href=""?kat="&kat&"&id=" & maxID & """>Sidste</a> "
end if


%>
Avatar billede cygnet Praktikant
13. juli 2003 - 14:06 #4
Puhh det funger ikke helt - hvor kommer det UsersID fra ?

Men ellers har jeg prøvet at skrive det lidt om

Til dette - men fungerer ikke helt

  SQL = "Select * FROM [billeder] WHERE ID=" & request("nr")
    set rstemp = conntemp.execute(sql)
    response.write "<img src=billeder/store/" & rstemp("filnavn") & " border=0><p>"
    response.write "Send billede"

set rs = server.CreateObject("ADODB.Recordset")
set conn = server.CreateObject("ADODB.Connection")
'Her åbes databasen og den hedder db9.mdb det retter du bare til at passe med din
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("db.mdb")

kat = Request.QueryString("kat")

'find max og min ID
SQL = "SELECT max(ID) as maxid, min(ID) as minid FROM billeder WHERE kategori=" & kat

Set rs = Conn.Execute (SQL)
maxID = rs("maxid")
minID = rs("minid")

'hendt ID fra querystingen. og hvis ID er tom sæt ID = minID i db'en
id = Request.QueryString("id")
if id = "" then id = minID

'Find næste og forrige ID
SQL = "SELECT TOP 1 ID FROM billeder WHERE ID > " & id & " AND kategori="&kat
set rs = Conn.Execute(SQL)
if rs.EOF then
  nesteID = ""
else
  nesteID = rs("ID")
end if

SQL = "SELECT TOP 1 ID FROM billeder WHERE ID < " & id & " AND kategori="&kat & " ORDER BY ID DESC"
set rs = Conn.Execute(SQL)
if rs.EOF then
  forrigeID = ""
else
  forrigeID = rs("ID")
end if



'Så han man dette
' valgt ID = ID
' Næste ID = nesteID
' Forrige ID = forrigeID
' Føste ID = minID
' Sidste ID = maxID

'UDSKRIV HER


'Her laves Link
if Int(minID) = Int(id) then
  Response.Write "Første "
else
  Response.Write "<a href=""?mode=vis&kat="&kat&"&nr=" & minID & """>Første</a> "
end if

if forrigeID = "" then
  Response.Write "Forrige "
else
  Response.Write "<a href=""?mode=vis&kat="&kat&"&nr=" & forrigeID & """>Forrige</a> "
end if

if nesteID = "" then
  Response.Write "Næste "
else
  Response.Write "<a href=""?mode=vis&kat="&kat&"&nr=" & nesteID & """>Næste</a> "
end if

if Int(maxID) = Int(id) then
  Response.Write "Sidste "
else
  Response.Write "<a href=""?mode=vis&kat="&kat&"&nr=" & maxID & """>Sidste</a> "
end if
Avatar billede eagleeye Praktikant
13. juli 2003 - 14:10 #5
Du skal havde tilføjet en linje

id = Request.QueryString("nr")

oppge ved denne:
kat = Request.QueryString("kat")


UserID skulle hvade være ID
Avatar billede cygnet Praktikant
13. juli 2003 - 14:10 #6
Arh du er gud - TOP nice.
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

IT-JOB

Capgemini Danmark A/S

Client Partner

Kræftens Bekæmpelse

IT-driftsleder

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger IT-supporter til vores supportteam i Hvidovre

Capgemini Danmark A/S

AI/Data Engineer