在codeigniter中动态插入数据并生成网格

时间:2011-11-21 21:42:28

标签: php codeigniter

我需要一些想法来做以下事情:

我需要动态构建一个表,并使用codeigniter插入和更新数据库中的数据。

$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
....

1 个答案:

答案 0 :(得分:0)

此解决方案对我来说效果很好,您只需仔细整理阵列即可。 (摘自PHP Cookbook)

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;