【问题标题】:set class='selected ' in more than one option tag (list/menu)在多个选项标签(列表/菜单)中设置 class='selected'
【发布时间】:2011-07-25 04:43:24
【问题描述】:

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

我有这样的 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 表,第二个是 member_invited 表。
member 表中:
id | 姓名
---------------
00 |乔恩·斯基特
01 |马克·格拉维尔
02 |达林·季米特洛夫


然后在 member_invited 表中:
id | 姓名
---------------
00 |乔恩·斯基特
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来解决它?
非常感谢:)

【问题讨论】:

    标签: php javascript jquery mysql logic


    【解决方案1】:

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

    <?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
      }
    ?>
    

    【讨论】:

    • @rabudde 或其他人,我想问一些与 rabudde 的回答有关的小问题。我有 id 为 '0000'(字符 4)的成员。rabudde 的代码很好用,但只有这个id 无法捕获:p '0000'。你知道为什么吗?呵呵,相信我,我是新手:p
    • 有一个ID为0000的成员?所以它不是一个整数值?我不明白你的问题是否正确。这个 id 在哪个表中,它应该捕获什么?
    • ow,它现在解决了,我只是对您的查询进行了一点更改: IFNULL(y.id,-1) AS is_invited -> 并且在列表菜单上我执行 if ($row['is_invited ']>=0) :) 抱歉 :p @rabudde 我编辑了我的问题,看看桌子上的 id,非常感谢
    • ahhhh,好吧,所以&lt;?php if ($row['is_invited']&gt;0) 无法工作,因为 PHP 将 0000 转换为整数值 0
    【解决方案2】:

    试试这样的

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

    【讨论】:

      【解决方案3】:

      您可能想使用这样的东西来启用多项选择:

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

      而且在服务器端做你想做的事情更聪明......

      【讨论】:

      • 他想设置class="selected"而不是属性selected
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 2018-08-12
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多