PHP - “if”中的“while”问题交替html表格行颜色
Posted
技术标签:
【中文标题】PHP - “if”中的“while”问题交替html表格行颜色【英文标题】:PHP - "if" in "while" problems to alternate html table rows colour 【发布时间】:2012-04-18 09:40:45 【问题描述】:$banana=0;
$view = mysql_query('SELECT ......') or die ('Encountered an error.') ;
while($rows3=mysql_fetch_array($view))
$total_price2=$rows3['qty']*$rows3['number'];
$banana = $banana + 1;
if ($total_price2!=0)
if ($banana %2 ==0)
echo "<tr class=\"alt\">";
else
echo "<tr>";
echo "<td>".$rows3['member']."</td>";
echo "<td>".$rows3['payment']."</td>";
echo "<td>$".number_format($total_price2,2)."</td>";
echo "</tr>";
问题:
“香蕉”通过使用模数 (%) 检查香蕉是否为奇数,从而交替显示表格行 (class="alt") 的颜色。 不工作,我看到浏览器正在自动关闭打开的<tr>
标记。
例如:
<tr><td>person</td><td>data</td><td>$10.00</td></tr>
<tr class="alt"></tr>
(以这种方式重复)
更新
我发现重复的 banana
总是返回奇数:1、3、5 等
MySQL 运行不正确
SELECT table1.member, table1.paid, table1.payment,table2.qty,table3.number FROM table1,table2,table3 WHERE table1.member = table2.member AND table1.payment="fruit"
它给了我这样的错误数据:
-
person1 $10.00
person1 $0.00
person2 $10.00
person2 $0.00
等
【问题讨论】:
代码似乎是正确的。还有其他一些错误。 同意;绝对应该工作。但是,尝试这样做而不是 IF 语句: printf( "$total_price2 == 0
时,该特定行内不应有<td>
s(因为您的if
语句)。也许这就是你所看到的?
@Lee 如果第二行 $total_price2
等于 0,这似乎是预期的输出。
如果一切都失败了,你可以只使用 CSS:
tr background-color: blue;
tr:nth-of-type(2n) background-color: red;
【讨论】:
【参考方案2】:先尝试这样做以进行调试:
echo "<tr class=\"alt\">&nbsp;";
我的猜测是您的
编辑:我不完全确定为您的
请幽默并尝试一下:
$banana=0;
$view = mysql_query('SELECT ......') or die ('Encountered an error.') ;
while($rows3=mysql_fetch_array($view))
$total_price2=$rows3['qty']*$rows3['number'];
$banana++;
if ($banana % 2 == 0)
$td_class = "alt";
else
$td_class = "";
echo "<tr>";
if ($total_price2!=0)
echo "<td class='$td_class'>".$rows3['member']."</td>";
echo "<td class='$td_class'>".$rows3['payment']."</td>";
echo "<td class='$td_class'>$".number_format($total_price2,2)."</td>";
echo "</tr>";
【讨论】:
感谢您的帮助,我会在早上先尝试一下。 3.15 am 这里 x.x zzzzzzz 又没有运气了 :( 模数不断返回奇数,跳过偶数 (class="alt")。 @Lee 我们将需要更多您的代码。一定有其他东西在影响$banana
,还有我的代码中的 html 打印是什么?
那是行不通的。如果$total_price2!=0
,您只会打开表格行。看来您应该只在该 IF 块内输出结束 </tr>
标记。
试试这个:
<?php
$banana=0;
$view = mysql_query('SELECT ......') or die ('Encountered an error.') ;
while($rows3=mysql_fetch_array($view))
$total_price2=$rows3['qty']*$rows3['number'];
if ( !$total_price2)
continue;
$banana = $banana + 1;
if ($banana %2 ==0)
echo "<tr class=\"alt\">";
else
echo "<tr>";
echo "<td>".$rows3['member']."</td>";
echo "<td>".$rows3['payment']."</td>";
echo "<td>$".number_format($total_price2,2)."</td>";
echo "</tr>";
【讨论】:
谢谢,这行得通。虽然我如何修复我的查询?它会产生每个名称两次,价格为 10 或 0。请参阅上面的更新。 还有什么是“!”意思是if ( !$total_price2)
。为什么这个 if 语句没有 括号?
我不知道您的查询是什么...请将其添加到您的问题中。
!
表示“假”值,例如 0,单行语句不需要括号。两者都是个人喜好。你可以写if ($total_price2 == 0) continue;
以上是关于PHP - “if”中的“while”问题交替html表格行颜色的主要内容,如果未能解决你的问题,请参考以下文章