Получение значения от выбора и повторения

Я создал форму с тегом select, который генерирует параметры из файла .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;

Rajnish 11.04.2018 13:35

Извините, моя ошибка ... Я исправил это, но переменная по-прежнему не отображается, она просто пуста без ошибок. Спасибо, что заметили ошибку.

Zeki 11.04.2018 13:38

Я вижу тег формы, но не могу найти кнопку отправки. Как будет "$ _POST ['selectedCurrency'];" работать, если форма не отправлена

Rajnish 11.04.2018 13:40

В моем фактическом коде есть кнопка отправки, но мне пришлось удалить ее, потому что сообщение содержало слишком много кода. Извините за путаницу.

Zeki 11.04.2018 13:49

Чувак, напишите javascript / jQuery для атрибута onchange вашего тега select

Rajnish 11.04.2018 14:11
2
5
60
3

Ответы 3

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, чтобы она была доступна в цикле и вы могли проверить ее по значению параметров.

Я пробовал это, но он по-прежнему не выводит выбранный вариант по какой-то причине ... Он не выдает ошибок, но он просто оказывается пустым.

Zeki 11.04.2018 13:48

Вы уверены, что отправляете форму? потому что $_POST['selectedCurrency'] эта переменная будет доступна только после отправки формы

Sagar Guhe 11.04.2018 13:53

Я хочу, чтобы значение отображалось перед отправкой формы. Следует ли мне удалить $ _POST?

Zeki 11.04.2018 13:54
«Я хочу, чтобы значение отображалось перед отправкой формы. Следует ли мне удалить $ _POST?» - Для этого вам понадобится JS.
Funk Forty Niner 11.04.2018 13:55

как @FunkFortyNiner вам может понадобиться javascript .. но ваш вопрос сейчас звучит неясно.

Sagar Guhe 11.04.2018 13:58

Первоначально я понимал, что я могу это сделать в PHP, поэтому мой вопрос сейчас может быть неясным ... но на самом деле мои вопросы заключаются в том, как я получаю выбранное значение для отображения позже в форме.

Zeki 11.04.2018 14:00

@ZakiHussain, тебе нужно принять решение здесь. Голосование за закрытие вопроса как неясного.

Funk Forty Niner 11.04.2018 14:00

@FunkFortyNiner, у меня все еще вопрос: "Как я могу отобразить выбранную опцию позже в форме"

Zeki 11.04.2018 14:10

Если вы хотите, чтобы что-то произошло перед отправкой формы, вам придется использовать для этого 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);
});

Вы также должны посмотреть на правку, которая была внесена в вопрос.

Funk Forty Niner 11.04.2018 13:58

Можете ли вы указать, о какой части вы говорите? Он отредактировал вопрос после того, как я сказал ему о несовпадении переменных

Rajnish 11.04.2018 14:01

Почему ОП должен «делать это вот так»? В хороший ответ всегда будет объяснение того, что было сделано и почему это было сделано таким образом, не только для OP, но и для будущих посетителей SO.

Jay Blanchard 11.04.2018 14:01

@Rajnish, извините, но я обнаружил, что пытался использовать $ _POST неправильно, так как он отображал переменную только после отправки формы. Я пытаюсь отобразить его перед отправкой.

Zeki 11.04.2018 14:06

Я исправил проблему, используя атрибут onChange в моем теге select, а затем написал следующую функцию:

    <script>

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

    </script>

Другие вопросы по теме