使用 AJAX 将复选框值 1 如果选中,如果不是 0 传递给 PHP

Posted

技术标签:

【中文标题】使用 AJAX 将复选框值 1 如果选中,如果不是 0 传递给 PHP【英文标题】:Pass checkbox values 1 if checked if not 0to PHP using AJAX 【发布时间】:2015-08-23 15:44:04 【问题描述】:

我想通过使用 php 复选框将“0”或“1”插入 mysql 数据库,但值无法存储到数据库中! 我试图插入一个这样的复选框数组:

1:选中

0:未选中

[answer] => Array
        (
            [0] => answer 1
            [1] => answer  2
            [2] => answer  3
        )

[check] => Array
        (
            [0] => 1
            [1] => 0
            [2] => 1
        )

php 文件:

<td> <!-- <input type="hidden"  name="check[]" value="0" >-->
     <input type="checkbox" id="check" name="check[]" value="1">
</td>

在通过 AJAX 的进程文件中,我存储了答案数据库,但我无法存储每个选定答案的检查值

$query = mysql_query("INSERT INTO questions 
                         (nom_question,id_categorie)       
                     VALUES('$question','$categorie')", $conn) 
                     or die(mysql_error());

//last insert id question
$last_id = mysql_insert_id();

$check =  $_POST['check']; 

foreach ($reponse as $key=>$value  ) 
    $values = mysql_real_escape_string($value);
    $x='1';
    $query = mysql_query("INSERT INTO reponses 
                         (nom_reponse,id_question,id_categorie,correct) 
                         VALUES ('$values',
                                 '$last_id',
                                 '$categorie',
                                 '$x')") 
                or die(mysql_error());

请帮忙!如果检查或不检查,我如何存储答案。

【问题讨论】:

【参考方案1】:

这真的很简单,你必须记住 CheckBoxes 只会从 html 表单发送到脚本,如果它们实际上是被选中的,所以未选中的复选框只是不存在于 $_POST 或 $ _GET 数组。

这并没有看起来那么大的问题,您需要做的就是检查复选框是否存在,如果存在则检查它。

所以在你的代码中而不是这样做

$check =  $_POST['check']; 

这样做

$check =  isset($_POST['check']) ? 1 : 0; 

我会进一步展示将其存储在数据库中的代码,但您的代码实际上并未在任何地方使用 $check 变量。

【讨论】:

【参考方案2】:

用 ajax 试试这个帖子 将 id 更改为 class 以便于选择

var selectedCB = new Array();
$('.cbcheck:checked').each(function() 
            selectedCB.push(this.value);
          );
          $.ajax(
            url: 'insert.php',
            dataType: 'text',
            type: 'post',
            contentType: 'application/x-www-form-urlencoded',
            data: recordsval: selectedCB,
            success: function( data)
              $('#result').html(data);
            ,
            error: function(errorThrown )
              console.log( errorThrown );
            
          );


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" class="cbcheck" name="check[]" value="1">
<input type="checkbox" class="cbcheck" name="check[]" value="0">
<input type="checkbox" class="cbcheck" name="check[]" value="1">
<input type="submit" value="submit">
<div id="result"></div>

和php句柄

<?php
$data = $_POST['recordsval'];
var_dump($data);
?>

用您的代码调整它...

【讨论】:

【参考方案3】:

非常感谢先生重播;但问题是复选框是动态的,所选值取决于用户! 我已经使用表单 serliaze 通过 ajax 发送 pot 数据:复选框在表单中

<form name="form" id="form" role="form" method="post" action="">
<<tr>
                        <td>Answer</td>
                        <td><input type="text" id="name" name="answer[]"></td>

                        <td>

                                <input type="checkbox" id="check" name="check[]" ></td>
                        <td><input type="button" value="Ajouter" " class="button"></td>
                    </tr>
</form>

我怎么能选择选定的答案!如果答案为真,如果不在数据库中的“正确”列中存储 0,则该想法太存储一个

我尝试通过这种方式通过 AJAX 处理数据

 $(function() 
                $("#form").on("submit", function(event) 
                    event.preventDefault();

                    $.ajax(
                        url: "test.php",
                        type: "post",
                        data: $(this).serialize(),
                        success: function(d) 
                            alert(d);
                        
                    );
                );
            );
            );

【讨论】:

以上是关于使用 AJAX 将复选框值 1 如果选中,如果不是 0 传递给 PHP的主要内容,如果未能解决你的问题,请参考以下文章

如何根据复选框更新数据库值? jQuery/php/ajax

选中复选框时如何将AJAX值发送为1,未选中时如何发送0?

如何根据复选框更新数据库值? jQuery的/ PHP / AJAX

如何使用 jquery ajax 将选中复选框的值发送到另一个页面

jQuery选取所有复选框被选中的值并用Ajax异步提交数据

如果选中,则反应复选框将值添加到数组