我试过数字解决方案,但不知道我做错了什么。
我有以下输入元素:
<input type="checkbox" data-layout="fixed" class="pull-right" value="1">
在结束正文标签之前我有以下jquery
<script>
$("input[type='checkbox']").on('click', function(){
var checked = $(this).attr('checked');
if(checked){
var value = $(this).val();
$.post('mysqlfunc.php', { value:value }, function(data){
if(data == 1){
}
});
}
});
</script>
在mysqlfunction .php文件中有
<?php
include "../../inc/config.php";
include "../../inc/funcs.php";
@mysql_connect($dbhost,$dbuser,$dbpass);
@mysql_select_db($dbname) or die( "Unable to select database");
include "../../inc/userauth.php";
if ($_POST && isset($_POST['value'])) {
$value = mysql_real_escape_string($_POST['value']);
$sql = "UPDATE members SET fixed = '".$value."' WHERE username='".$_SESSION['uid']."'";
} else {
}
?>
我的期望是当我单击输入复选框时,值"1"被保存到"固定"列中的"成员"表中,其中用户名等于会话uid。
我可以回显uid,这样就可以工作了。它没有给出任何错误,所以它似乎连接到数据库。然而,选中输入文本框并不会改变数据库中的值。
没有js错误,也没有php错误,只是没有保存。
我做错了什么?如果可能的话,示例工作代码将非常有帮助。
脚本中的这一行是错误的。
var checked = $(this).attr('checked');
改为
var checked = $(this).is(':checked')
您忘记使用mysql_query
执行查询
$sql = "UPDATE members SET fixed = '".$value."' WHERE username='".$_SESSION['uid']."'";
mysql_query($sql);
您使用的是什么版本的jquery ?并检查post请求是否真的完成尝试使用.prop
:
$("input[type='checkbox']").on('click', function(){
var checked = $(this).prop('checked'); //<---- Here
if(checked){ // here returned true or false
var value = $(this).val();
$.post('mysqlfunc.php', { value:value }, function(data){
if(data == 1){
}
});
}
});
或…
$("input[type='checkbox']").on('click', function(){
if( this.checked ){ // <-- just checked directly
var value = $(this).val();
$.post('mysqlfunc.php', { value:value }, function(data){
if(data == 1){
}
});
}
});
就像@Saty说的,让mysql_query($sql);
来执行这些查询
你的JS代码看起来像。
$(document).ready(function(){
$("input[type='checkbox']").on('click', function(){
var checked = $(this).is(':checked');
if(checked){
var value = $(this).val();
$.post('mysqlfunc.php', { value:value }, function(data){
if(data == 1){
}
});
}
});
});
你错过了执行SQL,所以你的PHP代码看起来像。
<?php
include "../../inc/config.php";
include "../../inc/funcs.php";
@mysql_connect($dbhost,$dbuser,$dbpass);
@mysql_select_db($dbname) or die( "Unable to select database");
include "../../inc/userauth.php";
if ($_POST && isset($_POST['value'])) {
$value = mysql_real_escape_string($_POST['value']);
$sql = "UPDATE members SET fixed = '".$value."' WHERE username='".$_SESSION['uid']."'";
mysql_query($sql);
} else {
}
?>