2009-08-28 47 views
0

我有一個帶有複選框的表單。我沒有設置複選框的值,我一直以爲這個值是'on'或者''(空)。我將'on'值傳遞給數據庫。問題是,當我取消選中該框時,它不會將數據庫中的值更改爲「'(空)。表單的其餘值,如輸入框正在改變。這是我的代碼在我的複選框更改數據庫中複選框的值

<input type="checkbox" name="form3_one_2" <?php if($form3_one_2 == 'on'){print 'checked="checked"';}?> /> 

我應該有一個價值把形式?

+1

什麼數據庫,以及寫入的表單是什麼?訪問? – MartW 2009-08-28 23:39:12

回答

0

如果你想在瀏覽器選擇把它寫,因爲它看起來像你,使用

<input name="foo" selected="selected" ... /> 

如果你想獲得的複選框的結果,它確實應該是「上」時,你通過表單傳遞它(或者查詢字符串,如果你使用GET的話)。

+0

什麼是'selected'屬性? – strager 2009-08-28 23:51:50

+0

啊。我認爲複選框使用checked =「checked」來代替。所選內容將應用於收音機盒(或其他您可以選擇的部分)。這意味着它被選中和/或檢查:) – Rushyo 2009-08-29 01:00:38

1

您應該跟蹤表單中的複選框。當窗體發佈,這樣做

<?php 

if('POST' == $_SERVER[ 'REQUEST_METHOD' ]) 
{ 
    /* for security reasons just check 
    * if it isset and set it to 'on' yourself 
    * never trust users input, always validate/sanitize 
    */ 
    $form3_one_2 = isset($_POST[ 'form3_one_2' ]) ? 'on' : '' ; 
} 

?> 

順便說一句: 哪裏是你的$ form3_one_2從反正來了嗎?我有一種感覺,你仍然在使用ini設置register_globals,這也是侏羅紀時代的一個巨大的安全漏洞。一定要將register_globals設置爲關閉。

+0

我不確定你說了什麼。首先安全性不是問題! 我並不總是善於表達我在想什麼,所以讓我再試一次。 「on」值正在放入數據庫中。 (This works) 我的問題是我希望用戶能夠對錶單進行更新。 爲了讓他們閱讀他們的舊信息,我把這個代碼的形式是 <?php if($ form3_one_2 =='on'){print'checked =「checked」';}?> 來自數據庫的信息。 如果他們取消選中表單並重新提交,那麼值「on」仍然在數據庫中。 (這是我的問題) – PeggyMe 2009-08-29 04:58:11

+0

我將複選框$ form3_one_2命名爲跟蹤表單各個部分中的每個框。我在表格中有200多個複選框。 – PeggyMe 2009-08-29 05:01:35

+0

我明白你的問題很好。我認爲這是我的迴應,需要澄清。我要說的是,在接收端(處理提交表單的PHP腳本),您需要知道該表單中存在的複選框。因爲如果取消選中複選框,則不會提交任何值。所以,要知道一個複選框是否未被選中,唯一的方法就是測試一個值是否缺失。如果沒有收到複選框,您知道該複選框存在於表單中,則該複選框未被選中。 這是什麼 $ form3_one_2 = isset($ _POST ['form3_one_2'])? '上' : '' ; 呢。 – 2009-08-29 05:06:35