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