Почему значения данных mysql не отображаются в меню опций?

#html #mysql

#HTML #mysql

Вопрос:

Я пытаюсь создать выпадающий список типов ковров для веб-сайта, но каждый раз, когда я пытаюсь извлечь данные со своего сервера mysql, он помещает типы ковров в 3 отдельных тега выбора, и я не знаю почему? мой код довольно прост:

 <?php
        include('config.inc');
        $result = mysqli_query($con,"SELECT * FROM DBForm");

        while($row = mysqli_fetch_array($result)) {
          echo  "<select>";
          echo  "<option value=" . $row['id'] . ">" . $row['carpetTypes'] . "</option>";
          echo  "</select>";


        }

        echo "</table>";
        ?>
 

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

любая помощь будет принята с благодарностью.

Ответ №1:

я бы поставил select вне цикла while:

  echo  "<select>";
 while($row = mysqli_fetch_array($result)) {
     echo  "<option value=" . $row['id'] . ">" . $row['carpetTypes'] . "</option>";
     }
 echo  "</select>";
 

невыполнение этого требования приведет к созданию одного выбора параметра для каждой итерации

Ответ №2:

Вам нужно поместить <select> вне цикла. Более того, более компактное решение может быть

 <?php
include 'connectDB.inc';
$options = "";
if($tablesQuery = mysqli_query($connect,"SHOW TABLES"))
    {   

        while($tables = mysqli_fetch_array($tablesQuery))
        {
            $options =  "$options"."<option>
            $tables[0]
            </option>";
        }
    }


?>
 

для получения параметров из mysql. И сохранение простого html :

 <select id = "table1" name = "table1">
      <?php
        echo "Select table1 : <br> $options "; ?>
      </select>
 

Ответ №3:

Переместите значение "<select>" to перед циклом while и echo "</select>"; после закрытия }

Вы хотите вывести тег выбора только один раз, тег опции для каждого элемента.