在多个选项标签中设置class ='selected'(列表/菜单)

时间:2011-07-25 04:43:24

标签: php javascript jquery mysql logic

对不起,我想问一个新手问题:)

我有这样的PHP脚本:

<select id="member">
 <?php
  $sql   = " select id,name from member order by name ";
  $query = mysql_query($sql);
  while($row=mysql_fetch_array($query))
  {             
 ?>
  <option value="<?php echo $row["id"]; ?>"><?php echo $row["name"]; ?></option>
 <?php
  }
 ?>                
</select>

然后结果将生成像这样的HTML

<select id="member">
 <option value="1">Jon Skeet</option>
 <option value="2">Marc Gravell</option>
 <option value="3">Darin Dimitrov</option>
</select>

我的问题是,实际上我在mysql中有2个表,第一个是成员表,第二个 member_invited 表。
成员表中:
id |的名称
---------------
00 | Jon Skeet
01 | Marc Gravell
02 |达林迪米特罗夫


然后在 member_invited 表中:
id |的名称
---------------
00 | Jon Skeet
02 |达林迪米特罗夫


在这两个表中 我想这样列出我的清单:
(看看class =“selected”是在成员邀请的选项标签中)

<select id="member">
 <option value="1">Jon Skeet</option>
 <option value="2" class="selected">Marc Gravell</option>
 <option value="3" class="selected">Darin Dimitrov</option>
</select>

请随意使用javascript或jquery ,,或者我可以只使用PHP解决它?
非常感谢:))

3 个答案:

答案 0 :(得分:2)

你必须在MySQL中加入member_invited表,然后在结果集中扩展关于is_invited标志的while循环

<?php
  $sql = "SELECT x.id,x.name,IFNULL(y.id,0) AS is_invited FROM member x LEFT JOIN member_invited y ON x.id=y.id ORDER BY x.name";
  $query = mysql_query($sql);
  while($row=mysql_fetch_array($query))
  {             
?>
<option value="<?php echo $row["id"]; ?>"<?php if ($row['is_invited']>0) { echo " class=\"selected\""; } ?>><?php echo $row["name"]; ?></option>
<?php
  }
?>

答案 1 :(得分:1)

尝试这样的事情

$("#member option").each(function(){
    var $this = $(this);
   if($this.val() == "2" || $this.val() == "3"){
      $this.addClass("selected");
   }
});

答案 2 :(得分:0)

您可能希望使用类似的内容来启用多项选择:

http://www.w3schools.com/tags/att_select_multiple.asp

做你想要的服务器端更聪明......