【问题标题】:Getting value from a select and echoing从选择中获取价值并回显
【发布时间】:2018-04-11 11:30:44
【问题描述】:

我已经构建了一个带有选择标签的表单,它从 .csv 文件生成选项。但我无法获得选定的选项,然后在表格中回显它。

变量名为 $selectedCurrency。

编辑:我不想在发布/提交表单之前显示值,因此我对使用 $_POST 的理解是错误的。

<form method="post">
  <div class="form-group">
    <label for="exampleFormControlSelect1" class="mb-3">Hvilket land eller valuta?</label>
    <select class="form-control" name="selectedCurrency" id="selectedCurrency">

          <?php
          $handle = fopen("currency/kurs.csv", "r");
          $g=0;

          while (($data = fgetcsv($handle, 1000, ";")) !== false) {
              $num = count($data);

              if ($g!=0) {
                  ?>

          <option value="<?php echo $data[0]; ?>">
            <?php echo $data[1]; ?> - <?php echo $data[2]; ?>
          </option>

          <?php
              }
              $g++;
          }
            fclose($handle);

          $selected_val = $_POST['selectedCurrency'];

          ?>

        </select>
  </div>

  <div class="form-group">
    <label for="exampleFormControlInput1" class="mb-3">Hvor meget vil du købe?</label>
    <input type="number" class="form-control" placeholder="Beløb i <?php echo $selected_val ?>">
  </div>
  </div>

</form>

编辑:我希望在提交表单之前显示该值。

【问题讨论】:

  • 你正在使用这个:$selected_val = $_POST['selectedCurrency'];然后回显 $selectedCurrency;
  • 对不起,我的错误......我已经纠正了它,但变量仍然没有得到回显,它只是空的,没有任何错误。感谢您注意到错误。
  • 我看到了表单标签,但我找不到提交按钮。 "$_POST['selectedCurrency'];" 将如何如果未提交表单,则工作
  • 我的实际代码中有一个提交按钮,但我不得不删除它,因为帖子包含的代码太多。很抱歉造成混乱。
  • 老兄,为你的选择标签的“onchange”属性编写javascript/jQuery

标签: php html file csv


【解决方案1】:

while 部分代码应如下所示:

$selected_val = $_POST['selectedCurrency'];
while (($data = fgetcsv($handle, 1000, ";")) !== false) {
    $num = count($data);

    if ($g!=0) {
    ?>

        <option value="<?php echo $data[0]; ?>" <?php echo $selected_val == $data[0] ? "selected": "" ?>>
            <?php echo $data[1]; ?> - <?php echo $data[2]; ?>
        </option>

    <?php
    }
    $g++;
}

$selected_val 变量移到 while 循环上方,以便它在循环下可用,您可以根据选项值检查它。

【讨论】:

  • 我已经尝试过了,但由于某种原因它仍然不会输出选定的选项...它没有给出任何错误,但结果却是空的。
  • 您确定要提交表单吗?因为$_POST['selectedCurrency']这个变量只有在表单提交后才可用
  • 我希望在提交表单之前显示该值。我应该删除 $_POST 吗?
  • “我希望在提交表单之前显示该值。我应该删除 $_POST 吗?” - 你需要 JS。
  • 作为@FunkFortyNiner,你可能需要javascript..但你的问题现在听起来更不清楚了。
【解决方案2】:

如果您希望在提交表单之前发生某些事情,则必须为此使用 Javascript/jQuery。在你的情况下:

    $("#selectedCurrency").change(function(){
    let scurrency = $("#selectedCurrency").val();
   //add id into input [type="number"] tag, for precise selection targeted input tag."
   //I have used "svalue" as id of input type number
   $('#svalue').val(scurrency);
});

【讨论】:

  • 您还应该查看对问题所做的编辑。
  • 你能具体说明你在说哪一部分吗,我告诉他变量不匹配后,他编辑了问题
  • 为什么 OP 应该“这样做”? 好的答案将始终解释所做的事情以及为什么以这种方式完成,不仅是为了 OP,也是为了 SO 的未来访问者。跨度>
  • @Rajnish,对不起,但我发现我试图使用 $_POST 错误,因为它只会在提交表单后显示变量。我正在尝试在提交之前显示它。
【解决方案3】:

我在我的选择标签上使用 onChange 属性解决了这个问题,然后编写了以下函数:

    <script>

      function getSelectedCurrency(selectObject) {
        var currency = selectObject.value;
        document.getElementById("selectedCurrency").innerHTML = currency;
      }

    </script>

【讨论】:

    猜你喜欢
    • 2018-05-30
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 2015-03-29
    • 2018-03-08
    • 2011-12-30
    相关资源
    最近更新 更多