1

mysql クエリをかなりユニークなテーブルに表示しようとしています。特徴は次のとおりです。

  1. 結果テーブルには 3 つの列があります
  2. 右上のセルは他のコンテンツ用に予約されています

[結果1][結果2][内容]

[結果3][結果4][結果5]

[結果6][結果7][結果8]

...等

クエリで返される結果は 1 つだけです。しかし、必要なものをループに含めるのに苦労しています。

誰かがこのようなことを行う方法を知っているなら、私は助けが欲しいです! 前もって感謝します!

編集**これまでのところ私のコードはここにあります

結果は 3 列で表示されますが、右上のセルに他の静的コンテンツを表示する条件を取得できません。

$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>";
4

2 に答える 2

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列目に到達するまで行/列を出力してから、特別なコンテンツを出力します。それ以外の場合は、出力します。

于 2012-04-23T20:22:03.253 に答える
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;
}

$table3 要素配列の配列が含まれるようになりました。最後の要素は 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";
}
于 2012-04-23T20:25:11.263 に答える