0

这是我的一些代码:

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());  
}

现在,我的问题是,当我赞成/反对某件事时,它会在所有帖子上添加/删除 1 个评分,而不仅仅是您要评分的那个。您如何使选票独一无二或其他什么

4

2 回答 2

0

这条线

$query = mysql_query("SELECT * FROM jokes ORDER BY id DESC LIMIT 0, 12")  ...

从桌子上拿了一些笑话。然后脚本更改所有通过

while ( $result = mysql_fetch_assoc($query) )

这意味着如果您的 _POST 中有“voteup”或“votedown”,则循环将修改所有获取的笑话。

要解决此问题,您必须知道投票的笑话的 ID。您可以使用一些请求变量来指示它。

于 2012-06-23T20:27:28.857 回答
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 变量(投票或投票)更新它们。

于 2012-06-23T21:08:36.320 回答