Vorige en volgende ID
Voorbeeld op tweakers.net.
ID van het nieuwsitem dat volledig wordt uitgelezen is bekend in de URL. Nou heb ik de volgende query ($req[1] = ID uit URL):
Code (php)
1
$sql = mysql_query("SELECT ID, title FROM fp_news WHERE ID = '" .($req[1]-1). "' OR ID = '" .($req[1]+1). "'", $dbfp);
Heb het ook met LIMIT geprobeerd. Nu is het probleem dat er niets gevonden wordt, wanneer er een of meerdere rijen uit de database is verwijderd. Is er iets efficiënters op te vinden?
Gewijzigd op 01/01/1970 01:00:00 door Vincent
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$CurrentCounter = 12; // Hoogste bestaand ID, nieuwste ID.
$CurrentID = 12;
$NextID = $CurrentID + 1;
$PreviousID = $CurrentID - 1;
if ($id > 0) {
echo "<a href=\"nieuws.php?id=".$PreviousID."\">Vorige</a> ";
}
if ($id < $CurrentCounter) {
echo "<a href=\"nieuws.php?id=".$NextID."\">Volgende</a> ";
}
?>
$CurrentCounter = 12; // Hoogste bestaand ID, nieuwste ID.
$CurrentID = 12;
$NextID = $CurrentID + 1;
$PreviousID = $CurrentID - 1;
if ($id > 0) {
echo "<a href=\"nieuws.php?id=".$PreviousID."\">Vorige</a> ";
}
if ($id < $CurrentCounter) {
echo "<a href=\"nieuws.php?id=".$NextID."\">Volgende</a> ";
}
?>
Bovenstaande werkt dus ook niet optimaal, omdat het kan zijn dat de echt volgende ID of vorige ID misschien wel 3 hoger of lager dan het huidige ID is. Wanneer rij met ID 13 uit de DB is verwijderd, werkt bovenstaande script ook niet goed.
dan zou je iets met de foreach moeten doen..
verder zou ik het eens proberen als je de 2 volgende nieuws items ophaalt en die probeer weer te geven..
werkt dat wel ??
SELECT * FROM tabelnaam WHERE id < $huidig_id LIMIT 1
en
SELECT * FROM tabelnaam WHERE id > $huidig_id LIMIT 1
Edit: Nog wel even een ORDER BY er tussen fietsen, anders wordt het niks...
Gewijzigd op 01/01/1970 01:00:00 door Frank -