2012-04-23 26 views
1

我试图将我的mysql查询显示为一个相当独特的表。 的特点如下:三列PHP结果表

  1. 结果表有3列
  2. 右上单元格保留给其它内容

[RESULT1] [RESULT2] [内容]

[result3] [result4] [result5]

[result6] [result7] [result8]

...等

该查询可以带回少至1个结果。 但我很努力得到我需要包括在循环中。

如果有人知道如何去追求这样的事情,我会喜欢一些帮助! 在此先感谢!

编辑**这里是我到目前为止的代码

结果分三路未来通过,但我不能得到的情况显示在右上角电池等静态内容。

$row = 0; 
$column = 0; 
echo "<table>"; 
while($row = mysql_fetch_assoc($result)) { 
    if ($column == 0) {echo "<tr>";} 
    if (($column == 2) && ($row == 0)){echo "<td>content</td></tr><tr>";} 
    echo "<td>".$row['business']."</td>"; 
    $column++; 
    if ($column >= 3) { 
    $row++; 
    echo "</tr>"; 
    $column = 0; 
    } 
} 
echo "</table>"; 
+1

显示你写的代码到目前为止 – 2012-04-23 20:14:48

+0

你尝试过什么?我会通过你的MySQL结果数组和“i == 3”这样的“content”部分和“i%3 == 0”这样的条件进行一个简单的循环来启动一个新行。 – 2012-04-23 20:17:10

+0

这只是一个普通的html表格,或者一些纯粹的css版本? – 2012-04-23 20:17:32

回答

0

假设一个纯HTML表格,你必须

$row = 0; 
$column = 0; 
echo '<table>'; 
while($row = mysql_fetch_assoc($result)) { 
    if ($column == 0) { 
     echo '<tr>'; 
    } 
    if (($column == 2) && ($row = 0)) 
     echo '<td>content</td></tr><tr>'; // output special content, start new row 
    } 
    echo "<td>$row[something]</td>"; 
    $column++; 
    if ($column >= 3) { 
     $row++; 
     echo '</tr>'; 
     $column = 0; 
    } 
} 
echo '</table>'; 

可能会无法正常工作,是的,但应该给你的总体思路。基本上只输出行/列,直至到达第1行/第3列,然后输出你的特殊内容,否则刚出来

+0

谢谢Marc。我得到的结果是三列,但每行的第三列都返回一个错误的$ row [something],而不是第一行的“content”和第2+行的有效的$ row [something]。有任何想法吗?哦,我在第二个IF声明的“回声”之前加了一个额外的大括号。 – dsol828 2012-04-23 21:28:07

+0

我添加到我的原始文章中的代码将所有内容加载到三列中,但看起来右上角的单元格的条件语句不起作用。任何想法为什么? – dsol828 2012-04-23 23:18:19

0

一旦你有了$rows你的结果行,将它分成数组的数组:

$table = array(); 
while (count($rows)){ 
    $group = array_slice($rows, 0, 3); 
    $rows = array_slice($rows, 3); 
    while (count($group) < 3) $group[] = array(); 
    $table[] = $group; 
} 

现在$table包含一个3元素数组的数组。最后一个被填充在里面具有3个单元,将空数组,直到我们有3然后,只需将它输出:

foreach ($table as $group){ 
    echo "<tr>\n"; 
    foreach ($group as $row){ 
     if ($row['id']){ 
      echo "<td>".format_data($row)."</td>\n"; 
     }else{ 
      # empty padding cell on last row 
      echo "<td>&nbsp;</td>\n"; 
     } 
    } 
    echo "</tr>\n"; 
}