2012-12-05 67 views
0

我已经建立了基于本网站http://tuts.wtfdiary.com/2012/06/simple-pagination-using-php-with-css.html分页返回不正确的数量

我稍微改变它,但它给我一点点麻烦在分页脚本。如果结果分散在40多个条目中,则它应该是每页10个,因此理论上它应该显示5个页面?但很多时候它会展示更多。

有人会直接指出我的意思吗?我的代码是下面....

谢谢你们:)

<?php 

//include ("db.php"); 
include_once 'header.php'; 

$ddoption=''; 

if (isset($_GET['searchid'])){ 
$searchid = $_GET['searchid']; 
} 
//$result=mysql_query("select count(*) from product"); 
$result=mysql_query("select count(*) from product WHERE (title OR description LIKE '%".$searchid."%')OR(title ='".$searchid."') OR(description='".$searchid."')"); 
$row=mysql_fetch_row($result); 
$tr=$row[0]; 
$rpp=10; 
$pn=1; 
$searchid = ''; 


if (isset($_GET['searchid'])){ 
$searchid = $_GET['searchid']; 
} 

if(isset($_GET['pn'])) 
{ 
    $pn=$_GET['pn']; 
} 

$oldtp=($tr/$rpp); 

$tp=round($oldtp); 

if($tr%$rpp>0) 
{ 
    $tp++; 
} 
$from=(($pn-1)*$rpp)/*+1*/; 
$to=($pn)*($rpp)-1; 
//$result=mysql_query("SELECT * from product WHERE productid between $from AND $to"); 


//$result=mysql_query("SELECT * FROM product WHERE productid between $from AND $to AND title OR description LIKE '%".$id."%'"); 
echo "<h1> Results from ". $from." to ".$to. "</h1>"; 

if(isset($_GET['option'])){ 
$ddoption = $_GET['option']; 
if($ddoption=="both"){ 
$result=mysql_query("SELECT * FROM product WHERE (title LIKE '%".$searchid."%')OR (description LIKE '%".$searchid."%') OR(title ='".$searchid."') OR(description='".$searchid."') ORDER BY productid DESC LIMIT $from,10"); 
} 
else if($ddoption=="title"){ 
$result=mysql_query("SELECT * FROM product WHERE (title LIKE '%".$searchid."%')OR(title ='".$searchid."') ORDER BY productid DESC LIMIT $from,10"); 
} 
else{ 
$result=mysql_query("SELECT * FROM product WHERE (description LIKE '%".$searchid."%')OR(description='".$searchid."') ORDER BY productid DESC LIMIT $from,10"); 
} 
} 
echo "<table>"; 


while($row=mysql_fetch_array($result)) 
{ 

echo '<tr><td><a href="item.php?id='. $row['productid'].'">'.'<img src="'.$row['image1'].'" alt="'.$row['title'].'" height="100" width="100"/></a></td>'; 
     echo '<td><a href="item.php?id='. $row['productid'].'">'.$row['title'].'</a></td></tr>'; 

} 

echo "</table>"; 
echo "<ul id='pages'>"; 
for($i=1;$i<=$tp;$i++) 
{ 
echo "<li><a href='search.php?pn=$i&searchid=$searchid&amp;option=$ddoption'>Page $i</a></li>"; 
} 
echo "</ul>"; 


echo <<<_END 

</body> 
</html> 


_END; 

?> 
+0

offtopic:不使用'mysql_'。它已被弃用。使用**'PDO' **并准备好陈述。让这个世界变得更好:) – Stranger

回答

1

您可以在一个行数页面:

$tp = ceil($tr/$rpp); 

,而不是

$oldtp=($tr/$rpp); 

$tp=round($oldtp); 

if($tr%$rpp>0) 
{ 
    $tp++; 
} 

的可能原因不同数量的行是您计算行数和替换它们时查询不同的行数。

+0

Woops忘记编辑这一轮了。试图找出它为什么这样做... – kidshenlong

+0

就是这样!非常感谢。我忘了更改上面的查询!谢谢 – kidshenlong