PHP и MySQLi - Показывать выбранное значение два раза в раскрывающемся списке


Я создал страницу своего профиля с отображением всех данных в форме из MySQL. Все данные правильно отображаются в форме, а также в раскрывающемся списке. Но проблема в том, что выбранное значение отображается два раза в списке опций.

Вот мой код:

<select class="form-control" name="country" id="country">
     <option value="">Select Country
         <?php
            //Get country list from Country master
            $qry = "select * from country_master";
            //Execute query
            $result = mysqli_query($conn, $qry);
            //Assigned fetched array to $Country
            while($country = mysqli_fetch_array($result))
            {
              echo "<option value='$country[1]'>$country[1]</option>";
              //Compare User Country with country list. $row[4] is the country column in user table
              if($row[4] == $country[1])
                 echo "<option value='$country[1]' selected='selected'>$country[1]</option>";
            }
         ?>
      </option>
</select>
Author: BhavinD., 2016-02-10

5 answers

Вам нужно изменить свой код while, как показано ниже:-

while($country = mysqli_fetch_array($result)){
    //Compare User Country with country list. $row[4] is the country column in user table
    if($row[4] == $country[1]){
        echo "<option value='$country[1]' selected='selected'>$country[1]</option>";
    }else{
        echo "<option value='$country[1]'>$country[1]</option>";
    }
}

Примечание: В вашем коде сначала создается опция, а затем проверяется условие, поэтому два раза будет отображаться выбранная опция.

 6
Author: Alive to Die, 2016-02-10 19:35:10

Правильный ответ на проблему, с которой вы столкнулись, дает A-2-A.

Дополнительно Вы размещаете все свои зацикленные параметры внутри опции "Выбрать страну". вы должны удалить последний тег </option> перед тегом </select> и переместить его после "Выбрать страну" следующим образом:

<option value="">Select Country</option>

 2
Author: Adam Copley, 2016-02-10 19:03:44

Это должно устранить вашу проблему:

<select class="form-control" name="country" id="country">
 <option value="">Select Country
     <?php
        //Get country list from Country master
        $qry = "select * from country_master";
        //Execute query
        $result = mysqli_query($conn, $qry);
        //Assigned fetched array to $Country
        while($country = mysqli_fetch_array($result))
        {
             echo "<option value='$country[1]'".($row[4] == $country[1] ? " selected" : "").">$country[1]</option>";
        }
     ?>
  </option>

Проблема заключалась в том, что вы повторили выбранный вариант дополнительно к не выбранному варианту. Теперь он добавляет атрибут "выбранный", если этот параметр должен быть выбран. (В зависимости от вашего состояния)

 1
Author: Timo Schwarzer, 2016-02-10 19:00:59

Он должен быть настроен следующим образом:

<select class="form-control" name="country" id="country">
     <option value="">Select Country
         <?php
            //Get country list from Country master
            $qry = "select * from country_master";
            //Execute query
            $result = mysqli_query($conn, $qry);
            //Assigned fetched array to $Country
            while($country = mysqli_fetch_array($result))
            {

              //Compare User Country with country list. $row[4] is the country column in user table
              if($row[4] == $country[1]){
                echo "<option value='$country[1]' selected='selected'>$country[1]</option>";
              }
              else{
                echo "<option value='$country[1]'>$country[1]</option>";
              }

            }
         ?>
      </option>
</select>

Потому что вам нужно проверить, выбрано ли значение, а затем, если оно не отображается, соответствующим образом отобразите данные.

 1
Author: Derek Pollard, 2016-02-10 19:01:32

У вас есть две проблемы:

  • использование опции внутри опции.
  • во-вторых, вам просто нужно распечатать выбранный атрибут вместо полной опции печати.

Пример:

<option value="">Select Country 
</option>
<?php 
//Get country list from Country master $qry = "select * from country_master"; 
//Execute query 
$result = mysqli_query($conn, $qry); 

//Assigned fetched array to $Country 

while($country = mysqli_fetch_array($result)) { 


if($row[4] == $country[1]) {
$selected = 'selected=""';
}
else{
$selected = "";
}
?>

<option <?php echo $selected;?>   value='<?php echo $country[1];?>'>
<?php echo $country[1];?>
</option>
<?php
}
?> 
 0
Author: devpro, 2016-02-10 19:16:51