我的博客中的每个帖子都有一个Like Buton,我想让用户登录只有一次帖子...
我的数据库中有三个表:
表tbladminXshouts
CREATE TABLE `tbladminXshouts` (
`admin_id` int(20) NOT NULL,
`id` int(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
表tbladmin
CREATE TABLE `tbladmin` (
`admin_id` int(11) NOT NULL AUTO_INCREMENT,
`admin_usr_name` varchar(225) NOT NULL,
`admin_pwd` varchar(225) NOT NULL,
PRIMARY KEY (`admin_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=23 ;
表shouts
CREATE TABLE `shouts` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`email` varchar(60) NOT NULL,
`lund` varchar(70) NOT NULL,
`LundaBlogg` varchar(20) NOT NULL,
`date` datetime NOT NULL,
`likes` int(11) NOT NULL,
`post` text NOT NULL,
`ipaddress` varchar(45) NOT NULL,
`userName` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
KEY `email` (`email`),
KEY `lund` (`lund`),
KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=25 ;
现在我正在使用此代码,用户可以根据帖子喜欢他们想要多少次。 我应该写什么SQL让我的用户在帖子上只喜欢一次?
<?php
class Like
{
function like()
{
if(isset($_POST['Gilla']))
{
$sql="UPDATE shouts SET likes = likes +1 WHERE id = '".$_POST['id']."'";
$result=mysql_query($sql);
}
}
}
?>
答案 0 :(得分:2)
您必须创建另一个表,将“shouts”与您的users表相关联,以记录每个Like。 可以从该表中计算帖子的总喜欢量(即'SELECT COUNT(*)FROM user_shouts WHERE id = bla'),并且您必须确保用户只能“发布”一次在该表中有一个帖子。
您当前的基础架构看起来不能满足您的要求。