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

Posted

技术标签:

【中文标题】PHP & MySQLi - 在下拉列表中显示选定的值两次【英文标题】:PHP & MySQLi - Show selected value two time in drop-down list 【发布时间】:2016-05-21 07:12:43 【问题描述】:

我创建了我的个人资料页面,并以 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>

【问题讨论】:

bhavin 只需要 if else 循环中的条件 @A-2-A 对,如果他愿意这样做,他至少可以为我的不幸投赞成票-_- 看看会选择什么答案,但至少它会是第一个正确和描述性的答案。 【参考方案1】:

您需要更改您的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>";
    

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

【讨论】:

对不起 A-2-A,这是误会了。 没问题,我的坏话也很抱歉:) @A-2-A 刚刚编辑了您的代码以提高可读性,我希望没问题。 :-) 选项 chk my answer 中你的代码兄弟选项中的一个问题【参考方案2】:

你有两个问题:

在选项中使用选项。 其次,您只需要打印选定的属性而不是打印完整的选项。

示例:

<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

?> 

【讨论】:

【参考方案3】:

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

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

&lt;option value=""&gt;Select Country&lt;/option&gt;

【讨论】:

【参考方案4】:

应该这样设置:

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

因为你需要检查该值是否被选中,然后如果它没有相应地显示数据。

【讨论】:

【参考方案5】:

这应该可以解决您的问题:

<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' 属性。 (根据您的情况)

【讨论】:

以上是关于PHP & MySQLi - 在下拉列表中显示选定的值两次的主要内容,如果未能解决你的问题,请参考以下文章

使用 html 下拉列表输入的 php 中的 SQL 查询

从数据库中检索数据到下拉菜单,但它没有显示在那里

使用 ajax、sql 和 php 的动态下拉列表

多个 <select> 下拉列表作为 sql 参数 | PHP

在数据库中获取结果的推荐方法 [OOP-PHP & MySQLi]

填充下拉列表 - PHP Ajax MySQL