PHP beginner |
|
Ik stuur geen uitgewerkte code, omdat dit niet relevant is.
Ik pas paginering toe, bij bijvoorbeeld gastenboeken, etc...
Wat ik doe is alle items opvragen uit de database (zonder limit). (Bijv. SELECT * FROM `table` ORDER BY `date_in`).
Deze items zet in in een array.
<?php
$sSql = "SELECT * FROM `tabel` ORDER BY `date_in`";
$rResult = mysql_query($sSql) or die (mysql_error());
$aResult = array();
while($aTmp = mysql_fetch_array($rResult)) {
$aResult[] = $aTmp;
}
$iItemCount = count($aResult); //aantal items gevonden in db. http://php.net/mysql_affected_rows()
$iItemsOnPage = 10; //aantal items per pagina
$aItemSlicedArray = array_slice($aResult, 0, $iItemsOnPage);
$iPagesCount = count($aItemSlicedArray); //stel dat je 20 items in DB hebt. Dan is de waarde van iPagesCount 2! (dus 2 pagina's).
$iPage =0;
if(isset($_GET['page'])) {
if(is_numeric($_GET['page'])) {
$iPage = $_GET['page'];
} else {
//hanlde hack attempt.
}
}
}
echo json_encode($aItemSlicedArray[$iPage]);
?>
<?php $sSql = "SELECT * FROM `tabel` ORDER BY `date_in`"; $aResult[] = $aTmp; } $iItemCount = count($aResult); //aantal items gevonden in db. http://php.net/mysql_affected_rows() $iItemsOnPage = 10; //aantal items per pagina $aItemSlicedArray = array_slice($aResult, 0, $iItemsOnPage); $iPagesCount = count($aItemSlicedArray); //stel dat je 20 items in DB hebt. Dan is de waarde van iPagesCount 2! (dus 2 pagina's). $iPage =0; if(isset($_GET['page'])) { $iPage = $_GET['page']; } else { //hanlde hack attempt. } } } echo json_encode ($aItemSlicedArray[$iPage]); ?>
http://php.net/array_slice
http://php.net/json_encode
http://jquery.com/
Vervolgens echo ik met json_encode een pagina array op het scherm, die te doorlopen is met jQuery, mootools, EXTJS of iedere willekeurige andere taal die kan werken met json.
Je kan natuurlijk ook gebruik maken van deze oplossing zonder JSON_ENCODE.
Ik gebruik json encode zodat ik gebruik kan maken van ajax en netjes mooie blokjes array kan laden op de achtergrond.
Ik hoop dat ik je hiermee op weg heb geholpen.
Met vriendelijke groet,
Wesley van der Meer |