Я успешно извлек два столбца из моей таблицы и отобразил результат в виде опций в теге select в моей форме.

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

Нет проблем с подключением к базе данных или получением данных для опций в теге select.

Любая помощь будет оценена. Соответствующий код ниже.

     <div class="col-md-4 col-12 bottommargin-sm">
      <label for="">Choose currency</label>
      <select class="form-control" id="exampleFormControlSelect1">

        <option value="">Choose currency...</option>

        <?php

        // Including DB connection file
        include_once "config/config.php";

        // Retrieving all columns from currency table
        $result = mysqli_query($con, "SELECT * FROM currency_test");

        // Loop printing options with country and currrency for all rows in currency table
        while($row = mysqli_fetch_array($result)) {

          print "<option>";

          echo $row['country'] . " - " . $row['currency'];

          print "</option>";

        }

        // Closing DB connection
        mysqli_close($con);

        ?>

      </select>
    </div>

    <div class="col-md-2 col-12 bottommargin-sm">
      <label for="">Currency rate</label>
      <input type="text" class="form-control" value="<?php echo $row['buy_rate'] ?>" readonly>
    </div>

Дополнительное редактирование

Сейчас я использую следующий код, но все же безуспешно:

     <div class="col-md-4 col-12 bottommargin-sm">
      <label for="">Choose currency/label>
      <select class="form-control" id="exampleFormControlSelect1">

        <option value="default">Choose currency...</option>

        <?php

        // Including DB connection file
        include_once "config/config.php";

        // Retrieving all columns from currency table
        $result = mysqli_query($con, "SELECT * FROM currency_test");

        // Loop printing country, currrency, buy_rate and sell_rate for all rows in currency table
        while($row = mysqli_fetch_array($result)) {

          echo "<option value=".$row['currency']."> ".$row['country']. " - " .$row['currency']." </option>";

        }

        ?>

      </select>
    </div>

    <div class="col-md-2 col-12 bottommargin-sm">
      <label for="">Currency rate</label>
      <input type="text" class="form-control" value="<?php echo $row['buy_rate'] ?>" readonly>
    </div>

    <?php

    // Closing DB connection
    mysqli_close($con);

    ?>
-2
Zaki Hussain 20 Авг 2018 в 14:25

3 ответа

Лучший ответ

Как сказано выше, у вас есть результат SET в вашем цикле while, но вы хотите, чтобы поле ввода содержало только одно значение: курс покупки выбранной валюты. Если я угадал правильно, и это то, что вы хотите, это не будет работать так.

Если вы хотите протестировать его и просто получить только одно значение в цикле while, ваше поле ввода также будет заполнено правильным курсом покупки.

Вы можете сделать это с или без JavaScript, но вам нужно второе утверждение, чтобы получить желаемую цену покупки.

Дополнительные предложения по безопасности: Вы не должны использовать директивы include без __DIR __. Также вы не должны использовать «SELECT * ...». Лучше назвать все поля, которые вы хотите получить.

0
Asisito 20 Авг 2018 в 12:15

Итак, что я вижу:

1) Нет имени в выбранном теге

<select class="form-control" id="exampleFormControlSelect1">

Нет имени атрибута. Поэтому после публикации формы сервер не знает имя переменной.

2) Нет значения

print "<option>";

Вы не предоставляете значение. Таким образом, ваш сервер не знает значение (выбранный пользователем) после публикации формы.

Это правильный способ выбора тега: https://www.w3schools.com/tags/ tag_select.asp

-2
fransyozef 20 Авг 2018 в 11:32

Вы должны иметь заявление для этого выбора. (Подсказка: также в теге вам нужно будет установить атрибут value) Также вашему выбору нужно имя, если вы используете кнопку отправки.

Теперь, когда вы отправляете форму, вы можете запросить базу данных и показать правильную запись.

Если вы не хотите использовать кнопку «Отправить», а значение в текстовом поле изменяется при выборе, вам понадобится JavaScript.

-1
Dieter Kräutl 20 Авг 2018 в 11:34
51929753