ユーザーの操作をテーブルに保存する必要があります。非常に簡単です。 'user_id'と 'like'をクリックした 'item_id'を記録するために新しいテーブルを作成します。次に、ユーザーが訪問したときにこの表をチェックしたり、既にアイテムを好きにしたりしようとすると、PHP関数を使用することができます。チェックする
機能のようなものです:
function checkUserAction() {
$actionQuery = mysql_query("SELECT COUNT(*) AS total FROM actions WHERE user_id={$_SESSION['user']} AND item_id = {$_GET['item']}");
$actionTotal = mysql_fetch_array($actionQuery);
return $actionTotal['total'];
}
機能の項目に、ユーザの好みの数を返します。
if(checkUserAction()) { // if true don't link
echo "<br><img src='images/like.png' style='width:30px; height: 30px; margin-left: 10px;'/>";
} else { // if false link
echo "<br><a href='like.php?id=".$id."'><img src='images/like.png' style='width:30px; height: 30px; margin-left: 10px;'/></a>";
}
彼はすでにあなたは彼を知っているように別の画像を表示することができますクリックした場合:彼はすでに好きな場合は、リンクを表示したりしないように、真または偽のチェックを行うことができます。これにより0でない場合には、1になります。
mysql_query("INSERT INTO actions(user_id,item_id) VALUES({$_SESSION['user']},{$_GET['item']})");
UPDATE::これは、単一で、ユーザの好みを保存する方法のラフスケッチであるあなたが好きなの数を記録する場合、単純なINSERTクエリを実行する必要があるアクションを記録するために
行数千の作成を避けるためにテーブル内のフィールドは、「好き」の数字の文字列を格納するVARCHARTフィールドに変更する必要があります:
// The first time a user likes INSERT a new row
mysql_query("INSERT INTO test.doarray(user,likes) VALUES(1,'25,12')");
// New likes are added with CONCAT() separated with commas (or other char you choose)
mysql_query("UPDATE test.doarray SET likes = CONCAT(likes,',24,53') WHERE user = 1");
// Now when you fetch the data you can transform it in an array using explode()
$doQuery = mysql_query("SELECT * FROM test.doarray WHERE user = 1");
while($doFetch = mysql_fetch_array($doQuery)) {
$result = explode(",",$doFetch['likes']);
}
print_r($result);
項目がすでに使用して気に入っている場合今、あなたは確認することができます。
in_array($_GET['item_id],$result);
ローカルストレージを活用またはそのためのセッションストレージ – Jigar7521
好きなものはどこに保存されていますか? – Tom
ユーザIDと投稿IDを両方のカラムの2つの主キー(user_id、post_id)を持つテーブルに入れることができます。そのような仕組みについては非常に幅広い質問がありますが、これがリードです。がんばろう。 –