<?php
 
   /**************************************************************************
 
    * Project:     Fasttemplate for PHP 4.x
 
    * File:        flex_table.php
 
    * Author:      Artyem V. Shkondin http://clubpro.spb.ru
 
    * Version:     0.0.2
 
    * Requires:    flex_table.html
 
    *************************************************************************/
 
    include_once("cls_fast_template.php");    
 
    /**
 
     * Fills template with headers and cells array
 
     * @param $headers - array of column headers
 
     * @param $cells - array of cell values
 
     * @param $caption - caption of table
 
     * @param $rows - number of rows
 
     * @param $cols - caption of columns
 
     */
 
    function fillTable($headers, $cells,$caption, $rows,$cols){
 
        // initializing of fasttemplate 
 
        $ft = new FastTemplate("./templates/");
 
        $ft->define( array( 'table'    => "flextable.html"));
 
 
        $ft->define_dynamic ( "header", "table" );
 
        $ft->define_dynamic ( "rows", "table" );
 
        $ft->define_dynamic ( "cols", "table" );
 
 
        //handling headers (column names)
 
 
        foreach ($headers as $head){
 
            $ft->assign(
 
                    array('header'      =>  $head ));
 
            $ft->parse('HEADERS',".header");
 
        }
 
        // handling cells
 
 
        foreach ($cells as $row){
 
            foreach ($row as $cell){
 
                $ft->assign(
 
                            array('cellvalue'      =>  $cell ));
 
                            $ft->parse('COLS',".cols");
 
            }
 
            
 
            $ft->parse('ROWS',".rows");
 
            $ft->clear("COLS");
 
        
 
        }
 
 
        $ft->assign("caption", $caption);
 
        $ft->assign("rows", $rows);
 
        $ft->assign("cols", $cols);
 
        $ft->parse('MAIN', "table");
 
        $ft->FastPrint('MAIN');
 
 
    }
 
 
   //MAIN
 
 
    $caption = "Fasttemplate: Flexible table example";
 
 
    /*
 
     *  Get  number of rows and cols and fills headers and cells
 
     */
 
     if(isset($HTTP_POST_VARS['rows'])&&isset($HTTP_POST_VARS['cols'])){
 
            $rows = $HTTP_POST_VARS['rows'];
 
            $cols = $HTTP_POST_VARS['cols'];
 
     }else{
 
            $rows = 3;
 
            $cols = 4;
 
     }
 
 
     if ($rows*$cols > 2000){
 
        echo "Too many cells. Should be less then 2000";
 
        $rows = 10;
 
        $cols = 5;
 
     }
 
 
     $headers = array();
 
     $cells = array();
 
 
     for ($i = 1; $i <= $rows; $i++ ){
 
        $row = array();
 
        for ($j = 1; $j <= $cols; $j++ ){
 
            array_push ($row, "cell[$i,$j]"); 
 
        }        
 
        array_push($cells,$row);
 
     }
 
 
        for ($j = 1; $j <= $cols; $j++ ){
 
            array_push ($headers, "header$j"); 
 
        }        
 
   fillTable($headers, $cells, $caption, $rows, $cols);
 
?>
 
 |