#php #html #mysql
#php #HTML #mysql
Вопрос:
Кто-нибудь может сказать мне, почему мой код вводит значение (id), а не (name) в выпадающем меню
- Этот пользовательский интерфейс
<?php
$sql_provinsi = mysqli_query(
$con,
"SELECT * FROM provinces ORDER BY name ASC"
);
?>
<select class="form-control" name="provinsi" id="provinsi" required>
<option></option>
<?php while (
$rs_provinsi = mysqli_fetch_assoc($sql_provinsi)
) {
echo '<option value="' .
$rs_provinsi["id"] .
'">' .
$rs_provinsi["name"] .
"</option>";
} ?>
</select>
- Это для публикации в phpmyadmin
if(isset($_POST['bsimpan']))
{
$simpan = mysqli_query($koneksi,
"INSERT INTO custa (nama, wa, provinsi, kota, kecamatan, kelurahan, alamat, paket)
VALUES ('$_POST[tnama]',
'$_POST[twa]',
'$_POST[provinsi]',
)"
);
Комментарии:
1. Пожалуйста, обратите внимание: базой данных является MYSQL, а не PHPMYADMIN. Последнее является всего лишь приложением для администрирования базы данных.
2. Вы действительно хотите вставить название провинции в БД, например, «Sumatera», а не только идентификатор, и сохранить эти имена в дополнительной таблице, подключенной через внешний ключ?
3. Это происходит потому, что html выбирает post для возврата данных в атрибуте «value» выбранной опции. Но это хорошо для вашей базы данных, потому что тогда вы получаете уникальный идентификатор, который идентифицирует строку, а не потенциально изменяемое или неоднозначное описание. Если вы отправите обратно имя, ваши данные станут денормализованными. Я подозреваю, что вам нужно немного больше изучить дизайн базы данных.
4. Внимание! Вы широко открыты для атак с использованием SQL-инъекций ! Вы должны использовать параметризованные подготовленные операторы вместо использования полностью неэкранированных пользовательских данных непосредственно в ваших запросах, подобных этому. Никогда, никогда, никогда не доверяйте вводу пользователя.
5. Нет, вам это не нужно в вашем mysql. Прочитайте наши комментарии еще раз. Вставка идентификатора — это правильная вещь. Это поле в вашей таблице custa должно быть внешним ключом к идентификатору в таблице провинций. Опять же, если вы этого не понимаете, пожалуйста, изучите дизайн базы данных более подробно, потому что это концепция, которую вы изучите довольно рано в этой теме.
Ответ №1:
Потому что вы помещаете идентификатор внутри атрибута value. Попробуйте это.
echo '<option value="'.$rs_provinsi['name'].'">'.$rs_provinsi['name'].'</option>';
Комментарии:
1. это работает, но остальная часть выпадающего списка больше не отображается