php - 跟踪投票并只允许每个成员投一票

标签 php mysql database tracking vote

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

//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";}
    //}

最佳答案

你把事情搞得太难了。使用数字值进行投票,+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)
)

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

关于php - 跟踪投票并只允许每个成员投一票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4697642/

相关文章:

php - 如何用英语单词拼出数字

php - 测试网址在 payumoney 中不起作用

mysql - 来自不同数据源的子查询(Eclipse 报告)

database - 访问权限数据库设计

javascript - 在 HTML5 中存储用户输入数据

PHP MySQL 表 w AJAX : Filling in data for the whole year (day by day, 一次只显示 7 天)

php - 在 MySQL 中插入多个 JSON 列(使用 API)

java - 无法连接到我的数据库

database - 为什么 npx prisma db Push 找不到我的 prisma 架构?

php - Apache2 Ubuntu : Virtualhost redirects to localhost