Forrige / Næste knapper...

Tags:    php

<< < 12 > >>
Hejsa

Jeg står i den situation, at jeg skal have lavet "Forrige / Næste" knapper til en hjemmeside. Problemet er, at alle tutorials jeg kan finde, løser problemeti forhold til at få et laaangt database output delt op i flere sider. Det er ikke det jeg skal bruge.

Jeg har en "temaviser", der viser ét billede til hvert tema. For nogle temaers vedkommende er der flere billeder, og dem vælger man via nogle små links (1 2 3 4 osv.) under billedet. Disse ekstrabilleder har ikke tilknytning til hovedbilledet hvad database angår, men ligger derimod for sig selv.

For at lave denne link-liste, bruger jeg følgende script:

Fold kodeboks ind/udKode 


Nu er det så jeg gerne vil have Forrige / Næste knapper på min link-liste. Men jeg kan simpelthen ikke regne den ud, da mine links er baseret på "ID=xx" fra databasen GALLERY.

Er der nogle af jer kloge hoveder der kan hjælpe, eller kender et link til en tutorial?

På forhånd tak!



hvis id er nummerisk sorteret således at næste id i et givet theme er størrer en forige så er det vel bare
SELECT * FROM gallery WHERE id>'$id' AND theme='$theme' ORDER BY theme ASC LIMIT 1
for at finde næste og
SELECT * FROM gallery WHERE id<'$id' AND theme='$theme' ORDER BY theme DESC LIMIT 1
for at finde forige



Hej

ID er nummerisk, men kan være hvad som helst. Derfor er det desværre ikke bare "én op".

Er det noget med at køre alle ID's ind i et array, og så gå ud fra "pladserne" i dette..?

Mvh
Gunnar



de queries jeg viste var ikke 1 op de var nærmeste næste id med samme theme.



Ok ja, sorry. Men næste ID kan godt være mindre en den forrige, da jeg har en ORDER by sort (som er et nummerisk felt, hvor kunden kan sættet et rækkefølgenummer på billedet).



nå ok :). hvis du sender id af den nuværende i næste og forige linket så
ville
$res=mysql_query("SELECT sort,theme FROM gallery WHERE id='".$_GET['id']."' LIMIT 1");
list($sort,$theme)=mysql_fetch_row($res);
finde den nuværendes sort og theme.

Så kunne du finde det næste links info ved:
mysql_query("SELECT * FROM gallery WHERE sort>'".$sort."' AND theme='".$theme."' ORDER BY theme ASC LIMIT 1");
Og forrige ved:
mysql_query("SELECT * FROM gallery WHERE sort<'".$sort."' AND theme='".$theme."' ORDER BY theme DESC LIMIT 1");




Hmmm...

Nogen chance for at du lige kunne forklare hvad der sker de forskellige steder?

Bare det at jeg indsætter koden i mit script gør, at mit eksisterende script ikke længere viser noget billede, til trods for at ID'en er korrekt! - mystisk eller?

Mvh
Gunnar



- en anden ting er, at min tema-selector (en thumbnail menu) ikke sender noget ID, men kun et theme-id. Hvert theme har nemlig et hovedbillede, som ikke har noget med galleri-billederne at gøre...lige bortset fra, at det SER sådan ud på siden.

Dvs. at man indledningsvist får et billede serveret fra "theme", og klikker man på tallene (eller de forrige/næste som er problemet), så får man billeder fra "galleri" vist i samme format og på samme sted.

Giver det mening?

/Gunnar



Skal måske lige sige, at der er en tabel ved navn THEME, ligesom der er et felt i Gallery der hedder THEME.



hvad er det lige du godt vil have der sker når der klikkes på forrige og næste knapper i en liste over billeder i et galleri?

Normalt vil folk have at når man ser på et billed i galleriet går forrige og næste til nabo billederne. I det tilfælde vil følgende kode virke udfra den antagelse at din billedviser kode gjorde brug af id i gallery tabellen til at finde det nuværende billed kan.

$_GET['id']
er id'et for det nuværende billed
$res=mysql_query("SELECT sort,theme FROM gallery WHERE id='".$_GET['id']."' LIMIT 1");
list($sort,$theme)=mysql_fetch_row($res);
finder det nuværende billeds sort og theme.

Så finder id af det næste billed, næste billed sort er størrer end nuværende billeds sort og de har samme theme, Limit til 1 fordi der kun er et næste billed og sorteret stigende på sort for at få den laveste sort der er størrer end det nuværende billeds sort:
$res=mysql_query("SELECT id FROM gallery WHERE sort>'".$sort."' AND theme='".$theme."' ORDER BY sort ASC LIMIT 1");
list($næsteid)=mysql_fetch_row($res);

skriver et link til billedviser.php filen med id af næste id
print('<a href="billedviser.php?id='.$næsteid.'">Næste</a>');

Og samme ved forrige er det bare med sort mindre og sorteret faldende:
$res=mysql_query("SELECT * FROM gallery WHERE sort<'".$sort."' AND theme='".$theme."' ORDER BY sort DESC LIMIT 1");
list($forrigeid)=mysql_fetch_row($res);
print('<a href="billedviser.php?id='.$forrigeid.'">Næste</a>');





Kanon - det hjalp :-)

Tusind tak Nørd :D

Lige en detalje... når nu det sidste billede er vist, hvordan undgår man så at "næste" stadig er synlig? Det samme gælder for så vidt "forrige" når første billede vises?

Ellers super hjælp!

Mvh
Gunnar



<< < 12 > >>
t