【问题标题】:values coming two times while restricting same values in select dropdown in php值出现两次,同时在 php 的选择下拉列表中限制相同的值
【发布时间】:2020-01-08 19:18:50
【问题描述】:

我在 php 中有一个来自数据库的选择下拉菜单。如果该值已存在于列中,则不应显示在选择下拉列表中,因此我编写了以下代码:

<select class="form-control" id="space" name="space">
   <option value="--Select--">--Select--</option>
 <?php
  $select=mysqli_query($con,"select * from clients");
 while($menuz=mysqli_fetch_array($select))
  {
  $filled =$menuz['Space'];
 $valuez = array("C101","C102","C103","C104","C105","C106","C107","C108","W1","W2","W3","W4","W5","W6","W7","W8","W9","W10","W11","W12","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10");
 foreach($valuez as $value){
  if($value != $filled){ 





    ?>
        <option value="<?php echo $value;?>">
          <?php echo $value; ?>
        </option>
    <?php 
    } 
 }
}
?> 
</select>

现在的问题是值在选择列中显示了两次。第一次显示所有值,然后显示不在我想要的数据库中的值。谁能帮我解决这个问题。

【问题讨论】:

  • 不要从下拉列表中删除元素,只需使其自动选中即可。
  • @RishiRaut 我不明白
  • 先从数据库中创建一个数组,然后使用数组函数从第一个数组相交到第二个数组。
  • @RishiRaut 我对此不熟悉,请您给出答案
  • array_diff() 可能会帮助你

标签: php html mysql sql select


【解决方案1】:

看看下面的选项:

选项 1:刚刚在 SQL 查询中添加了 DISTINCT

<select class="form-control" id="space" name="space">
   <option value="--Select--">--Select--</option>
   <?php
    $select=mysqli_query($con,"select DISTINCT `Space` from clients");
    while($menuz=mysqli_fetch_array($select)){
    $filled =$menuz['Space'];
    $valuez = array("C101","C102","C103","C104","C105","C106","C107","C108","W1","W2","W3","W4","W5","W6","W7","W8","W9","W10","W11","W12","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10");
    foreach($valuez as $value){
      if($value != $filled){
        ?>
            <option value="<?php echo $value;?>">
              <?php echo $value; ?>
            </option>
        <?php 
      }
    }
  }
  ?> 
</select>

选项 2:仅使用“NOT IN”忽略 SQL 查询中的现有值集。在这里,您可以使用准备好的语句来避免 SQL 注入。仅出于演示目的,我在这里展示了一个带有嵌入式输入参数的查询。

<?php
  $valuez = array("C101","C102","C103","C104","C105","C106","C107","C108","W1","W2","W3","W4","W5","W6","W7","W8","W9","W10","W11","W12","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10");
?>
<select class="form-control" id="space" name="space">
   <option value="--Select--">--Select--</option>
   <?php
    $select=mysqli_query($con,"SELECT DISTINCT `Space` FROM `clients` WHERE `Space` NOT IN ('". implode("', '", $valuez) ."')");
    while($menuz=mysqli_fetch_array($select)){
      $filled =$menuz['Space'];
      ?>
      <option value="<?php echo $filled;?>">
        <?php echo $filled; ?>
      </option>
      <?php
    }
  ?> 
</select>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    相关资源
    最近更新 更多