将checkbox数组插入数据库

时间:2017-02-06 14:03:25

标签: php arrays ajax checkbox

我有多个要插入我的数据库的复选框。

我有这个代码,我试图通过数组获取所有的复选框值,但是我在数据库中插入的内容是空白的,也许我采取错误的方式

复选框

    <label class="checkbox-inline"><input type="checkbox" class="modalday" name="modalday[]" value="M">Monday
&nbsp;&nbsp;</label>
</div>
<div class="checkbox">
   <label class="checkbox-inline"><input type="checkbox" class="modalday" name="modalday[]" value="T">Tuesday
   &nbsp;&nbsp;</label> 
</div>
<div class="checkbox">
   <label class="checkbox-inline"><input type="checkbox" class="modalday" name="modalday[]" value="W">Wednesday
   &nbsp;&nbsp;</label>
</div>
<div class="checkbox">
   <label class="checkbox-inline"><input type="checkbox" class="modalday" name="modalday[]" value="Th">Thursday
   &nbsp;&nbsp;</label>
</div>
<div class="checkbox">
<label class="checkbox-inline"><input type="checkbox" class="modalday" name="modalday[]" value="F">Friday
&nbsp;&nbsp;</label>

这是我如何获取数据

 function saveData(){
                      var modsubj = $('#modalsubject').val();
                      var modsect = $('#modalsection').val();
                      var modstart = $('#modalstarttime').val();
                      var modend = $('#modalendtime').val();
                      var moduser = $('#userID').val();
                      var modday = new Array();

                      $('.modalday input:checked').each(function() {
                        modday.push($(this).attr('name'));
                      });

                      $.ajax({
                        type: "POST",
                        url: "modal.funcs.php?p=add",
                        data: "subj="+modsubj+"&sect="+modsect+"&day="+modday+"&start="+modstart+"&end="+modend+"&user="+moduser
                      });

                    } 

这是我处理从ajax

获取的数据的地方
$page = isset($_GET['p'])?$_GET['p']:'';
if($page=='add'){

  $subj = $_POST['subj'];
  $sect = $_POST['sect']; 
  $day = $_POST['day'];
  $strTime = $_POST['start'];
  $endTime = $_POST['end'];
  $user_id = $_POST['user'];



  $auth_user->createSchedule($subj,$sect,$day,$strTime,$endTime,$user_id);
  $schedRow = $auth_user->readSchedule();

} else if ($page=='edit') {

}

我认为我的错误是如何从阵列中获取数据,但我不确定如何正确地做到这一点,请帮助

2 个答案:

答案 0 :(得分:0)

我认为这是你的代码错误的地方:

$('.modalday input:checked').each(function() {
   modday.push($(this).attr('name'));
});

您应该获取复选框的值,而不是元素的名称。所以这样做:

$('.modalday input:checked').each(function() {
   modday.push($(this).val());
});

甚至只是更改名称&#39;价值&#39;:

$('.modalday input:checked').each(function() {
    modday.push($(this).attr('value'));
});

然后,为了将数据发送到PHP帖子, 字符串应如下所示:

modalday[]=T&modalday[]=W&modalday[]=Th

所以要么使用循环来创建字符串,要么只使用$(form).serialize(),如下所示:

以表格形式包装您的复选框:

<form id="checkboxform">
<!-- your check box codes here -->
</form>

你的jquery代码:

var params = $('#checkboxform').serialize();

$.ajax({
   type: "POST",
   url: "modal.funcs.php?p=add",
   data: params,
});

请参阅我的Js Fiddle示例代码:https://jsfiddle.net/0y84tws2/

答案 1 :(得分:0)

我发现了一种更简单的方法,

在我的jquery中,我将之前的代码更改为

var modday = [];

                        $('.modalday').each(function() {
                          if($(this).is(":checked")){
                            modday.push($(this).val());
                          }
                        });

                        modday = modday.toString();

                        $.ajax({
                          type: "POST",
                          url: "modal.funcs.php?p=add",
                          data: "subj="+modsubj+"&sect="+modsect+"&day="+modday+"&start="+modstart+"&end="+modend+"&user="+moduser
                        });

在我的php中,这就是我采用这些值的方式,非常简单

$page = isset($_GET['p'])?$_GET['p']:'';
if($page=='add'){

    if(isset($_POST['day'])){
        $subj = $_POST['subj'];
        $sect = $_POST['sect']; 
        $day = $_POST['day'];
        $strTime = $_POST['start'];
        $endTime = $_POST['end'];
        $user_id = $_POST['user'];

        $auth_user->createSchedule($subj,$sect,$day,$strTime,$endTime,$user_id);
        $schedRow = $auth_user->readSchedule();
    }