1

我正在尝试使用 mysql_num_rows 将我的查询结果拆分为页面(通过将结果除以十),但现在无法编写页码前端脚本。

所以我希望它看起来像: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

4 回答 4

2

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 />";
}
于 2012-06-26T11:06:16.047 回答
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 偏移量}]

你的 sql 必须是这样的:

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

对于$page=1-> 限制 0,9 对于$page=2-> 限制 10,19 ...

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

for($i=1;$i<=$pageno;$i++){
     echo "<a href=\"page_with_results.php?page=".$i·"\">".$i."</a>";
}
于 2012-06-26T11:05:47.530 回答
0

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

有关更多信息,请单击http://www.w3schools.com/php/func_mysql_num_rows.asp

于 2012-06-26T11:06:47.093 回答
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
}
}
于 2012-06-26T11:12:55.117 回答