2012-04-04 82 views
3
$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>"; 
} 

问题:PHP - “如果” 在 “而” 问题替代HTML表行颜色

  • 的 “香蕉” 交替的表格行的颜色(类= “ALT”)通过使用模数(%)来检查香蕉是否是奇数。
  • 不工作,我看到浏览器正在自动关闭<tr>标签。

如:

<tr><td>person</td><td>data</td><td>$10.00</td></tr>

<tr class="alt"></tr>(重复以这种方式)

UPDATE

我已经发现,重申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"

这是给我的错误数据,像这样:

  1. PERSON1 $ 10.00
  2. PERSON1 $ 0.00包装
  3. PERSON2 $ 10.00
  4. person2 $ 0.00

+0

代码似乎是正确的。还有一些其他错误。 – hjpotter92 2012-04-04 16:26:36

+0

同意;应该绝对有效。但是,尝试这样做而不是IF语句:printf(“,($ banana%2?'':'alt')); – pp19dd 2012-04-04 16:28:18

+0

是的,我很困惑。 CSS表格颜色行也是一样的。 – leechyeah 2012-04-04 16:29:08

回答

1

这是行不通的。您只打开表格行,如果$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>"; 
} 
+0

谢谢,这工作。虽然我该如何修复我的查询?它的结果每个名称两次,价格10或0.见上述更新 – leechyeah 2012-04-06 03:14:59

+0

也是什么“!”在'if(!$ total_price2)'中表示意思。为什么这个if语句没有括号? – leechyeah 2012-04-06 03:19:03

+0

我不知道你的查询是什么......请把它加到你的问题中 – landons 2012-04-06 03:33:27

3

先尝试这样做了调试:

echo "<tr class=\"alt\">&nbsp;";

我的猜测是,你有没有包含在你的< TR>和被压扁为0像素高的数据通过你的浏览器。

编辑:我不完全确定给你的课程< tr>将根据某些浏览器DOM解析过滤到< td>。每当我做一条斑马线时,我就会把这个班级分配给< td>。虽然我不是任何标准的设计师。 :)

幽默我,试试这个,请:

$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>"; 
} 
+0

不好意思。 – leechyeah 2012-04-04 16:32:31

+0

@Lee看到我的更新,只是幽默我,如果你会:) – Blake 2012-04-04 16:41:36

+0

thx为您的帮助,我会在早上第一次尝试。 3.15在这里xx zzzzzzz – leechyeah 2012-04-04 17:13:37

3

如果一切都失败了,你可以只使用CSS:

tr {background-color: blue;} 
tr:nth-of-type(2n) {background-color: red;}