-3
$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

4 回答 4

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您可以使用由一个end 两个elseifs组成的单个语句来代替这 3 个条件语句。

于 2013-01-04T17:46:21.060 回答
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>';
于 2013-01-04T17:46:21.013 回答
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>
}

=当您需要双人时,您正在使用单人==

于 2013-01-04T17:42:27.040 回答
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>
于 2013-01-04T17:47:22.337 回答