2016-02-10 126 views
6

我创建了我的个人资料页面,并显示来自MySQL的所有数据。所有数据都以正确的形式显示在下拉列表中。但问题是选中的值在选项列表中显示两次。PHP&MySQLi - 在下拉列表中显示选定的值两次

这里是我的代码:

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

bhavin只是需要如果while循环 –

+0

else条件@ A-2-A的权利,他可以在*至少*给予好评我要硬伤,如果他那样做的-_- – Derek

+0

看到不管什么答案会被选中,但至少这将是第一个正确和描述性的答案。 –

回答

6

您需要更改类似下面的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>"; 
    } 
} 

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

+0

谢谢A-2-A,它正在工作。 –

+0

对不起A-2-A,它是由错误发生的。 –

+0

没问题,对不起我的坏话太抱歉:) –

2

的正确答案,你正面临被A-2-A提供的问题。

此外 你嵌套你的所有循环选项里面的“选择国家”选项。在</select>标记之前,你应该删除过去的</option>标签后“选择国家”移动它,像这样:

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

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> 

的问题是,你有另外呼应选定的选项未选择的选项。现在,如果应该选择该选项,它会添加'selected'属性。 (您的病情基于)

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

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

因为你需要的,如果选择的值进行检查,那么如果不相应地显示数据。

0

你有两个问题:

  • 使用选项里面选择。
  • 秒你只需要打印选定的属性,而不是打印完整的选项。

例子:

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