使用mysql_num_rows显示页码

时间:2012-06-26 10:47:55

标签: php mysql increment

我正在尝试使用mysql_num_rows然后将查询结果拆分为页面(通过将结果除以10),但现在编写页码前端脚本时遇到了麻烦。

所以我希望它看起来像:1 2 3 4 5 6等

这将基于:

$num = mysql_num_rows($sql);
$pageno = $num/10; // this will give the number of pages

那么我想运行结果,以便动态填充

<a href="page.php?page=$pageno">$pageno</a>

所以基本上需要自动增加页码。


我使用了你的答案的组合,发现这对我有用

for ($x=0; $x < $division; $x++) {
if($x=0){
$x=1;
}else{
}
echo "<div class='pageno'><a href='viewlist.php?page=$x&$stringVAR' >" . ($x+1) . "</a></div>"; 

} 

4 个答案:

答案 0 :(得分:0)

首先你需要总页数

您的$pageno是总页数

您需要一个页面控制变量:

$page=$_GET['page'];
if $page=="" then
   $page=1;
end if

然后你需要使用LIMIT(http://dev.mysql.com/doc/refman/5.0/es/select.html)分割你的sql结果

  

[LIMIT {[offset,] row_count | row_count OFFSET offset}]

你的sql必须像:

$sql="select [..] from [...] where [...] LIMIT ".(10*$page-1).",".(10*$page)-1;

代表$page=1 - &gt;限制0,9 $page=2 - &gt;限制10,19 ...

把1 2 3 4 5 ......现在很容易

for($i=1;$i<=$pageno;$i++){
     echo "<a href=\"page_with_results.php?page=".$i·"\">".$i."</a>";
}

答案 1 :(得分:0)

biziclop建议您应该使用行数而不是每次都获取所有记录是正确的,但运行单独的查询以获取计数是不可取的:

$rows_per_page=30;
$current_page=(integer)$_GET['page'];
$offset=$current_page*$rows_per_page

$qry="SELECT FOUND_ROWS() as totrows, a.* FROM a_table LIMIT $offset,$rows_per_page";
$res=mysql_query($qry);
while ($r=mysql_fetch_assoc($res)) {
     if (!$tot_rows) {
         $tot_rows=r['totrows'];
     }
     // show row data
     print....
}
print "Showing rows " . $offset . " to " . ($offset+$rows_per_page) . " of $tot_rows<br/>\n";
$pages = ceil($tot_rows / $rows_per_page);
for ($x=0; $x<$pages; $x++) {
  print "<a href='$url?page=$x'>" . ($x+1) . "</a>&nbsp;<br />";
}

答案 2 :(得分:0)

mysql_num_rows()函数返回no。对于以下查询的行,$ pageno = $ num / 10只是将no除。由10返回的行。

了解更多信息,请点击http://www.w3schools.com/php/func_mysql_num_rows.asp

答案 3 :(得分:0)

您的寻呼代码如下:

    if($numrows!=0)
       {
           if($_REQUEST['rowsperpage'])
           {
                if(!isDigit($_REQUEST['rowsperpage']))
                    $rowsPerPage=10;
                else
                            $rowsPerPage =$_REQUEST['rowsperpage'];
           }
           else
           {
              $rowsPerPage =10;
           }
            $pageNum = 1;
            $mxpg=ceil($numrows/$rowsPerPage);
           if($_REQUEST['pageNum']=='undefined' || $_REQUEST['pageNum']=='' || $_REQUEST['pageNum']==0 || ($_REQUEST['pageNum']>$mxpg) )
            {
                $pageNum=1;
            }
            else
            {
                if(isDigit($_REQUEST['pageNum']))
                    $pageNum=$_REQUEST['pageNum'];
                else
                    $pageNum=1;
            }

            $offset = ($pageNum - 1) * $rowsPerPage;

            $sqlal = $SQL_QUERY." limit $offset,$rowsPerPage;";

            $resal=mysql_query($sqlal);
            if(db_num_rows($resal)==0 && $pageNum > 1)
            {
                    $pageNum = $pageNum - 1;
                    $offset = ($pageNum - 1) * $rowsPerPage;
                   $sqlal = $SQL_QUERY." limit $offset,$rowsPerPage;";
                    $resal=mysql_query($sqlal);
            }

            $maxpage=ceil($numrows/$rowsPerPage);
            $othrparameter="rowsperpage=$rowsPerPage&frmdate=$frmdate&todate=$todate&srchcity=$srchcity"; //serch criteria if any
            $tmpnavi=getnevigationhtml($pageNum,$maxpage,$file,$othrparameter);

            $onlynum='"Numbers"';

            $resultal = mysql_query($sqlal);
       }

在PHP表单上显示如下:

 <table width='100%'><tr>
<td align='left' >Rows  : <input type='text' name='rowsperpage' id='rowsperpage'  size='5' value='<?php echo $rowsPerPage;?>' onkeypress='return inputLimiter(event,<?php echo$onlynum;?>)' >&nbsp;
Go To Page: <input type='text' name='pageNum' id='pageNum' size='5' value='<?php echo $pageNum;?>' onkeypress='return inputLimiter(event,<?php echo$onlynum;?>)' >&nbsp;

<input type='submit' name='show' id='show' value='Show' >
</td>
<td align='left'><?php echo "Total :".$numrows;?></td>
<td align='right'><?php echo $tmpnavi; ?></td></tr></table>

您的记录提取将如下所示:

if($numrows>0){
        while($res_image = mysql_fetch_array($resultal)){
//Your operations
}
}