Ja goed Sven zo kunnen we nog wel even doorgaan. Om jou een juist antwoord/advies te kunnen geven hebben we soms wat meer informatie nodig. Daarom is het van belang dat het voor ons duidelijk wordt wat je precies wilt bereiken. Wil je één record op een pagina tonen en alvast een idee geven van wat het volgende record is?
Dan zou je LIMIT kunnen gebruiken in je query:
LIMIT 0, 2 // eerste twee records: eerste is degene die je laat zien, de tweede is de volgende
LIMIT 1, 2 // tweede en derde record.
LIMIT 2, 2 // derde en vierde record.
LIMIT 3, 2 // vierde en vijfde record.
Ja goed Sven zo kunnen we nog wel even doorgaan. Om jou een juist antwoord/advies te kunnen geven hebben we soms wat meer informatie nodig. Daarom is het van belang dat het voor ons duidelijk wordt wat je precies wilt bereiken. Wil je één record op een pagina tonen en alvast een idee geven van wat het volgende record is?
Dan zou je LIMIT kunnen gebruiken in je query:
LIMIT 0, 2 // eerste twee records: eerste is degene die je laat zien, de tweede is de volgende
LIMIT 1, 2 // tweede en derde record.
LIMIT 2, 2 // derde en vierde record.
LIMIT 3, 2 // vierde en vijfde record.
Nee kijk. Dit voorbeeld toont het vorige en huidige resultaat:
$objPDO = new clsPDO();
$objStmt = $objPDO->prepare('SELECT * FROM songhistory');
if($objStmt->execute())
{
$strPrevRow = '';
while($r = $objStmt->fetchObject())
{
if($strPrevRow != '')
echo('Vorig record is: '.$strPrevRow.'<br>');
echo('Huidig record is: '.$r['songtitle'].'<br><br>');
$strPrevRow = $r['songtitle'];
}
}
Maar nu wil ik ook de VOLGENDE van de loop gebruiken voor een handeling.
Dit heb ik nodig voor een songhistory class, als ik moet gaan uitleggen waarom ben ik wel even bezig, iets met vergelijken e.d. (Als de volgende hetzelfde is moet hij een handeling overslaan).
Maar ik denk dat zoiets als onderstaande code zou kunnen werken (zo uit mijn hoofd, dus kan fouten bevatten). Anders zou je eventueel nog SQL JOINS kunnen werken om het voor elkaar te krijgen maar denk dat dit eerst even makkelijker is.
Maar ik denk dat zoiets als onderstaande code zou kunnen werken (zo uit mijn hoofd, dus kan fouten bevatten). Anders zou je eventueel nog SQL JOINS kunnen werken om het voor elkaar te krijgen maar denk dat dit eerst even makkelijker is.
Het eenvoudigst lijkt me om een fetchAll() te doen. Je hebt dan je complete resultset in een array en dan is het een eitje om te kijken wat er in het volgende record zit.
Het nadeel is dat het wel meer geheugen kost, dus het hangt een beetje af van het aantal records en de recordgrootte of het handig is om dit te doen. Uiteraard kun je dat altijd zelf inperken door een LIMIT op te nemen in je query.