2012-11-15 104 views
-1

我想從數據庫中獲取數據並將其顯示在html表格中。我的兩難處境是,如果返回的行數超過x行,我需要能夠擴展html表,如下圖所示。因此,例如,如果只返回10行,它們將顯示在一個直線表中(如第一個示例圖所示)。而如果說20回來了,它會將其中一些推到右邊的第二個「表」(如第二個示例圖所示)。我不知道如何用php來完成這個。如果有人能夠幫助我,我會非常感激。HTML表格上的PHP數據 - 展開HTML表格

my invision

+2

在你尋求幫助之前,你應該嘗試一些東西 –

回答

1

我想我會採取的做法是從MySQL中獲取行成兩個獨立的二維數組,而不是試圖建立對飛了HTML <table>

在MySQL讀取循環中,遍歷每行的列,並且當您超出數字$maxcols時,請開始追加到另一個數組。然後,當完成獲取循環時,分別遍歷這兩個數組來構建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建立你的兩個表的循環中的第一。