这是我的一些代码:
if(isset($_GET['nyaste'])) {
$query = mysql_query("SELECT * FROM jokes ORDER BY id DESC LIMIT 0, 12") or die(mysql_error());
while ( $result = mysql_fetch_assoc($query) ) {
$id = $result["id"];
if(isset($_POST['voteup'])) {
mysql_query("UPDATE jokes SET ranking = ranking + 1 WHERE id = $id ") or die(mysql_error());
}
if(isset($_POST['votedown'])) {
mysql_query("UPDATE jokes SET ranking = ranking - 1 WHERE id = $id ") or die(mysql_error());
}
现在,我的问题是,当我对某些内容进行upvote / downvote时,它会在所有帖子上添加/删除1个评级,而不仅仅是您想要评分的评分。你如何使投票独特或什么
答案 0 :(得分:0)
这一行
$query = mysql_query("SELECT * FROM jokes ORDER BY id DESC LIMIT 0, 12") ...
从表中获取一些笑话。然后脚本会通过
更改所有这些内容while ( $result = mysql_fetch_assoc($query) )
这意味着如果你在_POST中有'voteup'或'voteedown',循环将修改所有获取的笑话。
要解决此问题,你必须知道投票的笑话的ID。您可以使用一些请求变量来表明它。
答案 1 :(得分:0)
不要在查询的while()语句中包含_POST检查。
例如:
if(isset($_GET['nyaste'])) {
$add_to_vote = 0;
if(isset($_POST['voteup'])) {
$add_to_vote++;
}
else if(isset($_POST['votedown'])) {
$add_to_vote--;
}
$query = mysql_query("SELECT * FROM jokes ORDER BY id DESC LIMIT 0, 12") or die(mysql_error());
while ( $result = mysql_fetch_assoc($query) ) {
$id = $result["id"];
if($add_to_vote != 0){
// update the current ID
$query = mysql_query("UPDATE jokes SET ranking = ranking + $add_to_vote WHERE id = '$id'") or die(mysql_error());
}
}
但你应该一次只更新一个排名。你的脚本正在抓取0-12个笑话,并根据一个_POST变量(voteup或votedown)更新它们。