在PHP中使用多个复选框进行分页

时间:2016-05-14 10:36:54

标签: php

美好的一天 我有一个html表,我在其上使用分页,以便只显示一定数量的项目。问题是我需要选择多个复选框,并且适用于单个页面,但我需要在页面之间工作。例如,在第1页上,您选择了3个项目,在下一页中您选择了5个项目,当POST发生时,我需要将所有这些项目放在一个位置,以便我可以将它们存储在数据库中。

我可以在会话中存储数据,然后在选择页面时,我从会话中获取该页面的数据,并将会话中的所有项目标记为检查,并从会话中设置数量。我想这可行,但我不喜欢。所以我很感兴趣,如果在PHP中有其他方法可以做到这一点。

以下是一些代码:

<?php  
$num_rec_per_page = 10;
if (isset($_GET["page"])) {
$page = $_GET["page"];
} else {
$page = 1;
};

$start_from = ($page - 1) * $num_rec_per_page;
$allProductsForPaging = GetAllProductsForPaging($start_from, $num_rec_per_page);
?>

<body>   
<form action="controllers/newOrderDetails.php" method="POST">
    <div><label>Datum dostave:</label><input type="text" id="Date" name="Date" required="required"></div>
    <table id="Products">
        <thead>
            <tr>
                <th><input type="checkbox" id="CheckAll"  /></th>
                <th>Naziv proizvoda</th>
                <th>Količina</th>
                <th>Cijena</th>
            </tr>
        </thead>
        <tbody>
<?php
while ($row = $allProductsForPaging->fetch_assoc()) {
?> 
                <tr>
                    <td><input type="checkbox"  class="ProductCheckBox" name="Product[]" value="<?php echo $row["ID"] . '|' . $row["ProductNameCroatian"] . '|' . $row["PriceInHRK"] . '|' . $row["PriceInEUR"]; ?>" /></td>  
                    <td><?php echo $row["ProductNameCroatian"]; ?></td><td><input id="<?php echo $row["ID"] . 'Quantity'; ?>" name="<?php echo $row["ID"] . 'Quantity'; ?>" class="quantity" type="number" min="1" value="1" step="1" readonly/></td>
                    <td><?php echo $row["PriceInHRK"]; ?></td>
                </tr>
                <?php
            };
            ?>

        </tbody>

    </table>
    <?php
    $allProducts = GetAllProducts(); 
    $total_records = $allProducts->num_rows; 
    $total_pages = ceil($total_records / $num_rec_per_page);

    echo "<a href='napraviNovuAdminNarudzbu.php?page=1'>" . '|<' . "</a> "; 
    for ($i = 1; $i <= $total_pages; $i++) {
        echo "<a href='napraviNovuAdminNarudzbu.php?page=" . $i . "'>" . $i . "</a> ";
    };
    echo "<a href='napraviNovuAdminNarudzbu.php?page=$total_pages'>" . '>|' . "</a> "; 
    ?>
    <div>
        <input type="submit" value="Naruči" />
    </div>
</form>

谢谢

解: 我决定使用javascript来获取数据,使用ajax发送数据,使用session来存储数据。 每个人都是

1 个答案:

答案 0 :(得分:1)

只是为了澄清你的问题:

您希望在用户端修改您网站的某个状态,并且每当用户点击“下一页”时,您希望将值提交给服务器。

有多种方法,我会解决这个问题:

  1. 考虑使用Ajax(google for it),并将用户的选择立即发送到服务器。 好处:您将始终在服务器端进行所有更改,即使用户仅选择,也从不点击下一页。 缺点:您必须实施整个ajax事物。

  2. 为整个部分使用html表单,每当用户点击“下一页”时,您的字段(必须是表单的一部分)都会被提交。 好处:你不必做任何javascript。缺点:如果没有用户点击下一页而您必须重新构建您的html,则无法发送州

  3. 使用Cookie并使用javascript修改其值。 Cookie随每次请求一起发送到服务器。好处:您不必重新构建代码,只需添加一些小的JavaScript代码即可。缺点:您不能立即发送状态。

  4. 如果您能详细描述一下您的情况,我可以为您提供更详细的答案。

    在评论中做出更详细的解释之后,你应该做同样的事情:

    <form method="POST" action=".">
      <input type="checkbox" name="vehicle" value="Bike"> I have a bike<br>
      <input type="checkbox" name="vehicle" value="Car" checked="checked"> I have a car
      <table> <!-- your data --> </table>
      <input type="button" value="Previous Page" onClick="function() { form.action="previousPage.php"; form.submit(); }" />
      <input type="button" value="Next Page" onClick="function() { form.action="nextPage.php"; form.submit(); }" />
    </form> 
    

    您必须注意PHP代码以设置正确的checked="checked"标志