0

そういう機能をゼロから作って学ぶのは面白いのですが、そういう構造を理解して計画するのに苦労しています。私が見たほとんどのプログラマーは、誰かがすでにコメントや投稿を評価しているかどうかを IP アドレスでチェックしています。特に、各ユーザーがログインして投票する必要があるという事実のために、私はそれを嫌います。 iP。また、私はルックスよりもパフォーマンスを選ぶ傾向があるので、これを達成する方法を誰かが理解するのを手伝ってくれませんか. SO(StackOverflow) に関する多くの投稿を読んで検索しましたが、それらは私にとって包括的ではありません。また、1 票のみを許可する UNIQUE KEY 制約があることをどこかで読みましたが、それは正しいですか?

テーブル構造に関するいくつかの提案と、おそらく設計方法を教えていただければ幸いです。

私はそのような構造と混同しています。次の表は私がこれまでに得たものです。

Posts:
post_iD | message | uid_fk(user id) | voteUp | voteDown

PostsRateSystem:
rate_iD | rate_user_iD(uid_fk from posts table) | 

誰が評価したかを追跡するために、2 つ目のテーブルが必要ですか?

if(isset($_POST['plus']) && isset($_POST['minus'])){
    $plus = $_POST['plus'];
    $minus = $_POST['minus'];
    $row = insertRate($post_iD, $plus, $minus);
}

<form method="post" action="">
    <a href="javascript:;" name="plus" id="<?php echo $row['post_iD'];?>">Thumbs Up</a>  
    <a href="javascript:;" name="minus" id="<?php echo $row['post_iD'];?>">Thumbs Down</a>

function insertRate($post_iD, $plus, $minus)
{
    if($plus)
    {
        $sth = $this->db->prepare("UPDATE posts SET voteUp = 1 WHERE post_iD = :postiD");
        $sth->execute(array('postiD' => $post_iD));
    }
    if($minus)
    {
        $sth = $this->db->prepare("UPDATE posts SET voteDown = 1 WHERE post_iD = :postiD");
        $sth->execute(array('postiD' => $post_iD));
    }
}
4

1 に答える 1