2012-08-07 91 views
0
<p>Special Meal Request:<br /> 
     <label> 
     <input type="checkbox" name="dietaryveg" value="yes" />Vegetarian 
     </label> 
     <label><input type="checkbox" name="dietaryglut" value="yes" />Gluten-Free 
     </label> 

這就是我決定使用我創建的表單。我沒有使用單選按鈕,因爲我只想要一個複選框;我沒有給複選框使用相同的名稱,因爲它們是數據庫中的不同列,因爲用戶可能需要素食餐和無麩質餐。儘管設置了defaultvalue,但數據庫中沒有值顯示

但是,當我在mysql工作臺中啓動我的數據庫時,未選中的框仍顯示在列中沒有值。然後我試着把一個隱藏的複選框的值設爲no,這是默認選中的,等等。但是,這兩個值在數據庫中都顯示爲「no」。

現在,我意識到,PHP只關心一個複選框的值,而不是一個未檢查的框值 - 但我會認爲,如果在我的數據庫中有一個默認值,那應該在那裏,很像一個NULL ,不是嗎?

我真的不想有一個完全獨立的表格,只是爲了排列食物偏好 - 我確信只有一些我錯過了。

我可以就處理這個問題的最佳方法得到一些建議嗎?

+0

默認值將只用於新插入。如果在插入行後添加默認值,則現有的行不會受到影響。這可能是問題嗎?另外,請注意,如果您在插入的字段列表中指定字段,它將在值列表中具有相應的值,並且將使用該值,即使它爲空(空字符串仍是字符串) - 您需要省略查詢中POST數據中缺少的字段以使用默認值,或者只要數據庫中的字段不允許NULL值就可以傳遞NULL。 – DaveRandom 2012-08-07 13:24:11

回答

1

如果你正在做的事情如:(isset($_POST['dietarygut'])),它沒有設置,那麼值將是NULL並上傳到數據庫。發佈您的PHP腳本

0

您認爲什麼是您的默認值?使用HTML複選框時,value屬性確實是而不是表示默認值,而是表示如果選中該框,它將發送的值。如果沒有/沒有被選中,則值「yes」不會被髮送。

像mlishn在他的回答中說的,你需要以編程方式檢查是否設置了一個/兩個框,如果是,插入這些值。

相關問題