【问题标题】:php pagination, using sql server [closed]php分页,使用sql server [关闭]
【发布时间】:2015-02-17 11:33:55
【问题描述】:

所以,我是 php 开发的新手,我想用 php pdo 和 sql server 创建一个分页, 第一页效果很好,但分页中的其他页面不起作用 (对不起我的英语,我来自巴西)

遵循我的代码

<?php

require 'conn.php';
$pdo = dbConnect();

$limite = 10;

$pg = (isset($_GET['pg'])) ? (int)$_GET['pg'] : 1;

$inicio = ($pg * $limite) - $limite;


$sql = "SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY ID_USUARIO) as row FROM tbl_usuario) a WHERE row between ".$inicio." and ".$limite.""; 

try {

        $query = $pdo->prepare($sql);
        $query->execute();

        } catch (PDOexception $error_sql){

                echo 'Erro ao retornar os Dados.'.$error_sql->getMessage();
}

while($linha = $query->fetch(PDO::FETCH_ASSOC)){ ?>

                <?php 
                echo $linha['NOME'].'</br>'; 

                ?> 
<?php }


$sql_Total = 'SELECT ID_USUARIO FROM tbl_usuario';

try {
        $query_Total = $pdo->prepare($sql_Total);
        $query_Total->execute();
        $query_result = $query_Total->fetchAll(PDO::FETCH_ASSOC);
        $query_count =  $query_Total->rowCount(PDO::FETCH_ASSOC);


        $qtdPag = ceil($query_count/$limite);

        } catch (PDOexception $error_Total){

                echo 'Erro ao retornar os Dados. '.$error_Total->getMessage();

        }


        echo "<div class='relax h30'></div>";
        echo '<a href="teste?pg=1">PRIMEIRA PÁGINA</a>&nbsp;';
        echo '<ul id="paginacao">';
    echo '<li><a class="anterior" href="teste?pg=1">Anterior</a></li>';

        if($qtdPag > 1 && $pg <= $qtdPag){

                for($i = 1; $i <= $qtdPag; $i++){

                        if($i == $pg){

                                echo "<li><a class='ativo'>".$i."</a></li>";

                        } else {

                                echo "<li><a href='teste?pg=$i'>".$i."</a></li>";

                        }

                }

        }

        echo "<li><a class='proxima' href='teste?pg=$qtdPag'>Próxima</a></li>";

?>

【问题讨论】:

  • 所以我们应该自己猜怎么着not work?或者你有一些例子?
  • 这里看不到任何 SQL 注入,但是由于您使用的是 PDO,因此使用参数绑定将是一个非常好的主意,而且非常容易。
  • @u_mulder 我喜欢知道如何进行分页
  • 将问题分解为更小的问题。对于第 1、2、3 页等,$inicio 的值是多少?然后计算出你会得到什么查询,并直接在你的数据库控制台中运行它。结果如您所愿吗?
  • 右边有很多问题-----&gt; 涉及“分页... SQL Server”。我希望你会发现这些有用吗? This one in particular.

标签: php sql sql-server pdo pagination


【解决方案1】:

您正在查找 $inicio 和 $limite 之间的行。在第 1 页上,这意味着我们将获得第 0 到第 10 行,这是正确的。然而,第 2 页将是第 10 到第 10 行,这是没有的。

您应该创建一个新变量来确定最后一行的编号,例如:

$lastRow = $inicio + $limite;

然后就是:

WHERE row between ".$inicio." and ".$lastRow.";

【讨论】:

  • 代码重复最后一行,但谢谢你这会很有用
  • 您确实意识到您标记为答案的帖子与我说的几乎完全相同,对吧?
  • 但两个答案似乎是正确的。我不知道我在这个网站有什么新东西,对不起
  • 被标记为答案并没有真正困扰我,只是您的评论看起来好像这不是您的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
相关资源
最近更新 更多