【问题标题】:Getting values from a select input from database从数据库的选择输入中获取值
【发布时间】:2015-10-19 07:24:31
【问题描述】:

我有以下代码,如果选择了用户,我希望他们的值出现在输入框中,最终我将更改其值。

if ($stmt = $con->prepare("SELECT * FROM team_rankings")) {

    $stmt->execute();
    $stmt->bind_result($ranking_id, $ranking_user_id, $ranking_firstname, $ranking_username, $ranking_division, $ranking_wins, $ranking_losses); 

    //var_dump($stmt);

    if (!$stmt) {
        throw new Exception($con->error);
    }

$stmt->store_result();
    echo "<select name = 'member'>";
    while ($row = $stmt->fetch()) {

     echo "<option value = '{$ranking_user_id}'";
        echo ">{$ranking_firstname}</option>";
    }
    echo "</select>";


    }   else {
        echo "<p>There are not any team players yet.</p>";
        }
}
catch (Exception $e)
{
    echo "Error: " . $e->getMessage();
}
?><br><br>
    <label>Win
        <input type="text" value="<?php echo $ranking_wins; ?>">
    </label>
    <label>Loss
        <input type="text" value="<?php echo $ranking_losses; ?>">
    </label>

我该如何构建这个结构,以便从选择输入中选择的内容中只显示用户的输赢。

【问题讨论】:

  • 用他们的 userid 填充选项值并扩展您的查询 ... WHERE userid=userid
  • 学校项目在这里进行?? stackoverflow.com/questions/31680311/…
  • @bub 我用你的建议更新了我的问题。这些值仍然不能反映我的数据库中的内容。
  • 我想你问的是对选定用户有赢有输。您在这里想要的是将所有用户拉入成员选择。然后,将 onChange JS 事件添加到提交页面的下拉列表中。然后在同一页面上检查是否设置了值......好吧:)......这里有很多东西要添加,但你首先需要说这就是你真正想要的:)
  • @hummingBird 是的,这就是我想要的。如果从下拉框中选择 Joe 并且他有 3 胜 2 负,我希望显示这些值。如果 Ann 被选中并且她有 2 胜 3 负,我希望显示这些值,等等。

标签: php mysql input while-loop


【解决方案1】:

这是一个操作方法,但您需要填写一些详细信息。

首先,您需要将onChange 添加到下拉列表中,然后实现自动提交表单的功能或(更简单)广告提交按钮。这样,您的页面将要求用户在更改下拉列表中的值后单击“提交”,但这应该没问题。

完成后,您需要在脚本开头添加如下内容:

$selectedUser = intval($_POST['selected_user_id']); // or $_GET
$wins = 0;
$losses = 0;

(我在这里通过转换为 int 进行了一些基本的输入验证 - 不确定这是否可行)。 然后,将这样的内容添加到您的 while 循环中:

while ($row = $stmt->fetch()) {

     echo "<option value = '{$ranking_user_id}'"; 
     if ($ranking_user_id == $selectedUser) {
        echo 'selected';
        $wins = $ranking_wins;
        $losses = $ranking_losses;
     }
     echo ">{$ranking_firstname}</option>";
}

这将允许您选择的用户在您单击提交后保持选中状态。

最后,你需要输入输赢:

    <label>Win
        <input type="text" value="<?php echo $wins; ?>">
    </label>
    <label>Loss
        <input type="text" value="<?php echo $losses; ?>">
    </label>

请注意,我使用的是我自己的胜负,而不是在每个 while-pass 中绑定的那些值。

注意 2:你的表单应该是这样的:

<form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> method="post">

这样,当您提交时,您只需将数据发送到同一个脚本。

【讨论】:

  • $wins$losses 有来自我的数据库的实际值时,我为什么要将它们设置为0?我的目标是显示这些值,然后可以选择在修改值时提交更改。像4胜改为5胜,然后提交。这对它有用吗?
  • 您将它们设置为 0,因为您稍后将它们设置为实际值(在 while 循环中)。
  • 好的,我将如何处理 onchange 事件?我对JS不太了解。
  • 你不需要 onchange 的东西。这是一种“简洁”的方法,但在禁用 js 的环境中不起作用。但如果你真的想要它,这里有一个可以提供帮助的链接:stackoverflow.com/questions/16767871/…
  • 我在这里没有注意到您的表单需要设置适当的操作...我将更新答案
猜你喜欢
  • 2013-11-25
  • 2015-10-05
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 2021-10-21
  • 2017-10-21
  • 1970-01-01
  • 2012-12-26
相关资源
最近更新 更多