2012-04-23 66 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"; 
}