Testa att kommentera bort tredje raden i funktionen och se vad resultatet blir.
function getStartOffset() {
$offset = $this->ResultsPerPage * ($this->CurrentPage - 1);
//if($offset != 0) { $offset++; }
return $offset;
}
1 svar · 1 007 visningar · startad av Asa
Använder denna paging:
http://www.phpbuilder.com/board/showthread.php?t=10283679
nån som vill testa så kanske ta den koden eller gör om min.
Skumt är detta:
Har satt så att det visar 25 inlägg och då syns inte inlägg #26 på sidan 2 utan den börjar med inlägg #27. Samma sak sen på sidan 3.
Nån som ser varför?!
<?php
/*
EXAMPLE:
include($_SERVER["DOCUMENT_ROOT"] . "/classes/paging.class.php");
$paging = new PagedResults();
$paging->TotalResults = 500; //This is how many results to page through.
//mysql_num_rows($query) would just fine!
print_p($paging->InfoArray());
*/
class PagedResults {
/* These are defaults */
var $TotalResults;
var $CurrentPage = 1;
var $PageVarName = "page";
var $ResultsPerPage = 20;
var $LinksPerPage = 10;
function InfoArray() {
$this->TotalPages = $this->getTotalPages();
$this->CurrentPage = $this->getCurrentPage();
$this->ResultArray = array(
"PREV_PAGE" => $this->getPrevPage(),
"NEXT_PAGE" => $this->getNextPage(),
"CURRENT_PAGE" => $this->CurrentPage,
"TOTAL_PAGES" => $this->TotalPages,
"TOTAL_RESULTS" => $this->TotalResults,
"PAGE_NUMBERS" => $this->getNumbers(),
"MYSQL_LIMIT1" => $this->getStartOffset(),
"MYSQL_LIMIT2" => $this->ResultsPerPage,
"START_OFFSET" => $this->getStartOffset(),
"END_OFFSET" => $this->getEndOffset(),
"RESULTS_PER_PAGE" => $this->ResultsPerPage,
);
return $this->ResultArray;
}
/* Start information functions */
function getTotalPages() {
/* Make sure we don't devide by zero */
if($this->TotalResults != 0 && $this->ResultsPerPage != 0) {
$result = ceil($this->TotalResults / $this->ResultsPerPage);
}
/* If 0, make it 1 page */
if(isset($result) && $result == 0) {
return 1;
} else {
return $result;
}
}
function getStartOffset() {
$offset = $this->ResultsPerPage * ($this->CurrentPage - 1);
if($offset != 0) { $offset++; }
return $offset;
}
function getEndOffset() {
if($this->getStartOffset() > ($this->TotalResults - $this->ResultsPerPage)) {
$offset = $this->TotalResults;
} elseif($this->getStartOffset() != 0) {
$offset = $this->getStartOffset() + $this->ResultsPerPage - 1;
} else {
$offset = $this->ResultsPerPage;
}
return $offset;
}
function getCurrentPage() {
if(isset($_GET[$this->PageVarName])) {
return $_GET[$this->PageVarName];
} else {
return $this->CurrentPage;
}
}
function getPrevPage() {
if($this->CurrentPage > 1) {
return $this->CurrentPage - 1;
} else {
return false;
}
}
function getNextPage() {
if($this->CurrentPage < $this->TotalPages) {
return $this->CurrentPage + 1;
} else {
return false;
}
}
function getStartNumber() {
$links_per_page_half = $this->LinksPerPage / 2;
/* See if curpage is less than half links per page */
if($this->CurrentPage <= $links_per_page_half || $this->TotalPages <= $this->LinksPerPage) {
return 1;
/* See if curpage is greater than TotalPages minus Half links per page */
} elseif($this->CurrentPage >= ($this->TotalPages - $links_per_page_half)) {
return $this->TotalPages - $this->LinksPerPage + 1;
} else {
return $this->CurrentPage - $links_per_page_half;
}
}
function getEndNumber() {
if($this->TotalPages < $this->LinksPerPage) {
return $this->TotalPages;
} else {
return $this->getStartNumber() + $this->LinksPerPage - 1;
}
}
function getNumbers() {
for($i=$this->getStartNumber(); $i<=$this->getEndNumber(); $i++) {
$numbers[] = $i;
}
return $numbers;
}
}
?>
<?php
$Paging = new PagedResults();
/* This is required in order for the whole thing to work! */
//$Paging->TotalResults = 13283;
$Paging->TotalResults = mysql_num_rows(mysql_query("Select * From cms_forum"));
/* If you want to change options, do so like this INSTEAD of changing them directly in the class! */
$Paging->ResultsPerPage = 25;
$Paging->LinksPerPage = 15;
$Paging->PageVarName = "sida";
/* Get our array of valuable paging information! */
$InfoArray = $Paging->InfoArray();
//echo $InfoArray["START_OFFSET"];
//echo "SELECT * FROM cms_forum Order by datum desc, torgID desc LIMIT ".$InfoArray["MYSQL_LIMIT1"].", ".$InfoArray["MYSQL_LIMIT2"];
$sql = mysql_query("SELECT * FROM cms_forum Order by datum desc, torgID desc LIMIT ".$InfoArray["MYSQL_LIMIT1"].", ".$InfoArray["MYSQL_LIMIT2"]) or die(mysql_error());
if (mysql_affected_rows() == 0){?>
<p>Inga inlägg i forumet...</p>
<?php
}else{
while ($RS = mysql_fetch_array($sql)){?>
<span class="date_post"><?php echo dtLeft($RS['datum']);?> - <?php echo tidRight($RS['datum']);?></span><br />
<span class="post"><?php echo $RS['annons'];?></span>
<div class="post_end">
<div class="post_end_first"><strong>Skrivet av: </strong><span class="theader"><?php echo $RS['namn'];?></span>
<?php if(isset($RS['losenord'])){?>
- <a class="theader" href="mailto:<?php echo $RS['email'];?>"><span><?php echo $RS['email'];?></span></a>
<?php }else{?>
- <a class="theader" href="mailto:<?php echo $RS['email'];?>"><span><?php echo $RS['email'];?></span></a>
<?php }?></div>
<div class="post_end_last">
<strong>IP: </strong><a class="theader" href="http://www.ip-adress.com/whois/<?php echo $RS['ip'];?>" target="_blank"><span><?php echo $RS['ip'];?></span></a></div>
</div>
<?php
$y++;
}
if($InfoArray["TOTAL_PAGES"] > 1){
/* Sidnavigeringen visas här: */
echo '<div class="pagination">';
/* Print out our prev link */
if($InfoArray["PREV_PAGE"]) {
echo "<a href='?sid=".$_GET['sid']."&sida=1'><<</a> ";
echo "<a href='?sid=".$_GET['sid']."&sida=".round($InfoArray["PREV_PAGE"],0)."'><</a> ";
} else {
echo "";
}
/* Example of how to print our number links! */
for($i=0; $i<count($InfoArray["PAGE_NUMBERS"]); $i++) {
if($InfoArray["CURRENT_PAGE"] == $InfoArray["PAGE_NUMBERS"][$i]) {
echo "<a href='?sid=".$_GET['sid']."&sida=".round($InfoArray["PAGE_NUMBERS"][$i],0)."' class='current'>".round($InfoArray["PAGE_NUMBERS"][$i],0)."</a> ";
} else {
echo "<a href='?sid=".$_GET['sid']."&sida=".round($InfoArray["PAGE_NUMBERS"][$i],0)."' class='inactive'>".round($InfoArray["PAGE_NUMBERS"][$i],0)."</a> ";
}
}
/* Print out our next link */
if($InfoArray["NEXT_PAGE"]) {
echo " <a href='?sid=".$_GET['sid']."&sida=".round($InfoArray["NEXT_PAGE"],0)."'>></a>";
echo " <a href='?sid=".$_GET['sid']."&sida=".$InfoArray["TOTAL_PAGES"]."'>>></a> ";
} else {
echo "";
}
echo '</div>';
}
}?>
Testa att kommentera bort tredje raden i funktionen och se vad resultatet blir.
function getStartOffset() {
$offset = $this->ResultsPerPage * ($this->CurrentPage - 1);
//if($offset != 0) { $offset++; }
return $offset;
}