2010-12-03 86 views
2

我有這個數據庫,我必須捕獲很多是/否的問題,並且用戶的首選方法是複選框。一切工作都應該如此,除非涉及到檢索和展示價值。未選中框返回值「0」未選中Codeigniter複選框value = blank?

反正是有要麼忽略,並在報告中不顯示「0」或從「0」到空白」

回答

2

這與CodeIgniter無關。 :) 這個怎麼樣?

if($_POST['checkbox']==0) 
    $_POST['checkbox'] = ''; 
1

它返回0,因爲這是改變默認值false,這就是不檢查時返回的複選框,只需在你的CI處理方法中添加一個if,如果複選框的值爲0,就返回你想要的任何值。

編輯:只是爲了澄清,這沒有任何東西我的意思是返回0就是表單本身返回的內容 - 複選框的行爲。要更改該值,將快速檢查您的CI代碼,將0更改爲你的價值噸。我假設你正在訪問某處的值來創建你的電子郵件。

0
if(! $_POST['checkbox']) $_POST['checkbox'] = ''; 
0

如果未勾選複選框,則不會發送任何數據。 (如果選中,則發送值屬性)。試圖閱讀$_POST['checkbox']將導致PHP錯誤(除非您使用empty()isset(),這是特殊的語言結構)。

this->input->post('checkbox')將返回FALSE如果複選框數據未設置,即未檢查。恐怕沒有辦法改變這個價值。如果您需要不同的值,則需要手動比較FALSE並使用不同的值。

最後,當您使用CodeIgniter的DB訪問API向數據庫提交FALSE時,它將被轉換爲'0'。這對數據庫中的布爾列很有效。當你讀出一個布爾列時,無論你最初提交什麼,你都會得到你的數據庫的首選代碼爲TRUE。 (可能的例外是sqlite,這是弱類型的,有點像PHP)。

5
result = $this->input->post('checkbox',TRUE)==null ? 0 : 1 
1

以來的複選框返回空值選中時,你會不會同時發佈得到的值。下面是從複選框返回選中值的簡單快捷的解決方案,

<input type="hidden" name="cbox" value="0" /> 
<input type="checkbox" name="cbox" value="1" /> 
+0

這正是我一直在尋找,但我發現它有助於使具有值爲-1隱藏的輸入爲0,FALSE在鑄造成INT後造成了問題。 – kchason 2017-07-27 17:20:29