提交带有空白复选框的HTML表单

我有一个HTML表单-使用PHP,我正在将表单的数据发送到MySQL数据库中。表格上某些问题的答案都有复选框。显然,用户不必勾选一个问题的所有复选框。我还想将其他问题(包括广播组)设为可选。

但是,如果我提交带有空框,单选组等的表单,则会收到一长串的“未定义索引”错误消息。

我该如何解决?谢谢。


心有法竹
浏览 710回答 3
3回答

九州编程

未提交的单选或复选框元素未提交,因为它们不被视为成功。因此,您必须检查是否使用isset或empty函数发送了它们。if (isset($_POST['checkbox'])) {    // checkbox has been checked}

绝地无双

我不时使用这种技术:<input type="hidden" name="the_checkbox" value="0" /><input type="checkbox" name="the_checkbox" value="1" />注意:在不同的服务器端语言中,这会有不同的解释,因此如有必要,请进行测试和调整。感谢SimonSimCity的提示。

Cats萌萌

这是一个使用javascript的简单解决方法:在提交包含复选框的表单之前,请将“关闭”的复选框设置为0并选中它们以确保它们已提交。例如,这适用于复选框数组。/////示例//////给定一个id =“ formId”的表单<form id="formId" onSubmit="return formSubmit('formId');" method="POST" action="yourAction.php"><!--&nbsp; your checkboxes here . for example: --><input type="checkbox" name="cb[]" value="1" >R<input type="checkbox" name="cb[]" value="1" >G<input type="checkbox" name="cb[]" value="1" >B</form><?phpif($_POST['cb'][$i] == 0) {&nbsp; &nbsp; // empty} elseif ($_POST['cb'][$i] == 1) {&nbsp; &nbsp; // checked} else {&nbsp; &nbsp; // ????}?><script>function formSubmit(formId){var theForm = document.getElementById(formId); // get the formvar cb = theForm.getElementsByTagName('input'); // get the inputsfor(var i=0;i<cb.length;i++){&nbsp;&nbsp; &nbsp; if(cb[i].type=='checkbox' && !cb[i].checked)&nbsp; // if this is an unchecked checkbox&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp;cb[i].value = 0; // set the value to "off"&nbsp; &nbsp; &nbsp; &nbsp;cb[i].checked = true; // make sure it submits&nbsp; &nbsp; }}return true;}</script>
打开App,查看更多内容
随时随地看视频慕课网APP