2012-06-03 29 views
-2

我有while循環中生成的複選框。首次檢查這些複選框,並且存儲在數據庫中的值爲「開」。但是當用戶取消選中它時,我想在數據庫中存儲「關」。但我的問題是,我無法訪問複選框名稱,以檢查按鈕單擊時是否取消選中了哪些複選框。我寫了這個代碼PHP/HTML:如何訪問循環中動態生成的複選框

while($row = mysql_fetch_assoc($result)) { 
    if($pck_id_renew == 'On') 
    { 
    echo '<td class=c><input type="checkbox" id="renew_chk" name="renew_chk" 
     checked="checked" style="width:50px" value="On"/></td>'; 
    } 
    if($pck_id_renew == 'Off') { 
    echo '<td class=c><input type="checkbox" id="renew_chk" name="renew_chk" 
     style="width:50px" value="Off"/></td>'; 
    } 
} 
+0

'的var_dump($ _ POST,$ _ GET);傳遞複選框狀態PHP]的' – zerkms

+2

可能重複(http://stackoverflow.com/questions/ 10768024 /傳遞 - 複選框狀態到php) –

回答

0

您只會收到檢查複選框的輸入值。使用數組並將所有可用的複選框名稱存儲在其中。循環訪問該數組以檢測選中/取消選中哪個複選框。

代碼可能是這個樣子:

// Define available checkboxes 
$inputs = array('renew_chk', ...); 

// Check input values 
$values = array(); 
foreach ($inputs as $input) { 
    if (isset($_POST[$input])) { 
    $values[$input] = 'On'; 
    } 
    else { 
    $values[$input] = 'Off'; 
    } 
} 

// Loop through $values and store value in database 
foreach ($values as $input => $value) { 
    // UPDATE database SET $input = $value WHERE id = [n]; 
} 
+0

只是一句話:這個例子是針對多個複選框。如果你只有一個複選框,那麼foreach循環是不必要的。 – mixable

+0

複選框在循環中生成,我在命名複選框時遇到問題。我必須嘗試附加一個整數,'$ i'與名稱,但我不知道如何作爲參數訪問該名稱。 – user1400604

+0

您可以在輸入標籤的名稱屬性中使用data [],data [],...或data [0],data [1],...'。這將導致$ _POST ['data']的數組。 – mixable