【问题标题】:Passing selected Value from options to a php variable将选项中的选定值传递给 php 变量
【发布时间】:2020-11-10 20:15:22
【问题描述】:

我想创建一个表单,我可以在其中访问多个表,并通过这些表为用户提供有关条目的选择。 我有一个“系统”表,用户可以从中选择一个系统。 为此,我有一个“用户”表,用户可以从中选择一个用户。 应选择此数据并将其存储在第三个表“报告”中。 我的代码如下所示:

if (isset($_POST['submit'])) {
    $systemId = $_POST['systemId'];
    $userId = $_POST['userId'];
    
}

if ($db->addReport('reports', ["systemId" => $systemId, "userId" => $userId,)) {
    echo("Entry added");
}

?>


<p>Create report</p>
<form action="" method="post">
    <?php $entries = $db->getSystem(); ?>
    <div class="form">
        <label>System</label>
        <select name="systemId" class="form-control">
            <?php foreach ($entries as $option) : ?>
                <option value="<?php ($option[0]) ?>" selected="<?php ($option[0]) ?>"> <?php echo($option[0]) ?> </option>
            <?php endforeach; ?>
        </select>
    </div>
    <input type="submit" name="submit" value="Submit">
</form>

为了简单起见,我省略了与用户相关的部分,因为我的操作与系统操作完全相同。

我的问题是在数据库中创建了一个条目,但值始终为“0”。但是,数据库中也有值不为 0 的条目。在选择上下文中向我显示了正确的名称,但实际写入数据库的名称是错误的。

所以我无法将正确的值传递给变量“systemId”。 我在互联网上尝试了几件事,不幸的是没有任何效果。

注意:与数据库的连接工作正常。运行查询没有任何问题。

【问题讨论】:

    标签: php html mysql database options


    【解决方案1】:

    即使表单尚未提交,您仍在运行插入命令。只需将该命令移动到检查提交数据的if 语句中,以便它仅在响应合适的 POST 请求时运行。

    if(isset($_POST['submit']))
    {    
      $systemId = $_POST['systemId'];
      $userId = $_POST['userId']; 
    
      if($db->addReport('reports',["systemId"=> $systemId, "userId"=>$userId,)){
         echo("Entry added");
       }
    }
    

    【讨论】:

    • 不幸的是,这并没有解决我的问题。还是输入了错误的值
    • 好吧,这可能是解决问题的第一步。 (顺便说一句,这当然不会删除以前输入的任何错误值)。无论如何,您的下一步是进行一些调试 - 向此代码添加一些日志记录,以便您可以在提交时看到 systemId 变量的值。例如作为最简单的方法,在$systemId =...line 之前添加var_dump($_POST['systemId']);,它会显示提交的值。或者您可以将其记录到文件中。如果这似乎是正确的,那么问题可能出在 addReport 函数中。如果某些 ID 不正确,那么问题可能出在 HTML 表单中。
    • 我已插入代码并得到结果“string(0)”“”。但是选择的值是“3”。所以我可以假设变量“systemId”在按下提交按钮后没有得到正确的值。这正是我达到极限的地方:) addReport() 函数做了它应该做的。如果我添加一个文本框并且不使用选择,它将准确报告我在文本框中输入的值。
    • 就像我说的,这表明您需要检查您的代码正在生成什么 HTML。选项中可能缺少某些值
    • 好吧,我必须在我的值标签后添加一个“选定”。这就是你需要做的所有事情。
    猜你喜欢
    • 1970-01-01
    • 2011-09-15
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多