选择时,表格分页不会转到其他页面

时间:2015-05-30 05:48:30

标签: php html mysqli pagination

我在一张桌子上添加了分页,这是我一段时间后创建的,我从来没有能够让它正常工作。

表限制有效,但就是这样。如果我选择“First,Last或页码”,它只会重新加载页面,但不会显示新页面。

如果我将页面限制设置为较低的数字(如5)并选择“最后一页”,则在页面加载时显示= 1,就像它不知道还有其他页面一样。

<?php
$con = mysqli_connect("localhost","root","","bfb");
$per_page=20;

    if(isset($_POST["page"])) {

    $page = $_POST["page"];
    }
    else {
        $page = 1;
    }

//Page will start from 0 and multiply per page
    $start_from = ($page-1)*$per_page;

//Selecting the data from the table but with limit
    $query = "SELECT * FROM orders LIMIT $start_from, $per_page";
    $result = mysqli_query($con, $query);
?>

<table class="tableproduct">
    <tr>
        <th class="thproduct">Order ID</th>
        <th class="thproduct">Customer Name</th>
        <th class="thproduct">Product</th>
        <th class="thproduct">Total Price</th>
        <th class="thproduct"></th>
        <th class="thproduct"></th>
    </tr>
  <?php
      if( $result ){    
         while($row = mysqli_fetch_assoc($result)) :
   ?>
 <form method="POST" action="orderhistory.php">
    <tr>
        <td class="tdproduct"><?php echo $row['order_id']; ?> </td>
        <td class="tdproduct"><?php echo $row['customer_name']; ?> </td> 
        <td class="tdproduct"><?php echo $row['product_name']; ?> </td>
        <td class="tdproduct"><?php echo $row['total_price']; ?> </td>
        <td class="tdproduct"><a href='editorderhistory.php?id=<?php echo $row['id']; ?>'>EDIT</a></td>
            <input type="hidden" name="product_id" value="<? echo $row['id']; ?>"/>
        <td class="tdproduct"><input name="delete" type="submit" value="DELETE "/></td>
    </tr>
</form>
<?php   
    endwhile; 
    }
?>
                    </table>
<?php
 //Count the total records
if ($result != false) {
$total_records = mysqli_num_rows($result);
    if ($total_records == 0) {
        echo 'No results founds.';
    }
}

//Using ceil function to divide the total records on per page
$total_pages = ceil($total_records /$per_page);
?>
<span class="spandarkblue">
<?php
//Going to first page
echo "<center><a href='orderhistory.php?page=1'>".'First Page'."</a>   ";

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

echo "<a href='orderhistory.php?page=".$i."'>".$i."</a>   ";
};
// Going to last page
echo "<a href='orderhistory.php?page=$total_pages'>".'Last Page'."</a></center>";
?>

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

在您的代码中找到以下问题。

1)您正在尝试使用POST从URL获取页面值,您需要GET方法从URl获取值。使用POST返回空值,因此ndx = arr.index { |h| h[:status] == 3 } #=> 0 if ndx arr.each { |h| h[:status] = 1 } arr[ndx][:status] = 2 end arr 值始终设置为1

因此请使用$page代替$_GET["page"]

2)您正在考虑通过考虑正在执行的查询的行数来准备分页。但是,当您添加$_POST["page"]时,您的limits始终等于$ per_page值或更低,只会产生一个页码。

使用以下代码生成pazination

$total_records

而不是代码

$query1 = "SELECT count(*) as totalRecords FROM orders";
$result1 = mysqli_query($con, $query1);
if ($result1) {
      $row1 = mysqli_fetch_assoc($result1);
      $total_records = $row1['totalRecords'];
     if ($total_records == 0) {
         echo 'No results founds.';
      }
}

希望它对你有所帮助。

答案 1 :(得分:0)

您需要获取所有数据以了解您的记录总数,然后在for()循环中仅显示所需数据,因此请从您的LIMIT $start, $per_page中删除while()查询,在此节点中,您将始终拥有20个或更少的结果

$index = 0; while($row = mysqli_fetch_assoc($result)) { $ordID[$index] = $row["order_id"]; // The rest of your data... $index++; // Increment the index } 中保存数组,如下所示:

for($i = (($page-1)*$perPage); $i < min(($page*$perPage), $total); $i++) {
    echo $orderID[$i];
    // And so on...
}

然后你只显示所需的数据:

min()

new Station().where({ id: req.params.id }).fetch({ withRelated: [{ 'routes': function(qb) { qb.select('routes.id', 'routes.code'); } }] }).then(function(result) { res.json(result.toJSON()); }); 函数返回两个变量之间的最低值,这样在最后一页中,如果您有17个产品而不是20个,则不会出现错误。