2013-03-19 31 views
0

我在我的博客每篇文章一个布通一样,我想在用户进行登录到喜欢的讯息只有一次......如何使登录用户只在帖子上只有一次?

我在我的数据库这三个表:

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

不是问题的答案,但请在将它输入sql语句之前对输入进行清理以防止sql注入 – Mark 2013-03-19 15:07:14

+0

**小心!**'mysql_ *'函数[老且不应该再使用]( http://bit.ly/phpmsql)。请查看[PDO](http://php.net/pdo)或[MySQLi](http://php.net/msqli),这些更好[MySQL API选项](http:// php。净/手动/ EN/mysqlinfo.api.choosing.php)。 – 2013-03-19 15:08:08

+0

编写一个查询,选择他们标记为的项目。不要显示任何可以让他们再次喜欢这些物品的东西。 – 2013-03-19 15:08:11

回答

2

您必须创建另一个表,将“留言”与您的用户表链接起来,以保留每个赞的记录。 可以通过该表格计算出帖子的喜欢总量(即'SELECT COUNT(*)FROM user_shouts WHERE id = bla'),并且您必须确保用户只能“发布”一个时间在这张表上的一个职位。

您当前的基础设施看起来不像它可以处理您的要求。

+0

谢谢,但我想你的意思是这些tabel:CREATE TABLE'tbladminXshouts'( 'admin_id' int(20)NOT NULL, 'id' int(20)NOT NULL )ENGINE = InnoDB DEFAULT CHARSET = latin1; ,或者也许我错了...... – 2013-03-19 15:25:42

+0

@BrunoChavez - tbladminXshouts似乎是将tbladmin连接到'shouts'。 Niek是正确的,你将需要一张新桌子。 – 2013-03-19 16:09:09

+0

@ Clockwork-Muse谢谢。好的,我明白了......你能帮我解决一下我需要的桌子吗? – 2013-03-19 18:02:24