【发布时间】:2016-09-19 06:25:30
【问题描述】:
我使用 PHPMyAdmin 创建了一个 MySQL 数据库,该数据库存储用户在网页上选择的数据。基本上,用户可以点击页面上的按钮,当他们被点击时,数据库中的相应列从0变为1。但是,我只希望每个用户最多可以选择6个选项。 例如:
idopt1opt2opt3opt4opt5opt6opt7opt8总计
1 0 1 0 0 0 1 1 0 3
2 1 1 1 1 0 1 0 1 6
3 1 0 0 0 0 0 0 0 1
“id”代表每个单独的用户,“opt#”是他们选择的选项,“total”是选择的选项数量。
我使用的代码是
//$id is the id of the user that is logged in
$total=$row['total']; //Fetch data from column 'total' for logged in user
$choice=$_GET['opt']; //Set 'choice' variable to value submitted by button
$selected=$row[$choice]; //Fetch value of corresponding column
if ($total>= 6) {
echo "Too many selected";
}
elseif (!$selected) {
mysqli_query($con,"UPDATE `choices` SET `$choice` = '1', `total` = total+1 WHERE `choices`.`id` = '$id'");
}
else {
echo "You have already selected this";
};
此代码运行良好,并且在 count 等于 6 时阻止数据库更新,但我担心用户可能会修改该值,因为选择的选项比他们应该的要多,或者当我添加时可能会出现问题允许用户取消选择选项的代码。
是否可以通过计算值为 1 的“opt#”列的数量而不是每次用户选择另一个选项时加 1 来使“total”列自动更新?我想这将涉及添加值,但由于我是 PHP 和 MySQL 的初学者,我不确定我必须使用什么代码来实现它。
希望我的问题不会太令人困惑(我很乐意澄清任何事情)。谢谢。
【问题讨论】:
标签: php html mysql optimization phpmyadmin