将多个复选框输入的post值分配给PHP变量,并用逗号分隔

时间:2017-10-10 07:14:26

标签: php jquery html5 forms

我使用PDOforeachecho使用数据库中的数据生成一些表单输入,此示例的输出看起来更加简洁:

<input type="checkbox" value="1" checked>Google
<input type="checkbox" value="2">Amazon
<input type="checkbox" value="3" checked>Microsoft 

这是在张贴到同一页面的表单中使用的。 我想获取这些数据并使用PHP变量将其存储在数据库中,因此当选中该复选框时,会将值分配给它:

// output
$data = '1,3';

请注意,该复选框由用户检查,此处使用的数据只是一个示例,我希望表单能够通过用户输入收集正确的数据。

2 个答案:

答案 0 :(得分:2)

将复选框的名称命名为数组,因此当您提交表单时,您将在数组中获得一个复选框值数组,并选中复选框,然后您可以用,逗号分隔该数组。

<input type="checkbox" name="checkboxname[]" value="1" checked>Google
<input type="checkbox" name="checkboxname[]" value="2">Amazon
<input type="checkbox" name="checkboxname[]" value="3" checked>Microsoft 

提交表单后,您必须获得如下代码的值。

$data = implode(",", $_POST['checkboxname']);
echo $data;

答案 1 :(得分:0)

你可以使用jquery: 例如: HTML:

<input type="checkbox" value="1">Google
<input type="checkbox" value="2">Amazon
<input type="checkbox" value="3">Microsoft
<button type="submit" id="btn">Submit</button>

JQUERY:

$(document).ready(function(){
    $('#btn').on('click',function(){
        var cboxVal = [];

        $('input[type="checkbox"]:checked').each(function(i){       
                cboxVal[i] = $(this).val();
        });

        $.ajax({
            url     : 'insert_data.php',
            method  : 'POST',
            data    : {cval:cboxVal},
            dataType: 'text',
            async   : false,
            success : function(){
                        alert('data inserted!');
            }   
    }); 
});

PHP:

<?php
if(isset($_POST['cval'])){
    $cval_raw = $_POST['cval'];

    for($i =0; $i<count($cval_raw);$i++){
        $cval = $cval_raw[$i];


        $sql = "INSERT INTO db_name(table_name) VALUES('$cval')" or die('cannot insert');

        $query = mysqli_query($connect,$sql);
    }    
}
?>