Введите соответствующее значение (name) вместо (id) в phpmyadmin с помощью php

#php #html #mysql

#php #HTML #mysql

Вопрос:

Кто-нибудь может сказать мне, почему мой код вводит значение (id), а не (name) в выпадающем меню

введите описание изображения здесь

  1. Этот пользовательский интерфейс
     <?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>
 
  1. Это для публикации в 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. это работает, но остальная часть выпадающего списка больше не отображается