我需要为每个帖子找一个相似的按钮,这样每次while返回结果时,每个结果都有一个他们独有的类似按钮,如果这个人可以投票给我,那么我现在遇到的问题,但是它是什么,所有其他单独的帖子都被封锁了,因为他们已经投票,任何建议? 如果您需要推荐我想要拥有的类似系统,就像我需要它就像这个网站一样。 http://fmylife.com/ 他们的结构就像我正在寻找的那样
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<div class="wrapper">
<div class="submissions">
<div class="logo-logo"><h2>Quotr.</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="like" value="like" />
<input type="submit" name="dislike" value="dislike" />
</form>
<?php
}
?>
<div class="like"></div>
<div class="dislike"></div>
</div>
<!-- use select to get the items to stay on the page-->
</div>
</div>
<?php
}
?>
以下是类似按钮/不喜欢的代码:
$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 voters (voted, ip) VALUES ( :voted, :ip)");
$query2->bindParam(':voted', $voted1, PDO::PARAM_STR);
$query2->bindParam(':ip', $ip, PDO::PARAM_STR);
$query2->execute();
header("Location: like.php?");
$update1 = $db->prepare("INSERT INTO votes (likes) VALUES ( :likes)");
$update1->bindParam(':likes', $likes1, PDO::PARAM_STR);
$update1->execute();
}
if(isset($_POST['dislike'])){
$dislikes1 = $dislikes+1;
$voted1 = $voted+1;
$query2 = $db->prepare("INSERT INTO voters (voted, ip) VALUES ( :voted, :ip)");
$query2->bindParam(':voted', $voted1, PDO::PARAM_STR);
$query2->bindParam(':ip', $ip, PDO::PARAM_STR);
$query2->execute();
header("Location: like.php?");
$update1 = $db->prepare("INSERT INTO votes (dislikes) VALUES ( :dislikes)");
$update1->bindParam(':dislikes', $dislikes1, PDO::PARAM_STR);
$update1->execute();
}
$stmt = $db->query("SELECT * FROM voters");
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$row3 = $stmt->fetch();
答案 0 :(得分:0)
我认为您可以从代码中退一步并思考您要完成的任务,从而获益。当用户“喜欢”某些东西时,他们喜欢什么?大概是引用?
所以我认为你需要一个与用户,报价和喜欢相关的数据模型。
有几种不同的方法可以做到这一点,但我建议先在纸上画出来。 使用数据库模式,投票表只取整数。
只是建立你已经拥有的东西,试着想一想这样的问题:
Votes
-----
voter_id
quote_id
value
然后在你的while循环中你可以创建一个像(这是伪代码)的表单:
<form action="" method="post">
<input type="hidden" name="quote_id" value="<?php echo $row['id']; ?>" />
<input type="submit" name="Dislike" value="-1" />
<input type="submit" name="Like" value="1" />
</form>
您可以在投票表中插入记录,在将其插入数据库后,跟踪他们投票的内容以及投票人的ID。 (旁注:对用户进行身份验证或跟踪用户会话可能比通过IP跟踪更好,但您可以稍后担心)
鉴于该架构,您现在可以查询选民之前是否已投票给该quote_id。或者总结一下user_id对多少喜欢或不喜欢的投票。
只是一些值得思考的东西。希望能帮助您走上正确的道路。