【问题标题】:PHP & MySQLi - Show selected value two time in drop-down listPHP & MySQLi - 在下拉列表中显示选定的值两次
【发布时间】: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 对,如果他愿意这样做,他至少可以为我的不幸投赞成票-_-
  • 看看会选择什么答案,但至少它会是第一个正确和描述性的答案。

标签: php html mysqli drop-down-menu


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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-14
          • 2021-07-13
          • 2021-08-19
          • 2014-06-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多