2013-03-19 30 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