如何在Wordpress数据库中插入多个复选框值0(默认值)和1(对于选中的复选框)

时间:2018-04-04 11:53:41

标签: javascript jquery ajax wordpress web

我有插件开发要求 - 在激活插件时,插件应该创建一个数据库表,默认情况下35个字段使用' 0'值应该添加。 我创建了一个名为checkbox的表,里面有3列 id(int),chk_col(varchar),created_at(timestamp) 创建了多个复选框,其值为1,如下所示 -

<form action="#" id="frmPost">
    <label class="checkbox-inline">
      <input type="checkbox" name="seat[]" id="seat0" value="1">A1
    </label>
<button type="submit" name="submit" id ="btn btn-default">Submit</button>
  </form>

我有script.js文件,其中我写了如下的验证码,工作正常

!(function($){
$(document).ready(function(){
    $('#frmPost').on('change', 'input[type=checkbox]', function(){
        if ($(this).is(':checked'))
            alert('Seat ' + $(this).closest('label').text() + ' added.');
        else
            alert('Seat ' + $(this).closest('label').text() + ' removed.');
    });
    $('#frmPost').submit(function() {
        var $fields = $(this).find("input[name='seat[]']:checked");
        if (!$fields.length) {
            alert('You must book/select at least one seat!');
            return false; // The form will *not* submit
        }
    });
});
})(window.jQuery);

并且主wp函数文件包含所有必需的代码 问题是 - 我真的不明白如何在WP Db中插入多个复选框,检查值为1。 我试过这样做,但根本没有工作,甚至序列化也无法处理。 帮我进一步。 谢谢。

这是你要我展示的PHP代码 =&gt;我写的代码 -

function my_action_callback(){
    if ( isset($_POST["insert"]) ){
        global $wpdb;
        //$table_name = $wpdb->prefix . "status";
        bus_seat_avail_table();
        $wpdb->insert(bus_seat_avail_table(), array(
             //no idea what to code here
        ));
    }
} 

1 个答案:

答案 0 :(得分:0)

我根据搜索到的链接调整代码并能够成功地将数据插入数据库,从而使我的代码正常工作。 从script.js开始工作的主要代码(我完全改变了代码--jQuery和ajax)

jQuery(document).ready(function($){
    $('#submit').click(function(){
        var seats = [];       
        $('.get_value').each(function(){
            if($(this).is(":checked")  ){
                 seats.push($(this).val() );   
            }
        });
        seats = seats.toString();
        $.ajax({
            url: ticketbookingajaxurl,
            method:"POST",
            data:{
                'action': 'my_action_callback',
                'seats': seats,
                },
            success:function(data){
                $('#result').html(data);
            }
        });
    });
});

html复选框表单代码包含在class =“get_value”

<form action="#" id="frmPost">
    <label class="checkbox-inline">
      <input type="checkbox" class="get_value"  id="seat0" value="1">A1
    </label>
    <label class="checkbox-inline">
      <input type="checkbox" class="get_value"  id="seat1" value="1">A2
    </label>
    <label class="checkbox-inline">
      <input type="checkbox" class="get_value"  id="seat2" value="1">A3
    </label>
    <label class="checkbox-inline">
        <input type="checkbox" class="get_value"  id="seat3" value="1">A4
    </label>
    <label class="checkbox-inline">
      <input type="checkbox" class="get_value"  id="seat4" value="1">A5
    </label>
    <label class="checkbox-inline">
      <input type="checkbox" class="get_value"  id="seat5" value="1">A6
    </label>
    <label class="checkbox-inline">
      <input type="checkbox" class="get_value"  id="seat6" value="1">A7
    </label>
    <label class="checkbox-inline">
        <input type="checkbox" class="get_value"  id="seat7" value="1">A8
    </label>
    <label class="checkbox-inline">
      <input type="checkbox" class="get_value"  id="seat8" value="1">A9
    </label>
    <label class="checkbox-inline">
      <input type="checkbox" class="get_value"  id="seat9" value="1">A10
    </label><label class="checkbox-inline">
      <input type="checkbox" class="get_value"  id="seat34" value="1">D5
    </label></br></br>
    <button type="button" name="submit" class="btn btn-info" id ="submit">Submit</button>
  </form>
    <div id="result"></div>
</body>
</html>

最后主要的php代码最终将值插入到WordPress DB中 如图所示,调用php代码以包含在函数中需要Hook

add_action( 'wp_ajax_my_action_callback', 'my_action_callback' ); //for logged in users
add_action( 'wp_ajax_nopriv_my_action_callback', 'my_action_callback' ); //for other users

function my_action_callback(){
    if ( isset($_POST["seats"]) ){
        global $wpdb;
        //$table_name = $wpdb->prefix . "chkbox";
        bus_seat_avail_table();
        $wpdb->insert(bus_seat_avail_table(), array(
             'chk_col' => '1' //chk_col is the column name in DB
        ));
        //wp_die();//compulsory 
    }
}
  
    

但我无法理解未选中复选框值的所有字段是否应保持为0并且检查是否应保存为1。     我想要的是理解保存的值应该自动保存到内部数据库中的1并且在同一个chk_col字段中未选中的应该为0的方法,但到目前为止没有运气。     请帮助我理解.....