Login   Register  
PHP Classes
elePHPant
Icontem

File: test_table_class.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Manuel Lemos  >  Table wrapper base class  >  test_table_class.php  >  Download  
File: test_table_class.php
Role: Example script
Content type: text/plain
Description: Example page script to demonstrate the usage of the table class
Class: Table wrapper base class
Table wrapper base class
Author: By
Last change:
Date: 2008-06-08 15:40
Size: 7,567 bytes
 

Contents

Class file image Download
<?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->rowsperpagecount($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>