Сделать выбор опции по умолчанию из базы данных

#php #html

#php #HTML

Вопрос:

у меня проблема с созданием текста по умолчанию в моем выборе. (список опций). Итак, мой вариант — хранение в базе данных. Нравится varchar Test Option

Теперь, если я сделаю так в своем коде

  <select  name="category">  <option  selected="selected"><?=$ad['category']?></option> <?php echo $options; ?> </select>
 

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

               <?php

                while($category = mysqli_fetch_array($q)):;

                 ?>

              <option> value="<?php echo $category[0];?>" <?php echo $category[1];?> </option>"

               <?php endwhile; ?>


                

               <select  name="category">  <option  selected="selected"><?=$ad['category']?></option> <?php echo $options; ?> </select>
                
 
<?php
 

Мой код для функции q и выбрать значение из базы данных (все значение из опции из базы данных)

    $q2 = mysqli_query($con,$q22222);
    $options = "";
     while($row2 = mysqli_fetch_array($q2))
     {
         $options = $options."<option>$row2[1]</option>";
     }
 

представьте, что объясняет ситуацию подробнее.
введите описание изображения здесь

есть идеи, как это решить? любая помощь будет оценена по достоинству

Комментарии:

1. Поступает ли содержимое из списка выбора из двух разных источников? Являются $q ли и $q2 просто версиями одного и того же кода? Откуда берется выбранное значение, это пользовательский ввод?

2. Ваш код, похоже, имеет довольно мало смысла для начала — сначала вы выводите пару <option>…</option> в цикле, а затем сразу после этого появляется <select> ?

Ответ №1:

Ну, реальная ситуация такова, что вы извлекаете массив, но хотите, чтобы опция не печаталась. Затем у вас сначала есть выбранная опция, то есть:

 <?php $ad['category']; ?>
 

Тогда единственное, что вам нужно сделать, это то, что при извлечении массива, если параметр равен выбранному параметру, он не будет напечатан так:

    $q2 = mysqli_query($con,$q22222);
    $options = "";
     while($row2 = mysqli_fetch_array($q2))
     {
         if($row2[1]!=$selected){
              $options = $options."<option>$row2[1]</option>";
         }
     }
 

Ответ №2:

Если вы не хотите снова извлекать те же параметры из базы данных, вы можете использовать SELECT DISTINCT оператор в своем запросе select.

А также обработайте ситуацию, когда опция не совпадает с выбранной вами опцией по умолчанию.

 while($row2 = mysqli_fetch_array($q2))
{
    if($row2[1] != $selected) $options = $options."<option>$row2[1]</option>";
}
 

Ответ №3:

 <select >
    <option value="1" <?php if ($Defaultselection == 1) echo "selected"; ?>>A</option>
    <option value="2" <?php if ($Defaultselection == 2) echo "selected"; ?>>B</option>
    <option value="3" <?php if ($Defaultselection == 3) echo "selected"; ?>>C</option>
    <option value="4" <?php if ($Defaultselection == 4) echo "selected"; ?>>D</option>
</select> 
 

Попробуйте