0

我要做的是在有人在“页面”上投票时计算选票。我想我迷失了自己试图弄清楚如何跟踪成员何时投票。我似乎无法获得代码来判断成员何时投票。

//Generate code ID
    $useXID = intval($_GET['id']);
    $useXrank = $_GET['rank'];

    //if($useXrank!=null && $useXID!=null) {
        $rankcheck = mysql_query('SELECT member_id,code_id FROM code_votes WHERE member_id="'.$_MEMBERINFO_ID.'" AND WHERE code_id="'.$useXID.'"');
            if(!mysql_fetch_array($rankcheck) && $useXrank=="up"){
                $rankset = mysql_query('SELECT * FROM code_votes WHERE member_id="'.$_MEMBERINFO_ID.'"');
                $ranksetfetch = mysql_fetch_array($rankset);
                $rankit = htmlentities($ranksetfetch['ranking']);
                $rankit+="1";
                mysql_query("INSERT INTO code_votes (member_id,code_id) VALUES ('$_MEMBERINFO_ID','$useXID')") or die(mysql_error());
                mysql_query("UPDATE code SET ranking = '".$rankit."' WHERE ID = '".$useXID."'");
            }
            elseif(!mysql_fetch_array($rankcheck) && $useXrank=="down"){
                $rankset = mysql_query('SELECT * FROM code_votes WHERE member_id="'.$_MEMBERINFO_ID.'"');
                $ranksetfetch = mysql_fetch_array($rankset);
                $rankit = htmlentities($ranksetfetch['ranking']);
                $rankit-="1";
                mysql_query("INSERT INTO code_votes (member_id,code_id) VALUES ('$_MEMBERINFO_ID','$useXID')") or die(mysql_error());
                mysql_query("UPDATE code SET ranking = '".$rankit."' WHERE ID = '".$useXID."'");
            }
            // hide vote links since already voted
            elseif(mysql_fetch_array($rankcheck)){$voted="true";}
    //}
4

3 回答 3

1

你太难了。对投票使用数值 +1,-1,并对表强制执行唯一约束:

扩展了一点:

create table votes (
  pageId    int references pages (pageId)
 ,memberId  int references members (memberId)
 ,value     int check (value in (-1,1))
 ,constraint votes_unique unique (pages,members)
)

现在您可以“选择总和(值)...”来获取用户在做什么、页面发生了什么等。

于 2011-01-15T21:08:51.780 回答
0

像这样的东西应该适合你 - 只需用所有东西代码替换所有东西图像。

PHP:星级评分系统概念?

于 2011-01-15T02:48:09.443 回答
0

您的第一个查询无效,因为它有两个 WHERE 子句。

于 2011-01-15T02:50:13.657 回答