$ id = 1或$ id = 2或$ id = 3

时间:2013-01-04 17:41:44

标签: php mysql css

$sql = mysql_query("SELECT number FROM domains WHERE domains_id=1");

$row = mysql_fetch_array($sql);

$domain = $row['number'];

if($domain = 0){
<li class="icon"><a href="">Rule 1</a></li>
<li class="icon"><a href="">Rule 2</a></li>
}

if($domain = 1){
<li class="icon"><a href="" class="yes">Rule 1</a></li>
<li class="icon"><a href="">Rule 2</a></li>                                              
}

if($domain = 2){
<li class="icon"><a href="">Rule 1</a></li>
<li class="icon"><a href="" class="yes">Rule 2</a></li>
}

我有上面的代码,但它似乎不起作用。

结果是

  • 0 - 没有规则是红色的
  • 1 - 规则1为红色
  • 2 - 规则2为红色

请您告诉我如何让这个工作?

提前致谢

4 个答案:

答案 0 :(得分:1)

尝试

if($domain == 0){
<li class="icon"><a href="">Rule 1</a></li>
<li class="icon"><a href="">Rule 2</a></li>
}

if($domain == 1){
<li class="icon"><a href="" class="yes">Rule 1</a></li>
<li class="icon"><a href="">Rule 2</a></li>                                              
}

if($domain == 2){
<li class="icon"><a href="">Rule 1</a></li>
<li class="icon"><a href="" class="yes">Rule 2</a></li>
}

当您需要双=

时,您正在使用一个==

答案 1 :(得分:1)

您使用的是分配而不是比较,但您应该尽可能使用严​​格的比较(===):

$sql = mysql_query("SELECT number FROM domains WHERE domains_id=1");

$row = mysql_fetch_array($sql);

$domain = (int)$row['number']; // cast the result

if($domain === 0){?>
<li class="icon"><a href="">Rule 1</a></li>
<li class="icon"><a href="">Rule 2</a></li>
<?php}

if($domain === 1){?>
<li class="icon"><a href="" class="yes">Rule 1</a></li>
<li class="icon"><a href="">Rule 2</a></li>
<?php}

if($domain === 2){?>
<li class="icon"><a href="">Rule 1</a></li>
<li class="icon"><a href="" class="yes">Rule 2</a></li>
<?php}

一般来说,我在代码中修改了3件事:

  • 使用比较(===)而非分配(=),
  • 将数据库结果转换为整数((int)$row['number'])以获取干净的数据,
  • 将HTML放在PHP代码之外,

编辑:刚刚注意到另一个问题,其他人先前已经注意到了。您有3个独立的条件检查相同的数据。您可以使用由一个if结束两个elseif组成的单个语句,而不是这三个条件语句。

答案 2 :(得分:1)

=代替==之外,您还违反了DRY。试试这个:

echo '<li class="icon"><a href=""'.($domain==1 ? ' class="yes"' : '').'>Rule 1</a></li>';
echo '<li class="icon"><a href=""'.($domain==2 ? ' class="yes"' : '').'>Rule 2</a></li>';

答案 3 :(得分:0)

您使用的是不正确的比较运算符。 =执行任务,而非比较。您应该使用==

另外,为了输出HTTP,你不会退出PHP。

试试这个:

<?php 
    $sql = mysql_query("SELECT number FROM domains WHERE domains_id=1");

    $row = mysql_fetch_array($sql);

    $domain = $row['number'];
?>
<li class="icon"><a href="" class="<?php echo ($domain == 1)?"yes":""; ?>">Rule 1</a></li>
<li class="icon"><a href="" class="<?php echo ($domain == 2)?"yes":""; ?>">Rule 2</a></li>