为了账号安全,请及时绑定邮箱和手机立即绑定

值出现两次,同时在 php 的选择下拉列表中限制相同的值

值出现两次,同时在 php 的选择下拉列表中限制相同的值

PHP
至尊宝的传说 2022-07-16 16:50:07
我在 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>现在的问题是值在选择列中显示了两次。第一次显示所有值,然后显示我想要的不在数据库中的值。谁能帮我解决这个问题。
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

看看以下选项:


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


查看完整回答
反对 回复 2022-07-16
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信