2016-05-14 83 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