<?php 
/* 
 * test_table_class.php 
 * 
 * @(#) $Id: test_table_class.php,v 1.1 2008/06/08 22:27:43 mlemos Exp $ 
 * 
 */ 
 
/* 
 *  Require the base table class 
 */ 
    require('tableclass.php'); 
 
/* 
 *  A sub-class of the table class to customize how to retrieve the data 
 *  to be presented 
 */ 
 
class my_table_class extends table_class 
{ 
    /* 
     *  Initial first page 
     */ 
    var $page = 0; 
 
    /* 
     *  Limit of rows to show per page besides the header row 
     */ 
    var $rowsperpage = 10; 
 
    /* 
     *  Turn table border on or off 
     */ 
    var $border = 0; 
 
    /* 
     *  Color to highlight rows when the users drags the mouse over them 
     */ 
    var $highlightrowcolor = '#00CCCC'; 
 
    /* 
     *  Background color of the header row 
     */ 
    var $headersrowbackgroundcolor = '#CCCCCC'; 
 
    /* 
     *  Background color of the odd numbered rows 
     */ 
    var $oddrowsbackgroundcolor = '#EEEE00'; 
 
    /* 
     *  Background color of the even numbered rows 
     */ 
    var $evenrowsbackgroundcolor = '#CCCC00'; 
 
    /* 
     *  Array of values to be displayed 
     */ 
    var $values = array(); 
 
    /* 
     *  Titles of the header columns 
     */ 
    var $titles = array(); 
 
    /* 
     *  This function defines the contents of each table cell 
     */ 
    Function fetchcolumn(&$columndata) 
    { 
        $column = $columndata['column']; 
        if($column >= count($this->titles)) 
            return 0; 
 
        /* 
         *  Is it the header row? 
         */ 
        $row = $columndata['row']; 
        if($row==0) 
        { 
            /* 
             *  Display the table header titles 
             */ 
            $columndata['data'] = $this->titles[$column]; 
            $columndata['header']=1; 
        } 
        else 
        { 
            /* 
             *  Display the table cells with data from the values array 
             */ 
            $value=Key($this->values); 
            switch($column) 
            { 
                case 0: 
                    $columndata['data'] = $this->values[$value]['id']; 
                    $columndata['align'] = 'right'; 
                    break; 
 
                case 1: 
                    $columndata['data'] = $this->values[$value]['currency']; 
                    break; 
 
                case 2: 
                    $columndata['data'] = $this->values[$value]['zone']; 
                    break; 
 
                case 3: 
                    $columndata['data'] = $this->values[$value]['name']; 
                    break; 
 
                case 4: 
                    $columndata['data'] = $this->values[$value]['current_value']; 
                    $columndata['align'] = 'right'; 
                    break; 
            } 
        } 
        return(1); 
    } 
 
    /* 
     *  Function that defines each table row 
     */ 
    Function fetchrow(&$rowdata) 
    { 
        /* 
         *  Only allow displaying up to the limit number of rows 
         */ 
        $row = $rowdata['row']; 
        if($row > min($this->rowsperpage, count($this->values) - $this->page * $this->rowsperpage)) 
            return(0); 
 
        /* 
         * Set the highlight and background color according to the row number  
         */ 
        $rowdata['backgroundcolor']=(($row == 0) ? $this->headersrowbackgroundcolor : ((intval($row % 2) == 0) ? $this->evenrowsbackgroundcolor : $this->oddrowsbackgroundcolor)); 
        $rowdata['id']=($this->rowidprefix.strval($row)); 
        $rowdata['highlightcolor']=(($row != 0) ? $this->highlightrowcolor : ''); 
        switch($row) 
        { 
            case 0: 
                /* 
                 *  Seek to the first position of the array values to display 
                 */ 
                Reset($this->values); 
                $first = $this->page * $this->rowsperpage; 
                for($p = 0; $p < $first; ++$p) 
                    Next($this->values); 
                break; 
            case 1: 
                break; 
            default: 
                /* 
                 *  Seek to the next position of the array values to display 
                 */ 
                Next($this->values); 
                break; 
        } 
        return(1); 
    } 
}; 
 
