PHP&;MySQLi-在下拉列表中两次显示所选值

PHP&;MySQLi-在下拉列表中两次显示所选值,php,html,mysqli,drop-down-menu,Php,Html,Mysqli,Drop Down Menu,我创建了我的个人资料页面,其中显示了MySQL中的所有数据。所有数据都正确地显示在表单和下拉列表中。但问题是,选择值在选项列表中显示了两次 以下是我的代码: <select class="form-control" name="country" id="country"> <option value="">Select Country <?php //Get country list from Country ma

我创建了我的个人资料页面,其中显示了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>

选择国家

A-2-A提供了您所面临问题的正确答案

另外 您将所有循环选项嵌套在“选择国家”选项中。您应该删除
标记之前的最后一个
标记,并将其移动到“选择国家”之后,如下所示:


选择国家

您需要更改您的
,而
代码如下所示:-

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>";
    }
}
while($country=mysqli\u fetch\u数组($result)){
//将用户国家/地区与国家/地区列表进行比较。$行[4]是用户表中的国家/地区列
如果($row[4]==$country[1]){
回声“$country[1]”;
}否则{
回声“$country[1]”;
}
}

注意:在您的代码中,首先创建选项,然后选中条件,这就是为什么它会两次显示所选选项。

这将解决您的问题:

<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>

选择国家

它应该这样设置:

<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>

选择国家
你有两个问题:

  • 在选项中使用选项
  • 其次,您只需要打印所选属性,而不是打印完整选项
示例:

<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
}
?> 
选择国家/地区

bhavin仅在其他情况下需要loop@A-2-A是的,如果他这么做的话,他至少可以投我一票-u-不管选择什么答案,但至少这将是第一个正确的描述性答案。对不起A-2-A,这是错的。没问题,我也为我的坏话感到抱歉:)@A-2-A刚刚编辑了您的代码以提高可读性,我希望这样可以。:-)您的代码兄弟选项中的一个问题在选项chk我的答案中