关注是一个常见得模块,下面贴出一种简单的处理,如果要实现点击(加关注),文字变为(已关注),字体变色,点击(已关注),字体变为(加关注),变回原色,最好结合php定义一个class,在渲染模板时,就要查数据表进行判断,把class样式抛给模板,当然抛的只是一个class名,根据不同的class名给不同的样式
php代码:
query('set names utf8');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}
try {
//$user_id = intval($_SESSION['user_id']);//判断是否登录,没有登录跳转到登录页
$user_id=$_SESSION['user_id']=15;//暂时
//$follow_id = intval($_REQUEST['follow_id']);
$follow_id = 19;//暂时
$result = array('error' => 0, 'info' => '', 'data'=>'');
if(empty($_SESSION['user_id'])){
header('location:http://www.baidu.com');//也可以由模板js完成跳转
}else{
$sql = 'INSERT INTO `one` (`user_id`, `follow_id`, `follow_time`) VALUES ('.$user_id.','.$follow_id.','.time().') ON DUPLICATE KEY UPDATE follow_time='.time();
//ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法!
//这个语法适合用在需要判断记录是否存在,不存在则插入存在则更新的场景.在此防止多次关注插入记录
$rows=$pdo->exec($sql);
if($rows > 1){
$result['error'] = 2;
$result['info'] = '已经关注!';
$result['data'] = $rows;
}else{
$result['error'] = 1;
$result['info'] = '关注成功!';
}
}
echo json_encode($result);
} catch (Exception $e) {
echo $e->getMessage();
exit;
}
html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="../jquery-2.1.1.min.js"></script>
</head>
<body>
<div id="follow">点击关注</div>
<script>
$('#follow').click(function(){
$.ajax({
type:'post',
url:'./7-1.php',
dataType:'json',
success:function(data){
console.log(data);
}
})
})
</script>
</body>
</html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="../jquery-2.1.1.min.js"></script>
</head>
<body>
<div id="follow">点击关注</div>
<script>
$('#follow').click(function(){
$.ajax({
type:'post',
url:'./7-1.php',
dataType:'json',
success:function(data){
console.log(data);
}
})
})
</script>
</body>
</html>
数据库设计:
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT, #自增id
`user_id` mediumint(8) unsigned NOT NULL DEFAULT '0', #用户id
`follow_id` mediumint(8) unsigned NOT NULL DEFAULT '0', #被关注用户的id
`follow_time` int(11) unsigned NOT NULL DEFAULT '0', #关注时间
PRIMARY KEY (`id`), #id为主键
UNIQUE KEY `user_id` (`user_id`,`follow_id`) # 设置user_id、follow_id唯一,防止重复点击关注,重复添加数据
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT, #自增id
`user_id` mediumint(8) unsigned NOT NULL DEFAULT '0', #用户id
`follow_id` mediumint(8) unsigned NOT NULL DEFAULT '0', #被关注用户的id
`follow_time` int(11) unsigned NOT NULL DEFAULT '0', #关注时间
PRIMARY KEY (`id`), #id为主键
UNIQUE KEY `user_id` (`user_id`,`follow_id`) # 设置user_id、follow_id唯一,防止重复点击关注,重复添加数据
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;