Php 更改复选框值并插入数据库
听起来很简单,但我就是做不到。我正在尝试向数据库中插入复选框值。如果选中,则插入Y,如果不选中,则插入N。在我的DOM中,我看到复选框的值在我单击它后更改为N,但数据库中的值没有更改。也许是我错过了一些小而愚蠢的东西 所以默认值是N 以下是HTML:Php 更改复选框值并插入数据库,php,jquery,mysql,Php,Jquery,Mysql,听起来很简单,但我就是做不到。我正在尝试向数据库中插入复选框值。如果选中,则插入Y,如果不选中,则插入N。在我的DOM中,我看到复选框的值在我单击它后更改为N,但数据库中的值没有更改。也许是我错过了一些小而愚蠢的东西 所以默认值是N 以下是HTML: <div class="funkyradio"> <div class="funkyradio-success"> <input type="checkbox" name="animalCare"
<div class="funkyradio">
<div class="funkyradio-success">
<input type="checkbox" name="animalCare" id="animalCare" value="N"/>
<label for="animalCare">Hoolitsen loomade eest:</label>
</div>
</div>
对于插入,我使用formValidation.io插件,如果复选框被更改,我甚至看不到网络选项卡下formdata中的N,否则我会看到Y
.on('success.form.fv', function(e, data) {
// Prevent form submission
e.preventDefault();
console.log("validated");
var $form = $(e.target),
formData = new FormData(),
params = $form.serializeArray(),
files = $form.find('[name="userProfilePhoto"]')[0].files;
$.ajax({
url: $form.attr('action'),
data: formData,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data) {},
error: function(jqXHR, textStatus, errorThrown, data) {
console.log(jqXHR, textStatus, errorThrown, data);
}
});
});
PHP
不要试图更改客户端上的值。复选框不是设计成这样工作的。如果未选中该复选框,它将不会出现在提交的数据中 测试是否改为发送数据
$value = "N";
if (isset($_POST['animalCare'])) {
$value="Y";
}
显然,根本不要将从客户端发送的值作为要运行的查询的要求。不要尝试更改客户端上的值。复选框不是设计成这样工作的。如果未选中该复选框,它将不会出现在提交的数据中 测试是否改为发送数据
$value = "N";
if (isset($_POST['animalCare'])) {
$value="Y";
}
显然,根本不要将从客户端发送的值作为要运行的查询的要求。这是因为函数serializeArray不会接受未选中的复选框 这是HTML表单的默认行为 发件人: .serializeArray方法使用成功控件的标准W3C规则来确定它应该包含哪些元素;尤其是不能禁用元素,元素必须包含名称属性。由于未使用按钮提交表单,因此未序列化任何提交按钮值。文件选择元素中的数据未序列化 函数测试表{ log$myForm.serializeArray; }
这是因为函数serializeArray不会选中未选中的复选框 这是HTML表单的默认行为 发件人: .serializeArray方法使用成功控件的标准W3C规则来确定它应该包含哪些元素;尤其是不能禁用元素,元素必须包含名称属性。由于未使用按钮提交表单,因此未序列化任何提交按钮值。文件选择元素中的数据未序列化 函数测试表{ log$myForm.serializeArray; }
检查查询执行中的错误。koristab=VALUESkoristab,loomade_hoolitsus=VALUESloomade_hoolitsus应该扔点东西。还有,为什么要更新为相同的值?您在var_dump$\u POST中有什么?未选中复选框时,复选框不会发送到服务器,这可能也是为什么它们也不包含在FormData中的原因。请检查查询执行中的错误。koristab=VALUESkoristab,loomade_hoolitsus=VALUESloomade_hoolitsus应该扔点东西。还有,为什么要更新为相同的值?您在var_dump$\u POST中有什么?未选中复选框时,复选框不会发送到服务器,这可能就是为什么它们也不包含在FormData中的原因。@raqulka-因为您说过可以在提交的数据中看到Y,这表明有其他东西坏了。你说的是什么意思:根本不把从客户端发送的值作为要运行的查询的要求?还有一件奇怪的事,现在我在formData中看到了N,但它仍然插入Y@raqulka-在问题中PHP的第2行,如果表单数据中不包含animalCare,则if语句不会运行查询。不要这样做。@raqulka-表单数据中的值无关紧要。任何值的存在都表明复选框已被选中,因此是结果。答案中的代码从不查看$_POST['animalCare']的值,只有在设置了它的情况下才会查看。@raqulka-因为你说你可以在提交的数据中看到Y,这表明有其他东西坏了。你的意思是什么:不要让从客户端发送的值成为运行查询的要求?还有一件奇怪的事,现在我在formData中看到了N,但它仍然插入Y@raqulka-在问题中PHP的第2行,有一个if语句,如果表单数据中没有包含animalCare,则该语句不会运行查询。不要这样做。@raqulka-表单数据中的值无关紧要。任何值的存在都表明复选框已被选中,因此是结果。答案中的代码从不查看$u POST['animalCare']的值,只有在设置了该值的情况下。
$value = "N";
if (isset($_POST['animalCare'])) {
$value="Y";
}