-1

データベースからデータを取得して、htmlテーブルに表示したいと思います。私のジレンマは、返される行数がxを超える場合、下の画像に示すようにhtmlテーブルを拡張できる必要があるということです。したがって、たとえば、返される行が10行だけの場合、それらは1つの直線テーブルに表示されます(最初の例の画像を参照)。一方、たとえば20が返された場合、それらの一部が右側の2番目の「テーブル」にプッシュされます(2番目の例の画像を参照)。PHPでこれを実現する方法がわかりません。誰かが私を助けてくれるなら、私はそれを大いに感謝します。

私のビジョン

4

1 に答える 1

1

私が取るアプローチは、MySQL から 2 つの別々の 2D 配列に行をフェッチすることであり、両方の HTML<table>をオンザフライで構築しようとするのではありません。

MySQL フェッチ ループでは、各行の列を反復処理し、数を超えると、$maxcols代わりに他の配列への追加を開始します。次に、フェッチ ループが終了したら、2 つの配列を個別に反復処理して、HTML テーブルを作成します。

ネストされたループを管理するには、いくつかの方法があります。これが真っ先に思い浮かぶ

// An array initialized for each table (will become 2D arrays)
$t1 = array();
$t2 = array();

// Max cols in the first table
$maxcols = 10;

// Your fetch loop (pseudocode since we don't know which API you use)
while ($row = $result->fetch()) {
    // New row in both table arrays
    $new_t1 = array();
    $new_t2 = array();

    // Loop over columns
    $idx = 0;
    foreach ($row as $col) {
      if ($idx < $maxcols) {
         // Index is less than maxcols, append to the first table's new row
         $new_t1[] = $col;
      }
      // >= maxcols, append to second table's new row
      else $new_t2[] = $col;

      // Increment the index
      $idx++;
    }
    // Each of the two `$new_t* arrays now comprises a complete table row
    // Append each new array as a row onto the correct table 2D array
    $t1[] = $new_t1;
    $t2[] = $new_t2;
}

次に、各配列をループし$t1, $t2て 2 つのテーブルを作成します。

于 2012-11-15T00:21:43.323 に答える