Ik heb een foto pagina waar default het laatst toegevoegde foto album wordt getoond.:

$sql = "SELECT *
FROM gallery_fotos
WHERE gallery_id = (
SELECT max(gallery_id) FROM gallery_fotos
)
ORDER BY display_order ASC";

$stmt = $this->pdo->query($sql);
return $stmt->fetchAll();

Verder heb ik een menu met de overige foto albums:

$sql = "SELECT gallery_id
, gallery_titel
FROM galleries
WHERE gallery_id <>(
SELECT MAX(gallery_id) FROM galleries)
ORDER BY display_order";

$stmt = $this->pdo->query($sql);

return $stmt->fetchAll();

De links in het menu zien er als volgt uit:

<a href="/fotos/<?php echo $value['gallery_id'] ?>"><?php echo $value['gallery_titel']; ?></a>

Op zicht werkt het allemaal prima het enige waar ik niet uitkom is de query voor het menu gedeelte. Hierin wil ik eigenlijk alle albums tonen behalve die gene die gekoen is uit het menu.

Ik hoop dat dit een beetje begrijpelijk is?

Alvast bedankt
Wat me opvalt aan de eerste query is dat gallery_id niet uniek moet zijn om de query zinvol te maken. Omdat er vaak een AUTO_INCREMENT zit op een id, en de combinatie van MAX() in de geneste query lijkt het er op alsof je een lijst van foto's ophaalt van een meest recente galerij.
De tweede query haalt alle titels van galerijen op _behalve_ die van de 'meest recente'? galerij.
Die logica ontgaat mij een beetje maar dat maakt niet uit; als je de data krijgt die je wilt hebben is het goed.

Je haalt nu dus de data binnen in PHP, het enige is dat je het gebruikt in een menu waarin je geen dubbele link wil naar het album waar je toch al bent. Goed streven. Dus je weet ergens wat het ID is van het album waar je nu bent, in een $_SESSION variabele of iets dergelijks. Dan kan je die ID naar de database sturen via het WHERE statement met een extra regel er na, als:

$sql .= ' AND `gallery_id` != ' . $_SESSION['gallery_id'];
Wat ook vaak gedaan wordt is de link naar het "actieve item" niet schrijven als link, maar als dikgedrukte tekst, of met een andere (achtergrond)kleur zodat je kunt zien welk actueel item je aan het bekijken bent.

Ik denk dat het weglaten van het actieve item verwarrend is. Stel dat je snel door de items wilt bladeren, je kunt dan niet meer zien waar je gebleven was. Beter is om gewoon alles af te (blijven) drukken als je het mij vraagt, en daarbij het actieve item op een of andere manier te onderscheiden van de rest.

Reageren