提交帶未選中複選框的表單時出現「未定義索引」錯誤。除了對每個單獨發佈的值執行「isset」或「empty」檢查之外,還有其他方法嗎?PHP表單複選框和未定義索引
我看了這Question,我很難相信這是唯一的解決方案。
下面是一些示例代碼: 編輯:請不要說這些不是表列的實際名稱;他們被統一命名(如「地址後的,displayPhone,學生等)
提交帶未選中複選框的表單時出現「未定義索引」錯誤。除了對每個單獨發佈的值執行「isset」或「empty」檢查之外,還有其他方法嗎?PHP表單複選框和未定義索引
我看了這Question,我很難相信這是唯一的解決方案。
下面是一些示例代碼: 編輯:請不要說這些不是表列的實際名稱;他們被統一命名(如「地址後的,displayPhone,學生等)
你可以寫一個檢查一個複選框是否被選中的功能:
function checkbox_value($name) {
return (isset($_POST[$name]) ? 1 : 0);
}
現在在您的查詢中調用該功能,如下所示:
$sql = 'UPDATE table SET '.
'checkbox1 = '. checkbox_value('checkbox1') .','.
'checkbox2 = '. checkbox_value('checkbox2') .','.
'checkbox3 = '. checkbox_value('checkbox3') .','.
'checkbox4 = '. checkbox_value('checkbox4') .','.
'checkbox5 = '. checkbox_value('checkbox5') .','. "LIMIT 1";
嘗試以下
<?php
//first part of the query
$query = "UPDATE table SET ";
$howManyCheckboxes = 5;
//for every checkbox , see if it exist , if it is, add it to the query
for($i=1;$i<=$howManyCheckboxes;$i++)
{
if(isset($_POST['checkbox'.$i]))
{
$query = $query . " checkbox".$i."='".escape($_POST['checkbox'.$i])."',";
}
}
//lets remove the last coma
$query = substr($query,0,-1);
//add the rest of the query
$query = $query . " LIMIT 1";
$result = mysql_query($query);
if(! $result) echo "um, not everything went as expected.";
?>
感謝這一點,但複選框名稱並不總是「複選框1」,「複選框2」... – superUntitled 2009-04-14 05:13:01
如果您想打開/關閉複選框,您可以在寫入複選框之前編寫一個隱藏值。 (除非複選框被默認選中默認情況下)或者是
<input type="hidden" name="checkbox1" value="no" />
<input type="checkbox" name="checkbox1" value="yes" />
這將始終返回一個值,要麼沒有。
您可以使用FILTER_VALIDATE_BOOLEAN驗證filter functions的輸入。
它更容易,如果你寫了這樣的功能,如formCheckbox($名),與值的選項(「開」值意味着複選框默認選中),屬性等
是啊!我喜歡你思考的方式。謝謝! – superUntitled 2009-04-14 05:18:29