Avatar billede nugie Nybegynder
02. marts 2007 - 10:51 Der er 7 kommentarer og
2 løsninger

Næste og forrige (Billeder)

Jeg har lavet et galleri hvor man skal kunne trykke næste og forrige billede er aktivt.
Jeg har følgende sortingsmåder oversigten af billeder: navn, kommentar, tilføjet og bedømmelse.

Det hele fungere også fint når man skal udskrive næste og forrige, men ikke ved navn. Man kan jo ikke sortere navn på denne måde, som jeg gør ved de 3 andre: id>'$row[id]'. Det er heller ikke muligt at bruge "order by navn", fordi så ved man ikke "hvor langt" man er nået i rækkefølgen.

Hvordan kan man gøre det??
Avatar billede nugie Nybegynder
02. marts 2007 - 10:52 #1
Rettet lidt fejl:
"trykke på næste og forrige når et billede"
"sorteringsmåder i oversigten"
Avatar billede intenz Novice
02. marts 2007 - 14:30 #2
du skal bruge limit.
F.eks. vil dette hente det første billede (starter ved 0 og henter 1)
$start = 0;
mysql_query("select 'et eller andet' order by navn asc limit $start,1");

Dette vil hente det næste billede:
$start = 1;
mysql_query("select 'et eller andet' order by navn asc limit $start,1");

osv
Avatar billede simplus Nybegynder
02. marts 2007 - 14:33 #3
Avatar billede nugie Nybegynder
02. marts 2007 - 18:23 #4
Kan ikke få det til at fungere. Værdien er konstant, og forkert, ligegyldet hvilket billede jeg vælger. Det er også logisk nok da jeg ikke angiver hvilket billede jeg er på. Har prøvet at bytte om på en masse ting uden held, så er vendt tilbage til det 'normale' igen.
Nogle ideer?

$start = 1;
$result4 = mysql_query("SELECT * FROM billeder WHERE arkiv='$row[arkiv]' ORDER BY overskrift LIMIT $start,1");
$num4 = mysql_num_rows($result4);
if($num4 > 0) {
    $next4 = true;
    $row4 = mysql_fetch_array($result4);   
}
Avatar billede intenz Novice
02. marts 2007 - 19:49 #5
Noget i den stil her:

$start= ($_GET['start'] != "") ? "1" : "$_GET['start']";
$result4 = mysql_query("SELECT * FROM billeder WHERE arkiv='$row[arkiv]' ORDER BY overskrift LIMIT $start,1");
$num4 = mysql_num_rows($result4);

if ($num4 > 0) {
print "<a href=".$_SERVER['PHP_SELF']."?start=".($start-1)."><< forrige</a>;
}

if ($num4 > $start) {
print "<a href=".$_SERVER['PHP_SELF']."?start=".($start+1).">næste >></a>;
}

if($num4 > 0) {
    $next4 = true;
    $row4 = mysql_fetch_array($result4);   
}
Avatar billede nugie Nybegynder
02. marts 2007 - 21:18 #6
Det virker meget det som jeg selv skrev, dog hvor der er bygget lidt mere på.
Problemet ligger i at jeg ikke kan se nogen sammenhæng i det output jeg får, ligemeget hvad jeg ændrer start til. Jeg vil tro at der skal ændres noget i query'en for at få det til at virke.
Jeg skal bruge $row4 variablen for at få url'en til det næste billede, da det ikke bare ligger som et nummer.
Avatar billede nugie Nybegynder
02. marts 2007 - 21:25 #7
Efter lidt kig på koden virkede det helt perfekt:
$result4 = mysql_query("SELECT * FROM billeder WHERE arkiv='$row[arkiv]' AND overskrift>'$row[overskrift]' ORDER BY overskrift LIMIT 1");
Avatar billede intenz Novice
02. marts 2007 - 21:25 #8
Du skal nok ændre:
$result4 = mysql_query("SELECT * FROM billeder WHERE arkiv='$row[arkiv]' ORDER BY overskrift LIMIT $start,1");

til:
$result4 = mysql_query("SELECT * FROM billeder WHERE arkiv='$row[arkiv]' ORDER BY overskrift ASC LIMIT $start,1");

så den tager dem i alfabetisk rækkefølge, udover det gør $start variablen, på den måde jeg har lavet det, at den automatisk finde det næste billede (ud fra en alfabetisk rækkefølge)
Avatar billede nugie Nybegynder
03. marts 2007 - 10:21 #9
Har fået det til at virke med mit eget. Dit virker sikkert også, nok bare mig der kludrer lidt i det. Tak for hjælpen ellers.
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