2011-11-21 66 views
1

我需要一些想法,做如下:插入數據並生成網格動態地笨

我需要與笨分貝動態地構建一個表並插入和更新數據。

$dates=array (date1, date2, ......daten) (cols) 
$people=array(name1, name2, ......namen) (rows) 

      date1 date2 date3 
name1   3  5  8 
name2   2  6  9 
name3   5  5  1 
name4   10  2  8 

在DB我需要註冊:

name1, date1 and 3 
name1, date2 and 5 
name2, date1 and 2 
.... 

回答

0

該解決方案爲我工作很好,你只需要仔細覈對您的陣列。 (從PHP食譜服用)

function pc_grid_horizontal($array, $size) { 
    // compute <td> width %ages 
    $table_width = 100; 
    $width = intval($table_width/$size); 
    // define how our <tr> and <td> tags appear 
    // sprintf() requires us to use %% to get literal % 
    $tr = '<tr align="center">'; 
    $td = "<td width=\"$width%%\">%s</td>"; 
    // open table 
    $grid = "<table width=\"$table_width%%\">$tr"; 
    // loop through entries and display in rows of size $sized 
    // $i keeps track of when we need a new table tow 
    $i = 0; 
    foreach ($array as $e) { 
     $grid .= sprintf($td, $e); 
     $i++; 
     // end of a row 
     // close it up and open a new one 
     if (!($i % $size)) { 
      $grid .= "</tr>$tr"; 
     } 
    } 
    // pad out remaining cells with blanks 
    while ($i % $size) { 
     $grid .= sprintf($td, '&nbsp;'); 
     $i++; 
    } 
    // add </tr>, if necessary 
    $end_tr_len = strlen($tr) * -1; 
    if (substr($grid, $end_tr_len) != $tr) { 
     $grid .= '</tr>'; 
    } else { 
     $grid = substr($grid, 0, $end_tr_len); 
    } 
     // close table 
     $grid .= '</table>'; 
     return $grid; 
} 

例如,讓我們打印的美國50個州的名字在六列的表格:

$query = $this->db->query('SELECT * FROM `states`'); 
$states = $query->result_array(); 

// generate the HTML table 
$grid = pc_grid_horizontal($states, 6); 
print $grid;