2016-05-14 87 views
-1

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

我可以存储数据会话,然后当选择一个网页,我得到了来自会话页中的数据和标记都是在会话检查所有项目,并设置为从会议有数量过多。我想这可以工作,但我只是不喜欢。所以我很感兴趣,如果有其他的方式来做到这一点在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> 

谢谢

SOLUTION: 我决定使用JavaScript来获取数据,阿贾克斯送他们和会话来存储它们。 THX每一个

+0

展你的代码? – C2486

+0

除了会话,cookie(或临时数据库记录写入/检查,这使事情变得更加复杂),没有其他方式保持页面之间的数据活页...据我所知... – sinisake

+0

有:Cookies( ==客户端会话) – EGOrecords

回答

1

只是为了clearify您的问题:

要修改网站上的用户侧的某种状态,并且每当用户点击“下一页”你要提交你的价值观的服务器。

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

  1. 考虑使用Ajax(谷歌它),并立即发送用户的选择到服务器。 优点:即使用户只选择了,也可以始终在服务器端进行所有更改,并且从不单击下一页。缺点:你必须实现整个ajax事物。

  2. 在整个部分中使用html表单,并且每当用户点击“下一页”时,您的字段必须是表单的一部分。 好处:您不必做任何JavaScript。缺点:没有下一个页面上的用户点击您不能发送的状态,你必须调整你的HTML

  3. 使用Cookie使用JavaScript修改自己的价值。每次请求都会向服务器发送Cookie。好处:您不必重构代码,只需添加一些小的JavaScript令牌。下行:您无法发送即时状态。

如果您可以更详细地描述您的情况,我可以为您提供更详细的答案。


后您的评论更详细的解释,你应该做这样的事情:

<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"标志

+0

Hello Johannes 你的2号解决方案看起来最诱人。我有项目和用户选择这些项目的捕获有很多这些项目,这就是为什么我需要分页。在用户完成选择项目后,他按下提交按钮,然后将这些数据存储在数据库中。但是如果他去预览页面,他检查的所有项目都会丢失,所以我需要一种方法来确保检查的内容保持检查状态,并且在发生POST时,我可以访问每个检查过的项目,而不管它在哪个页面上。 – Naruto