2009-07-04 52 views
1

我使用PHP中的網頁顯示錶中的所有記錄。我想爲所有行添加複選框,用戶可以選中一個複選框來選擇一行然後提交頁面。提交頁面時,我想枚舉所有複選框並檢查它們是否被選中,我該怎麼做?枚舉PHP中的所有複選框

回答

2

創建表單

您可以生成HTML如下:

<form [action, method etc]> 
    <table> 
    <?php 
    foreach($dataSet as $dataRow) : 
    ?> 
     <tr> 
     <td> 
      <input type="checkbox" name="dataRow[]" value="<?=$dataRow['id']?>"/> 
     </td> 
     [Additional details about datarow here] 
     <tr> 
    <?php 
    endforeach; 
    ?> 
    </table> 
</form> 

完成POST

直視$ _ POST [ '數據行']:這將是一個數組,其值爲$ dataRow的IDS,因此使用array_values$ _POST ['dataRo W']會給你所選行的所有ID:

<?php 
    $checkedRows = array_values($_POST['dataRow']); 
    foreach($checkedRows as $row) { 
     // Do whatever you want to do with the selected row 
    } 
+1

點擊幫助圖標:http://stackoverflow.com/editing-help – deceze 2009-07-04 13:00:55

5

您將創建您的複選框是這樣的:

<input name="rows[]" value="uniqueIdForThisRow" type="checkbox" /> 
<input name="rows[]" value="anotherId" type="checkbox" /> 

然後你可以通過他們循環是這樣的:

<?php 
    // $_POST['rows'] contains the values of all checked checkboxes, like: 
    // array('uniqueIdForThisRow', 'anotherId', ...) 

    foreach ($_POST['rows'] as $row) { 
     if ($row == 'uniqueIdForThisRow') { 
      // do something 
     } 
    } 
?> 

PHP docs on dealing with forms,特別參見實施例#3。

1

如果選中它們,則不必檢查所有複選框。因爲只有successful controls被髮送到服務器。複選框只有在檢查時纔會成功:

複選框(和單選按鈕)是可以由用戶切換的開/關開關。當控件元素的checked屬性被設置時,開關處於「on」狀態。提交表單時,只有「開啓」複選框控件才能成功。

所以你只需要看看你在請求中得到的複選框。如果您想使用<select multiple>,請在PHP FAQ中查看How do I get all the results from a select multiple HTML tag?

0

如果我是你......我不會爲改變html表格結構而戰。 你可以使用Javascript框架來處理這個問題,比如JQuery這對你來說是非常有效的解決方案。你只處理幾行JS代碼,你不需要誇大html輸出(我猜它可能足夠長)。關於jquery,如果你從未使用過,有一個名爲visual jquery的好源代碼。

這裏是如何做到這一點。 你不需要在循環內編輯。你只需要在你的表格標籤上加一個id即可。 然後在裏面添加新的列到你的表格中。 然後你可以得到複選框的值&將它們序列化爲一個隱藏的輸入。或者您可以使用ajax輕鬆處理選定的行。我認爲JS框架會更好。

通常我已經添加了許多鏈接到帖子,但它表示它不允許新用戶。