<?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>
|