突出显示多个选择框中已选择的项目

时间:2013-10-29 07:23:19

标签: php

  

我有2个表,一个'品牌'存储所有品牌名称,'brand_category'存储所有品牌名称及其相应的类别。我有一个多选框,可以在页面加载时加载“品牌”表中的所有项目,但我需要突出显示用户之前已在“brand_category”表中提交的项目,其余品牌包含留下以便用户知道在'brand_category'表中输入的品牌是什么。下面是代码,但它不起作用。请帮助解决此问题

<div class="selectbox">
    <label id="brand" class="brand_label">Brand:</lable>
    <?php
        echo "<select name='brand' class='cat_brands' multiple>"
        <option value='0'>None</option>";
        $query = mysql_query("SELECT id, name FROM brand");
        while($br_query = mysql_fetch_assoc($query)){
            $query_select = mysql_query("SELECT * FROM brand_category WHERE brand_id='".$br_query['id']."'");
            while($brnd_select = mysql_fetch_assoc($query_select)){
                if($brnd_select['brand_id']==$br_query['id']){
                    echo "<option style='background-color: red' value='".$br_query['id']."'>".$br_query['name']."</option>";
                }
            }
        }
    ?>
</div>
  

以上代码仅显示在“brand_category”表中输入的品牌,其中不显示其他品牌。我也需要显示它们。

2 个答案:

答案 0 :(得分:0)

你忘了在循环中提到else条件。这是代码

<div class="selectbox">
<label id="brand" class="brand_label">Brand:</lable>
<?php
    echo "<select name='brand' class='cat_brands' multiple>"
    <option value='0'>None</option>";
    $query = mysql_query("SELECT id, name FROM brand");
    while($br_query = mysql_fetch_assoc($query)){
        $query_select = mysql_query("SELECT * FROM brand_category WHERE brand_id='".$br_query['id']."'");
        while($brnd_select = mysql_fetch_assoc($query_select)){
            if($brnd_select['brand_id']==$br_query['id']){
                echo "<option style='background-color: red' value='".$br_query['id']."'>".$br_query['name']."</option>";
            }else{
               echo "<option value='".$br_query['id']."'>".$br_query['name']."</option>";
            }

        }
    }
?>
</div>

答案 1 :(得分:0)

如果我已正确理解您的查询,您将尝试提取所有品牌,并使brands_category表中的品牌显示为已选择。

你最好使用MySQL PDO扩展而不是这个过时的方法

有更好的方法来实现这一点,例如通过只有一个表或使用Join查询,无论如何......这应该有效。

<select name='brand' class='cat_brands' multiple>
<option value='0'>None</option>
<?php
$query = mysql_query("SELECT id, name FROM brand");

while($br_query = mysql_fetch_assoc($query))
{
   $query_select = mysql_query("SELECT * FROM brand_category WHERE brand_id='".$br_query['id']."'");

   if(mysql_num_rows($query_select) > 0)
   {
      while($brnd_select = mysql_fetch_assoc($query_select))
      {
         echo "<option style='background-color: red' value='".$br_query['id']."' selected='selected'>".$br_query['name']."</option>";
      }
   }
   else
   {
      echo "<option style='background-color: yellow' value='".$br_query['id']."'>".$br_query['name']."</option>";
   }
} ?>
</select>