我有一个文章表,在客户端显示在行中.每篇文章都有一个唯一的ID,并包含一个复选框,用于指示是否将此文章选为收藏夹.如果它是收藏夹,则已选中复选框.如果没有,则取消选中.现在我需要js或jquery和ajax来更新数据库中的表,如果复选框条件更改特定于每一行.另一个挑战是我在cakePHP MVC环境中工作.
<script type="text/javascript" src="jquery-1.2.1.min.js"></script>
<script type="text/javascript">
function checkBox_click (id, favorite)
{
// see if checkBox is checked
if(favorite==1)
{
$.ajax({
type:'POST',
url:'check_favorite.PHP', // this external PHP file isn't connecting to MysqL db
data:'id= ' + id + '&favorite=1',
});
}// if
// the checkBox was unchecked
else
{
$.ajax({
type:'POST',
url:'check_favorite.PHP', // this external PHP file isn't connecting to MysqL db
data:'id= ' + id + '&favorite=0',
});
}//else
}
</script>
–html–这是一个foreach循环.
echo "<input type='checkBox' id='$rowid;' name='favorite' checked='checked' onclick='checkBox_click('id','favorite',this();' />";
else
echo "<input type='checkBox' id='$rowid;' name='favorite' onclick='checkBox_click('id','favorite',this.checked);' />";
<?PHP
//Database Variables - with the variables entered it doesn't connect
$dbhost = 'localhost'; // usually localhost
$dbuser = 'username'; // database username
$dbpass = 'password'; // database password
//Establish connection to MysqL database
$con = @MysqL_connect($dbhost, $dbuser, $dbpass);
if (!$con)
die('Unable to connect.' . MysqL_error());
MysqL_select_db('devcake', $con);
// Get the variables.
$query = "UPDATE mytable SET favorite=".$_POST['favorite'] . "
WHERE id=".$_POST['id'] . ";";
MysqL_query($query);
MysqL_close($con);
?>
解决方法:
这是我使用的代码(感谢塞缪尔)
$('input[name=favorite]').live("click",function(){
var id = $(this).attr('id');
if($(this).attr('checked')) {
var favorite = 1;
} else {
var favorite = 0;
}
$.ajax({
type:'GET',
url:'favorites.PHP',
data:'id= ' + id + '&favorite='+favorite
});
//console.log('id: ' + id + ' Publico: '+publico + 'Value: '+value);
});