Я успешно извлек два столбца из моей таблицы и отобразил результат в виде опций в теге 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);
?>
3 ответа
Как сказано выше, у вас есть результат SET в вашем цикле while, но вы хотите, чтобы поле ввода содержало только одно значение: курс покупки выбранной валюты. Если я угадал правильно, и это то, что вы хотите, это не будет работать так.
Если вы хотите протестировать его и просто получить только одно значение в цикле while, ваше поле ввода также будет заполнено правильным курсом покупки.
Вы можете сделать это с или без JavaScript, но вам нужно второе утверждение, чтобы получить желаемую цену покупки.
Дополнительные предложения по безопасности: Вы не должны использовать директивы include без __DIR __. Также вы не должны использовать «SELECT * ...». Лучше назвать все поля, которые вы хотите получить.
Итак, что я вижу:
1) Нет имени в выбранном теге
<select class="form-control" id="exampleFormControlSelect1">
Нет имени атрибута. Поэтому после публикации формы сервер не знает имя переменной.
2) Нет значения
print "<option>";
Вы не предоставляете значение. Таким образом, ваш сервер не знает значение (выбранный пользователем) после публикации формы.
Это правильный способ выбора тега: https://www.w3schools.com/tags/ tag_select.asp
Вы должны иметь заявление для этого выбора. (Подсказка: также в теге вам нужно будет установить атрибут value) Также вашему выбору нужно имя, если вы используете кнопку отправки.
Теперь, когда вы отправляете форму, вы можете запросить базу данных и показать правильную запись.
Если вы не хотите использовать кнопку «Отправить», а значение в текстовом поле изменяется при выборе, вам понадобится JavaScript.
Похожие вопросы
Новые вопросы
php
PHP является широко используемым, высокоуровневым, динамическим, объектно-ориентированным и интерпретируемым языком сценариев, в первую очередь предназначенным для серверной веб-разработки. Используется для вопросов о языке PHP.