我在向我的数据库存储喜欢/不喜欢值时遇到问题,我需要每个帖子让它自己喜欢/不喜欢列存储在其行中,当有人喜欢这个帖子时,它只是为了它比如发布而不是其他任何内容,我遇到的问题是它喜欢数据库中的第一个条目,有人可以提供指导吗?
如果它有助于继承数据库的图片
$likes = (empty($_POST['like'])) ? : $_POST['like'] ;
$dislikes = (empty($_POST['dislike'])) ? : $_POST['dislike'] ;
$ip = $_SERVER['REMOTE_ADDR'];
if(isset($_POST['like'])){
$likes1 = $likes+1;
$voted1 = $voted+1;
$query2 = $db->prepare("INSERT INTO data (voted, ip) VALUES (:voted, :ip)");
$query2->bindParam(':voted', $voted1, PDO::PARAM_STR);
$query2->bindParam(':ip', $ip, PDO::PARAM_STR);
$query2->bindParam(':pid', $pid, PDO::PARAM_STR);
$query2->execute();
$update1 = $db->prepare("UPDATE data SET likes = :likes");
$update1->bindParam(':likes', $likes1, PDO::PARAM_STR);
$update1->bindParam(':quote', $actual_quote, PDO::PARAM_STR);
$update1->execute();
header("Location: inspirational.php?");
}
if(isset($_POST['dislike'])){
$dislikes1 = $dislikes+1;
$voted1 = $voted+1;
$query2 = $db->prepare("INSERT INTO data (voted, ip) VALUES (:voted, :ip)");
$query2->bindParam(':voted', $voted1, PDO::PARAM_STR);
$query2->bindParam(':ip', $ip, PDO::PARAM_STR);
$query2->execute();
$update1 = $db->prepare("UPDATE data SET dislikes = :dislikes");
$update1->bindParam(':dislikes', $dislikes1, PDO::PARAM_STR);
$update1->bindParam(':quote', $actual_quote, PDO::PARAM_STR);
$update1->execute();
header("Location: inspirational.php?");
}
$stmt = $db->query("SELECT * FROM data");
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$row3 = $stmt->fetch();
$query = $db->prepare("SELECT * FROM data WHERE formtype = 'Inspirational' ");
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC);
//delete this-> $info = mysql_fetch_array($query1); ?
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<div class="wrapper">
<div class="submissions">
<div class="logo-logo"><h2>Questions.</h2>
<div class="checkboxes"><?php echo htmlentities($row["formtype"]); ?></div>
</div>
<div class="top-submit">
“<?php echo htmlentities($row["actual_quote"]); ?>”
</div>
<div class="poster">- <?php echo htmlentities($row["poster"]);
if(isset($row3["voted"]) && isset($row3["ip"]))
{
echo "You have already voted for this.";
}
else
{
?>
<form action="" method="post">
<input type="submit" name="dislike" value="dislike" />
<input type="submit" name="like" value="like" />
</form> <?php
}
?>
答案 0 :(得分:0)
我已经在我的一个项目上试过了这个结构。不同之处在于我在评级系统上尝试过它。我更喜欢将喜欢和不喜欢存储为JSON文本格式,以便您可以轻松地操作它。
喜欢/不喜欢json格式
{user_id:1}
user_id是喜欢/不喜欢特定帖子的用户。 1表示喜欢/不喜欢帖子。例如。
Like/Dislike Column
{0001:1, 0002:1; 0003:1}
您可以对此进行json_decode并输出为
阵列([0001] =&gt; 1,[0002] =&gt; 2,[0003] =&gt; 3)
如果您使用函数array_key_exists,则可以验证用户是否喜欢该帖子。并使用array_count计算它。
我更喜欢在javascript中计算喜欢/不喜欢和验证,因此它不会减慢你的应用程序。我确信在javascript中有一个等效的php计数和验证方法。
希望这有帮助。