【问题标题】:Checkbox submits only one checkbox valueCheckbox 只提交一个复选框值
【发布时间】:2017-08-27 19:07:54
【问题描述】:

我有一个带有多个复选框的表单,比如 A、B、C、D。有时我希望用户选择多个复选框,比如 B 和 C。当我这样做时,我只会看到最后一个值' C' 在数据库中。我将如何修改下面的代码以将 BC 提交到数据库?

表格

<form id="myform" method="post" action="check_trash.php">
<input type="text" name="afam" require />

A<input type="checkbox"name="get_value[]" value="A">  
B<input type="checkbox" name="get_value[]" value="B">  
C<input type="checkbox"name="get_value[]" value="C">  
D<input type="checkbox" name="get_value[]" value="D">

<button id="subm" name="upload" style="color:#fff; padding:5px 66px" class="btn btn-success" ><b>Save</b></button>
</form>

jQuery

$("#subm").click( function() {

$.post( $("#myform").attr("action"), $("#myform").serialize(), function(info){ $("#result").html(info); } );
clearInput();
});

$("#myform").submit( function() {
    return false;
});

function clearInput() {
$('#myform').each(function(){
this.reset();
});    
}

PHP

if(!empty($_POST["get_value"])){
foreach($_POST["get_value"] as $checkbox){
}
$name = $_POST['myname'];
$insert_query = "insert into trash (checkbox,name) values ('$checkbox','$name')";

$run_query = mysqli_query($con, $insert_query);
if($run_query){
    echo "Submitted successfully";
}
else {
    echo "failed";
}
}

else{
echo "<script>alert('Please select at least one option!')</script>";
}

【问题讨论】:

  • 你能为$_POST["get_value"]做一个var_dump
  • 你的意思是我应该用 var_dump 替换 $_POST["get_value"] 吗?
  • 不,只需在你的 php 文件中添加 var_dump($_POST)if(!empty($_POST["get_value"])){ 之前
  • 我这样做了:var_dump($_POST); if(!empty($_POST["get_value"])){ 它仍然只提交了一个值并给出了这个错误 array(2) { ["afam"]=> string(6) "joseph" ["get_value"] => array(2) { [0]=> string(1) "A" [1]=> string(1) "B" } } 问题设置成功
  • 将它添加到问题中,这样它可以更干净

标签: php jquery checkbox


【解决方案1】:

使用serilizeArray()方法代替serialize()

$.post( $("#myform").attr("action"),   $("#myform").serializeArray(), function(info){  $("#result").html(info); } );

【讨论】:

  • 使用 serializeArray() 不会提交多个复选框值
【解决方案2】:

这就是你想要的

<?php

if(!empty($_POST["get_value"]))
{
    $checkedOptions = '';
    foreach($_POST["get_value"] as $checkbox)
    {

        $checkedOptions .= $checkbox;

    }


    $name = $_POST['myname'];
    $insert_query = "insert into trash (checkbox,name) values ('$checkedOptions','$name')";

    $run_query = mysqli_query($con, $insert_query);
    if(!$run_query)
    {
        echo "Submitted successfully";
    }
    else 
    {
        echo "failed";
    }
}

else
{
    echo "<script>alert('Please select at least one option!')</script>";
}
?>

【讨论】:

  • 此代码将多个检查值插入到不同的表行中,并赋予它们不同的 ID。也就是说,如果我检查 A 和 B,则在数据库表中,'A' 将被赋予 id 1,而 'B' 将被赋予 id 2。我希望它们显示为具有相同 ID 的“AB”。
  • 好的,现在检查新的编辑我认为这是你要求的,对吧???
  • 工作就像一个魅力。正是我需要的。非常感谢。但是我删除了!来自 if(!$run_query),如果不是,即使它提交了正确的值,它也会回显失败。
  • 感谢投票我的回答并接受以关闭主题
  • 我已经对你的答案投了赞成票,但我如何接受关闭话题?
猜你喜欢
  • 2012-11-11
  • 2015-05-29
  • 2014-06-26
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
相关资源
最近更新 更多