0

ブログのすべての投稿にいいねボタンがあり、ログインしているユーザーに 1 回だけいいねを押してもらいたい...

データベースに次の 3 つのテーブルがあります。

テーブル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 ;

今、私はこのコードを使用しており、ユーザーは何回でも投稿に「いいね!」をすることができます。ユーザーが投稿で1回だけいいね!

<?php
class Like
{
    function like()
    {
        if(isset($_POST['Gilla'])) 
        {   
            $sql="UPDATE shouts SET likes =  likes +1 WHERE id = '".$_POST['id']."'"; 
            $result=mysql_query($sql);
        }
    }
}
?>
4

1 に答える 1

2

すべての Like を記録するために、"shouts" を users テーブルにリンクする別のテーブルを作成する必要があります。投稿のいいねの合計数は、そのテーブルから計算できます (つまり、「SELECT COUNT(*) FROM user_shouts WHERE id = bla」)。ユーザーが「投稿」できるのは 1 回だけであることを確認する必要があります。 1つの投稿のそのテーブルに。

現在のインフラストラクチャは、要件を処理できるようには見えません。

于 2013-03-19T15:07:52.237 に答える