【问题标题】:PHP question paginationPHP问题分页
【发布时间】:2009-07-26 11:59:41
【问题描述】:

如何才能使我所在的页面无法点击?

$page = (isset($_GET['page']) && is_numeric($_GET['page']) ? (int) $_GET['page'] : 1);
$limit = ($page - 1) * 15;
$sql = mysql_query("SELECT * FROM log LIMIT $limit, 15");
$totalres = mysql_result(mysql_query("SELECT COUNT(id) AS tot FROM log"),0);
$totalpages = ceil($totalres / 15);

for ($i = 1; $i <= $totalpages; $i++) {
  $pagination .= "<a href=\"$_SERVER[PHP_SELF]?page=$i\">$i</a> ";
}

<p><?php echo $pagination ?></p>

【问题讨论】:

标签: php pagination


【解决方案1】:
if ($i == $page)
  $pagination .= "$i ";
else
  $pagination .= "<a href=\"$_SERVER[PHP_SELF]?page=$i\">$i</a> ";

【讨论】:

  • 最好使用前面定义的$page 变量,而不是可能未设置或无效的$_GET['page']
【解决方案2】:

只需要修改for循环来检查当前页面是什么。

for ($i = 1; $i <= $totalpages; $i++) 
{
    if ($i != $page)
        $pagination .= "<a href=\"$_SERVER[PHP_SELF]?page=$i\">$i</a> ";
    else
        $pagination .= " " . $i . " ";
}

【讨论】:

  • 你需要把$i == $page改成!=或者交换两行代码。
  • 西部最快的枪......没那么多;)......谢谢
  • 我知道这个话题很老了,但我想知道页面是否上升到 100 101 等等?你怎么能把它改成这样:1 2 3 ... 100 101?
  • @blackbull77 如果我有时间我会更新我的答案。
  • @blackbull77:我在我的答案here 中发布了一种更优雅的生成页面链接的方法。
【解决方案3】:

for 内有一个if

if ( $i != $page) {
    //Your code.
} 
else 
{ 
    //Same page.
    $pagination .= "&nbsp;" . $page . "&nbsp;"
}

【讨论】:

    【解决方案4】:

    @RedBlueThing 我很快就看到了你的帖子,我得到了它的工作,虽然我从另一个 stackoverflow question with a little modifying of the code 得到了这个想法。

    <?php
    echo "<section>";
    
    $link = mysqli_connect("localhost", "root", "root", "user_db");
    
    $page = (isset($_GET['page']) && is_numeric($_GET['page']) ? (int) $_GET['page'] : 1);
    
    
    $offset = 4;
    $x = 5;
    
    $limit = ($page - 1) * $offset; 
    
    $sql = mysqli_query($link,"SELECT * FROM cfp_blogs;");
    $totalres = mysqli_num_rows($sql);
    $totalpages = ceil($totalres / $offset);
    
        $stmt = mysqli_query($link, "SELECT * FROM blogs LIMIT $limit, $offset;");
            if($stmt->num_rows > 0){
                while($obj = mysqli_fetch_object($stmt)) { 
                    echo "<h1>$obj->title</h1>";
                    echo "<p>$obj->content</p>";
                    $stmt2 = $link->query("SELECT COUNT(id) AS Tot FROM blogs");
                    if($stmt2->num_rows > 0){
    
                    while ($obj2 = $stmt2->fetch_object()){
                            echo "<p>($obj2->Tot)</p>";
                        }
                    }
                    else
                    echo "<p>(0)</p>";
                    $stmt2->close();
    
                }
            }
            else {
                echo "<section class='error'><h1>There was a problem with the database.</h1></section>";
            }
    
        mysqli_free_result($stmt);
    
    for ($i = $page - $x; $i < $page; $i++)
    {
        if ($i >= 1) { 
            $pagination .= "<a href=\"$_SERVER[PHP_SELF]?page=$i\">$i</a> ";
        }
    }
    
    $pagination .= " " . $i . " ";
    
    for ($i = $page + 1; $i <= $page + $x; $i++)
    {
        if ($i <= $totalpages) {
            $pagination .= "<a href=\"$_SERVER[PHP_SELF]?page=$i\">$i</a> ";
        }
    
    }
    
    /*for ($i = 1; $i <= $totalpages; $i++) 
    {
        if ($i != $page){
            $pagination .= "<a href=\"$_SERVER[PHP_SELF]?page=$i\">$i</a> ";
        }
        else{
            $pagination .= " " . $i . " ";
        }
    }*/
    
    mysqli_close($link);
    
    echo $pagination;
    
    echo "</section>";
    ?>
    

    我唯一无法获得的是“下一个”或“上一个”按钮。如果有人能够完成添加这些按钮的任务,请试一试。其他方面......享受...... :) 这是我回馈 stackoverflow 社区以帮助我的方式。

    【讨论】:

      猜你喜欢
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多