【问题标题】:Row number is not displaying first and last row number in paginated table in php行号未在php中的分页表中显示第一行和最后一行
【发布时间】:2017-08-29 19:50:20
【问题描述】:

我正在实施一个网站,管理员可以在其中维护库存。我在 html 表中显示数据库中的库存。我使用分页来每页显示 10 条记录。我希望当我在第 1 页时,它显示“显示总记录的 1-10”,当我在第 2 页时,它显示“显示总记录的 11-20”,反之亦然。 代码:

<?php          
                $link = mysql_connect("localhost", "root", "");
                mysql_select_db("login", $link);    
                $result = mysql_query("SELECT COUNT(*) FROM add_stock");
                $row = mysql_fetch_row($result);
                $num = $row[0];

                ?>
    <table align="center" border="0" id="myTable" class="table table-striped table-bordered table-list">
            <tr>
              <th>Sr.No</th>
              <th>Product Code</th>
              <th>Brand</th>
              <th>Price</th>
              <th>Gender</th>
              <th>Category</th>
              <th>Material</th>
              <th>Size</th>
              <th>Description</th>
              <th>Quantity</th>
              <th><b>Image</b></th>
              </tr> 
    $num_rec_per_page=10;

                    if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; }; 
                    $start_from = ($page-1) * $num_rec_per_page; 
                    $sql = "SELECT * FROM add_stock  ORDER BY id DESC LIMIT $start_from, $num_rec_per_page"; 
                    $rs_result = mysql_query ($sql); //run the query
                    $total_records = mysql_num_rows($rs_result);  //count number of records
                    $total_pages = ceil($total_records / $num_rec_per_page); 

                    $next_page = $page + 1;
                    $prev_page = $page - 1;
                     $i= $start_from;
                     $start=1;
                    while ($result=mysql_fetch_array($rs_result) )
                    {                
                    ?>
                    <tr>
                    <td><?php echo $i+$start; ?></td>
                    <td><?php echo $result['id']; ?></td>
                    <td><?php echo $result['brand_name']; ?></td>
                    <td><?php echo $result['price']; ?></td>
                    <td><?php echo $result['gender_name']; ?></td>
                    <td><?php echo $result['category_name']; ?></td>
                    <td><?php echo $result['material_name']; ?></td>
                    <td><?php echo $result['size_name']; ?></td>
                    <td><?php echo $result['dress_description']; ?></td>
                    <td><?php echo $result['dress_quantity']; ?></td>

                    <td><a href="javascript:window.open('<?php echo $result['image'] ?>','mypopuptitle', '_parent')" >View Image</a></td>
                  </tr>

                  <?php
                  $i++; 
                } ?>
                </table>
                 <?php
                    $sql = "SELECT * FROM add_stock"; 
                    $rs_result = mysql_query($sql); //run the query
                    $total_records = mysql_num_rows($rs_result);  //count number of records
                    $total_pages = ceil($total_records / $num_rec_per_page); 
                    ?> 
                    <div style="margin-left: 5px;">
                    <div class="pagination">
                    <?php
                    echo "<a href='viewstock.php?page=1'><b>&laquo;</b></a>";
                    if ($page==1) {
                    $page=1;
                    }
                    else{
                    echo "<a href='viewstock.php?page=$prev_page'><b>Prev</b></a>"; }
                    for ($i=1; $i<=$total_pages; $i++) {
                    echo "<a href='viewstock.php?page=".$i."'><b>".$i."</b></a>";
                    }
                    if ($page==$total_pages) {
                    $page=$total_pages;
                    }
                    else{
                    echo "<a href='viewstock.php?page=$next_page'><b>Next</b></a>"; }
                    echo "<a href='viewstock.php?page=$total_pages'><b>&raquo;</b></a> ";
                    ?> 
                    </div>
                    </div>

<p>Displaying <?php echo $start ?> - <?php echo $total_records ?>  of Records: <?php echo $num ?></p>

【问题讨论】:

  • 我希望它应该在段落标签中显示文本(即在表格标签之前的顶部),在第 1 页显示 1 - 10 条记录,当我在第 2 页时,它应该显示文本显示 11 - 20 条记录
  • 使用mysql_query?还是在 2017 年?它已被弃用多年,并在 PHP7 中完全删除,主要是由于安全问题。例如,一个主要问题是它不允许您创建参数化查询和准备好的语句,因此,像您这样的代码非常容易受到 SQL 注入攻击,这些攻击可用于窃取、破坏或破坏您的数据。你真的应该切换到mysqliPDO a.s.a.p。 bobby-tables.com 对风险进行了解释,并提供了一些如何安全编写查询的示例。
  • 除了那个可怕的表演之外,您已经告诉我们您想要什么,但没有告诉我们代码的问题所在。它现在做什么?
  • 它不显示该文本它只显示记录总数但不显示总记录的 1-10
  • 好吧,那是因为您还没有编写任何可以做到这一点的代码。你真的尝试过吗?您只需要输出开始值和结束值(您必须知道,才能运行查询)。看起来您可能直到代码中的较低位置才计算这些值,在这种情况下,您可以将计算向上移动,以便在输出的必要部分使用它们。

标签: php html pagination


【解决方案1】:

这将起作用:

<p>Displaying <?php echo $start_from+1 ?> - <?php echo $start_from + $total_records ?> of Records: <?php echo $num ?></p>

只要你:

1) 将输出移到计算所需数字的代码下方

2) 不要在 SELECT * FROM add_stock 之后重复使用变量 $total_records。而是给这个变量的实例一个新名称,这样它就不会与早期版本混淆,这意味着不同的东西,并且是您的输出所需要的。

另请注意我对您的 SQL 注入漏洞的第一条评论,您应该尽快采取措施修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多