Avatar billede d.kryger Praktikant
11. juni 2008 - 10:09 Der er 9 kommentarer og
1 løsning

Finde værdien før og efter

Hej eksperter.

Jeg har et galleri, hvor jeg gerne vil lave en pil frem og tilbage, så man nemt kan se forrige og næste billede.

Min side henter billedet via en variabel i ardresselinien, f.eks. sådan "galleri.php?id=123". Så vil den vise billede "123.jpg".

Det kunne nemt laves vha. +/- 1 i værdien, men hvis nu et billede er blevet slettet, så duer det jo ikke.

Jeg har alle id'er liggende i en MySQL database, hvorfra man jo kan sorterer dem efter id, men jeg ved bare ikke hvordan jeg kan få rækken før og efter mit id ud.

Jeg håber I forstår, ellers skriv, så skal jeg prøve at forklare.
Avatar billede w13 Novice
11. juni 2008 - 10:17 #1
Du bør hente alle dine billeder ind i et JavaScript-array på siden. Så vil det være let nok.
Avatar billede w13 Novice
11. juni 2008 - 10:19 #2
F.eks.:

<script type="text/javascript">
var iPic=<?php echo $GET_['id']; ?>;

var aPics=[12,20,21,24,25,26,29,56,123];
</script>

Hvor:
var aPics=[12,20,21,24,25,26,29,56,123];
så naturligvis skal genereres med PHP også.
Avatar billede w13 Novice
11. juni 2008 - 10:26 #3
Sådan her muligvis:

<script type="text/javascript">
var iPic=0;
var aPics=["12.jpg","20.jpg","21.jpg","24.jpg","25.jpg","26.jpg","29.jpg","56.jpg","123.jpg"];

for(var i=0;i<aPics.length;i++)if(aPics[i]=="<?php echo $GET_['id']; ?>")iPic==i;

function NextPic(){
    if(iPic++==aPics.length)iPic==0;
    document.getElementById("image").setAttribute("src",aPics[iPic])
}

function PrevPic(){
    if(iPic--==-1)iPic==aPics.length-1;
    document.getElementById("image").setAttribute("src",aPics[iPic])
}
</script>

<img id="image" src="<?php echo $GET_['id']; ?>">

<a href="java script:PrevPic();void(0)">Forrige</a>
|
<a href="java script:NextPic();void(0)">Næste</a>
Avatar billede w13 Novice
11. juni 2008 - 10:30 #4
Hov, sådan her:

<script type="text/javascript">
var iPic=0;
var aPics=["12.jpg","20.jpg","21.jpg","24.jpg","25.jpg","26.jpg","29.jpg","56.jpg","123.jpg"];

for(var i=0;i<aPics.length;i++)if(aPics[i]=="<?php echo $GET_['id']; ?>")iPic==i;

function NextPic(){
    if(iPic++==aPics.length)iPic=0;
    document.getElementById("image").setAttribute("src",aPics[iPic])
}

function PrevPic(){
    if(iPic--==-1)iPic=aPics.length-1;
    document.getElementById("image").setAttribute("src",aPics[iPic])
}
</script>

<img id="image" src="<?php echo $GET_['id']; ?>">

<a href="java script:PrevPic();void(0)">Forrige</a>
|
<a href="java script:NextPic();void(0)">Næste</a>
Avatar billede w13 Novice
11. juni 2008 - 10:33 #5
Og så skal:
for(var i=0;i<aPics.length;i++)if(aPics[i]=="<?php echo $GET_['id']; ?>")iPic==i;
være:
for(var i=0;i<aPics.length;i++)if(aPics[i]=="<?php echo $GET_['id']; ?>")iPic=i;

:)
Avatar billede frand Nybegynder
11. juni 2008 - 10:43 #6
hvis du i din sql sorterer efter id, kan du så ikke bare

"where id < 124" og "where id > 124" for at få det før og efter. Hvis du sætter limit 1 på, så får du kun en række
Avatar billede showsource Seniormester
11. juni 2008 - 11:12 #7
Du kan også putte alle id'er i et array, og så bruge array_search() til at finde aktuelle "key"
Men en kombination af php og javascript som w13 er inde på, er vel mest optimalt.
Avatar billede d.kryger Praktikant
11. juni 2008 - 11:36 #8
Jeg bruger frand's løsning, da det er den der er nemmest for mig at bruge. Læg et svar og du får point!
Avatar billede d.kryger Praktikant
07. juli 2008 - 16:12 #9
Frand -> Vil du ikke svare, så jeg kan få lukket spørgsmålet?
Avatar billede d.kryger Praktikant
22. juli 2008 - 10:46 #10
Ok, jeg tager selv pointene, da Frand tilsyneladende ikke reagerer på mine indlæg.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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