?><html> 
<head> 
<title>Test for Manuel Lemos' PHP table class</title> 
</head> 
<body> 
<h1><center>Test for Manuel Lemos' PHP table class</center></h1> 
<hr /> 
<?php 
 
    /* 
     *  Array of data to display in the table 
     */ 
    $currencies = array( 
        array('id'=>1,  'currency'=>'XEU', 'zone'=>'Europe',         'name'=>'Euro',      'current_value'=>'1.0000000'), 
        array('id'=>2,  'currency'=>'PTE', 'zone'=>'Portugal',       'name'=>'Escudo',    'current_value'=>'200.4820000'), 
        array('id'=>3,  'currency'=>'DEM', 'zone'=>'Germany',        'name'=>'Mark',      'current_value'=>'1.9558300'), 
        array('id'=>4,  'currency'=>'FRF', 'zone'=>'France',         'name'=>'Franc',     'current_value'=>'6.5595700'), 
        array('id'=>5,  'currency'=>'ESP', 'zone'=>'Spain',          'name'=>'Peseta',    'current_value'=>'166.3860000'), 
        array('id'=>6,  'currency'=>'ITL', 'zone'=>'Italy',          'name'=>'Lira',      'current_value'=>'1936.2700000'), 
        array('id'=>7,  'currency'=>'IEP', 'zone'=>'Ireland',        'name'=>'Punt',      'current_value'=>'0.7875640'), 
        array('id'=>8,  'currency'=>'BEP', 'zone'=>'Belgium',        'name'=>'Franc',     'current_value'=>'40.3399000'), 
        array('id'=>9,  'currency'=>'LUF', 'zone'=>'Luxembourg',     'name'=>'Franc',     'current_value'=>'40.3399000'), 
        array('id'=>10, 'currency'=>'ATS', 'zone'=>'Austria',        'name'=>'Schilling', 'current_value'=>'13.7603000'), 
        array('id'=>11, 'currency'=>'NLG', 'zone'=>'Netherlands',    'name'=>'Guilder',   'current_value'=>'2.2037100'), 
        array('id'=>12, 'currency'=>'FIM', 'zone'=>'Finland',        'name'=>'Markka',    'current_value'=>'5.9457300'), 
        array('id'=>13, 'currency'=>'USD', 'zone'=>'United States',  'name'=>'Markka',    'current_value'=>'0.9265910'), 
        array('id'=>14, 'currency'=>'CHF', 'zone'=>'Switzerland',    'name'=>'Franc',     'current_value'=>'1.5188700'), 
        array('id'=>15, 'currency'=>'CAD', 'zone'=>'Canada',         'name'=>'Dollar',    'current_value'=>'1.4058900'), 
        array('id'=>16, 'currency'=>'JPY', 'zone'=>'Japan',          'name'=>'Yen',       'current_value'=>'105.0500000'), 
        array('id'=>17, 'currency'=>'BRL', 'zone'=>'Brazil',         'name'=>'Real',      'current_value'=>'1.8233200'), 
        array('id'=>18, 'currency'=>'DKK', 'zone'=>'Denmark',        'name'=>'Kroner',    'current_value'=>'7.4571300'), 
        array('id'=>19, 'currency'=>'GRD', 'zone'=>'Greece',         'name'=>'Drachma',   'current_value'=>'340.3260000'), 
        array('id'=>20, 'currency'=>'RUR', 'zone'=>'Russia',         'name'=>'Ruble',     'current_value'=>'25.9535000'), 
        array('id'=>21, 'currency'=>'SEK', 'zone'=>'Sweeden',        'name'=>'Krona',     'current_value'=>'8.8321600'), 
        array('id'=>22, 'currency'=>'GBP', 'zone'=>'United Kingdom', 'name'=>'Pound',     'current_value'=>'0.6274870'), 
    ); 
 
    $table = new my_table_class; 
 
    /* 
     *  Prefix for the table row identifiers 
     */ 
    $table->rowidprefix = 'currency'; 
 
    /* 
     *  Titles of the table columns 
     */ 
    $table->titles = array( 
        'ID', 
        'Symbol', 
        'World zone', 
        'Name', 
        'Current value' 
    ); 
 
    /* 
     *  Limit of navigation links to show 
     */ 
    $table->listpages=3; 
 
    /* 
     *  Title of the first page link 
     */ 
    $table->firstprefix="<< First"; 
 
    /* 
     *  Title of the previous page link 
     */ 
    $table->previousprefix="< Previous"; 
 
    /* 
     *  Title of the next page link 
     */ 
    $table->nextsuffix="Next >"; 
 
    /* 
     *  Title of the last page link 
     */ 
    $table->lastsuffix="Last >>"; 
 
    /* 
     *  Show the row range in the first and last page links 
     */ 
    $table->rangeinfirstlast=0; 
 
    /* 
     *  Show the row range in the previous and next page links 
     */ 
    $table->rangeinpreviousnext=0; 
 
    /* 
     *  Limit number of rows to display per page 
     */ 
    $table->rowsperpage = 5; 
 
    /* 
     *  Set the array of values to display in the table 
     */ 
    $table->values = $currencies; 
 
    /* 
     *  Set the total number of rows to display in all pages 
     *  so the class can generate pagination links 
     */ 
    $table->totalrows = count($currencies); 
 
    /* 
     *  Set the number of the current page to display 
     */ 
    $maximum_pages = intval($table->totalrows / $table->rowsperpage); 
    if(IsSet($_GET['page']) 
    && ($page = intval($_GET['page'])) >=0 
    && $page <= $maximum_pages) 
        $table->page = $page; 
 
    /* 
     *  Display the whole table at once 
     */ 
    echo $table->outputtable(); 
?> 
<hr /> 
</body> 
</html>
 
 |