1

我有这个我正在使用的问卷调查工具,它一次显示一个问题(从下拉菜单中选择),您可以选择答案,它会使用单击提交按钮时选择的选项更新 db。我现在需要在同一页面上有多个问题,我不确定如何扩展我的代码来做到这一点。如果这是一个愚蠢的问题,我很抱歉。

我的流程代码如下:

if($selected_radio == "A") {
            $votedSQL = "UPDATE tangible SET VotedA = VotedA + 1 WHERE ID = ?";
            $voteMessage = insert_vote($db_found, $votedSQL, $idNumber);
        }
        else if($selected_radio == "B"){
            $votedSQL = "UPDATE tangible SET VotedB = VotedB + 1 WHERE ID = ?";
            $voteMessage = insert_vote($db_found, $votedSQL, $idNumber);
        }
        else if($selected_radio == "C"){
            $votedSQL = "UPDATE tangible SET VotedC = VotedC + 1 WHERE ID = ?";
            $voteMessage = insert_vote($db_found, $votedSQL, $idNumber);
        }
        else if($selected_radio == "D"){
            $votedSQL = "UPDATE tangible SET VotedD = VotedD + 1 WHERE ID = ?";
            $voteMessage = insert_vote($db_found, $votedSQL, $idNumber);
        }
        else {
    error messages

用这个将投票插入数据库:

function insert_vote($db, $sql, $id) {

$stmt = $db->prepare($sql);
$stmt->bind_param('i', $id);
$stmt->execute();

我使用以下网址跟踪谁投票:

if (isset($_GET['h1'])) {
    $qID = $_GET['h1'];
} else {
    $qID = 1;
}

如果您需要其他任何东西,请告诉我,我提前感谢您的帮助!

4

1 回答 1

0

好吧,您当然可以通过以下方式进行一些简化:

if (preg_match('/^[A-D]$/', $selected_radio)) {
    $votedSQL = "UPDATE tangible SET Voted{$selected_radio} = Voted{$selected_radio} + 1 WHERE ID = ?";
    $voteMessage = insert_vote($db_found, $votedSQL, $idNumber);
} else // error handling

我确信您可以进行其他优化,但这至少可以减少一个头痛。

于 2019-08-04T23:55:20.297 回答