我有插件开发要求 - 在激活插件时,插件应该创建一个数据库表,默认情况下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
));
}
}
答案 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的方法,但到目前为止没有运气。 请帮助我理解.....