【问题标题】:displaying values from sql in html select option not displaying values在 html 选择选项中显示来自 sql 的值不显示值
【发布时间】:2020-04-23 17:25:09
【问题描述】:

我使用 php 和 sql 创建了一个 html 表单。该表单包含一个名为空格的字段,它是一个选择下拉列表。这些值来自我在 php.ini 中声明的数组。如果数组中的值已经存在于数据库中,则不应显示。所以我做了以下代码:

<select class="form-control" id="space" name="space">
  <option value="--Select--">--Select--</option>
  <?php
$select=mysqli_query($con,"select * from clients where Spaces IS NOT NULL");
while($menu1=mysqli_fetch_array($select))
      {
$filled =$menu1['name'];
$valuez = array("C101","C102","C103","C104");
if ($filled != $valuez) {


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

但这不会显示任何值。谁能告诉我我的代码有什么问题。谢谢n提前

【问题讨论】:

    标签: php html mysql sql select


    【解决方案1】:

    您的$filled 是字符串,不能等于数组。

    而且你可以直接使用whereIn,不需要把所有客户端都拿出来:

    <select class="form-control" id="space" name="space">
      <option value="--Select--">--Select--</option>
      <?php
        $valuez = "'C101','C102','C103','C104'";
        $select = mysqli_query($con, "SELECT * FROM clients WHERE Space IN ($valuez)");
      ?>
    
    <?php while($menu1 = mysqli_fetch_array($select) ) : ?>
        <option value="<?php echo $menu1['name'];?>">
          <?php echo $menu1['name'];?>
        </option>
    <?php endwhile; ?> 
    </select>
    

    【讨论】:

    • 我想显示 $valuez ,如果 $valuez 中的值不存在于 $filled
    • @SepSooo 是的,你不需要使用数组,这会降低你的查询性能
    • 还是什么都没有,兄弟
    【解决方案2】:

    您正在将字符串与数组进行比较。你应该像这样使用 in_array

     <select class="form-control" id="space" name="space">
       <option value="--Select--">--Select--</option>
     <?php
      $select=mysqli_query($con,"select * from clients where Space IS NOT NULL");
     while($menu1=mysqli_fetch_array($select))
      {
      $filled =$menu1['Space'];
     $valuez = array("C101","C102","C103","C104");
     foreach($valuez as $value){
        if($value != $filled){ 
        ?>
            <option value="<?php echo $value;?>">
              <?php echo $value;?>
            </option>
        <?php 
        }
     }
    }
    ?>
    

    更新代码

    【讨论】:

    • 我已经使用了你的代码,仍然没有显示值
    • 你在这里回显数组使用单个值。所以我猜你需要在这里使用 $filled
    • 我想显示 $valuez ,如果 $valuez 中的值不存在于 $filled
    • 好的,那么你需要使用 foreach 并遍历 values 数组
    • 能否更新代码并显示,会很棒
    【解决方案3】:

    试试这个,请确保你想作为选项显示的值来自列名或空格。我根据您的代码使用了 name($menu1['name']) 列。

    <select class="form-control" id="space" name="space">
      <option value="--Select--">--Select--</option>
       <?php
         $select = mysqli_query($con,"select * from clients where Spaces NOT IN ('C101','C102','C103','C104')");
         while($menu1=mysqli_fetch_array($select)) {
           $filled = $menu1['name'];
           if (!empty($filled)) {
       ?>
       <option value="<?php echo $filled;?>">
         <?php echo $filled;?>
       </option>
      <?php
        }}
      ?>
    </select>
    

    【讨论】: