Voor onze nieuwssite ben ik - zonder succes - een lange tijd bezig geweest om een vorige - volgende link te maken. Dat is niet simpel, want hij mag NIET op ID geordend worden, aangezien die weleens door elkaar heen staan. Ze moeten op datum...
$nu zorgt er overigens voor dat voorgeprogrammeerde nieuwsitems niet zichtbaar zijn voor de ingestelde tijd.
Hier de query om het 'huidige' nieuwsbericht uit de database te halen. Hij moet in dit geval dus -1 item weergeven en ik heb gewoon geen idee hoe ik dat aanpak. Ik heb geprobeerd de DeSC Limit anders af te stellen (1,1), maar dat werkt niet.
<? function Showvolgende()
{
global $db;
$nu = time();
$sql = "SELECT * FROM `Nieuws` WHERE id='".$_GET['Archive']."' AND UNIX_TIMESTAMP( _time ) < $nu ORDER BY _time DESC LIMIT 0,1";
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL default '',
`message` text NOT NULL,
`_time` varchar(14) default NULL,
`author` text,
`category` text,
`bronlink` text NOT NULL,
`more` text NOT NULL,
`morelink` varchar(62) default NULL,
UNIQUE KEY `id` (`id`)
Ik snap niet waarom je erin hebt staan:
WHERE id='".$_GET['Archive']."
Want anders zou ik het zo doen:
<?
$sql = "SELECT * FROM Nieuws WHERE UNIX_TIMESTAMP( _time ) < $nu ORDER BY _time DESC LIMIT 0,1;
?>
Dan geeft hij de eerste nieuwe nieuwsbericht aan. En dan moet je het ID uit de database halen en daarheen linken.
De reden waarom we WHERE id=".$_GET['Archive']." gebruiken is omdat het nieuwsitem geopend is. Stel je zit op bericht 30 van 2000, wil je dat hij onder "vorige" naar bericht 29 linkt en niet naar 1999. Of bij volgende naar 2001 ipv 31...
Het gaat dus niet om een overzicht van artikelen, maar om een volgende / vorige link als een nieuwsbericht al geopend is!
Wat als je nu de datum van het nieuwsitem wat je op je scherm hebt staan haalt. En dan gewoon zet:
<?
$sql = "SELECT * FROM Nieuws WHERE UNIX_TIMESTAMP( _time ) < ".$laatstenieuwsbericht." ORDER BY _time DESC LIMIT 0,1;
?>
Waarbij $laatstenieuwsbericht de datum van je huigige nieuwsbericht is?
En dat is dan volgende, bij vorige is de 'pijl (<)' omgedraaid.