PHP Classes

File: table.php

Recommend this page to a friend!
  Classes of al dev   db_table   table.php   Download  
File: table.php
Role: ???
Content type: text/plain
Description: HTML table generation program
Class: db_table
Author: By
Last change:
Date: 23 years ago
Size: 6,953 bytes
 

Contents

Class file image Download
<?php /* ** Name: Table OO Interface ** Has 2 classes 'html_table' and 'html_table_pretty' ** Description: Automatic generation of HTML for table. - Colspan, rowspan, table style, cell style, and data style may all be defined. - OO interface - Simple but effective ** History: This class is written by Herman Veluwenkamp ** email: hermanv@mindless.com ** and is available at - ** http://phpclasses.upperdesign.com/browse.html/package/21 */ // Generic HTML Table class class html_table { var $cols = 0; var $rows = 0; var $cell = array(); var $html = ''; var $cell_content = '&nbsp;'; //default cell content. var $content_style = ''; //default content style. content is surrounded by <SPAN> tag. var $col_style = array(); // default style for table column. enclosed in <TD> tags. var $col_cell_style = array(); // default style for column cells. enclosed in <SPAN> tags. var $col_email_href = array(); // 1 for email links, 2 for href links var $cell_style = ''; // default cell style. enclosed in <TD> tags. var $cell_form = 'N'; // Put <form> tags enclosing the <TD> tags? Default is "no" var $table_style = ''; // default table style. enclosed in <TABLE> tags. // Private variables var $_tdtag; function cell_init() { return array( 'content' => $this->cell_content, 'style' => '', 'cell_style'=> ''); } function init($parameters) { if (isset($parameters['cols'])) $this->cols = $parameters['cols']; if (isset($parameters['rows']))$this->rows = $parameters['rows']; for ($row = 1; $row <= $this->rows; $row++) { for ($col = 1; $col <= $this->cols; $col++) { $this->cell[$row][$col] = $this->cell_init(); } } } function add_rows($num_rows) { for ($row = 1; $row <= $num_rows; $row++) { for ($col = 1; $col <= $this->cols; $col++) { $this->cell[$row + $this->rows][$col] = $this->cell_init(); } } $this->rows += $num_rows; } function add_cols($num_cols) { for ($row = 1; $row <= $this->rows; $row++) { for ($col = 1; $col <= $num_cols; $col++) { $this->cell[$row][$col+$this->cols] = $this->cell_init(); } } $this->cols += $num_cols; } function code() { if (!empty($this->html)) return 1; $this->html = '<TABLE '.$this->table_style.'>'."\n"; for ($row = 1; $row <= $this->rows; $row++) { $this->html .= ' <TR>'."\n"; for ($col = 1; $col <= $this->cols; $col++) { $extra = ''; //check if "colspan" defined. if so then hide cells that get merged. if (isset($this->cell[$row][$col]['colspan'])) { $extra .= 'COLSPAN="'.$this->cell[$row][$col]['colspan'].'"'; for ($hidden_col = 1; $hidden_col < $this->cell[$row][$col]['colspan']; $hidden_col++) { $this->cell[$row][$col+$hidden_col]["hide"] = true; //check if "rowspan" defined. if so then propogate "colspan" into merged rows. if (isset($this->cell[$row][$col]["rowspan"])) { for ($hidden_row = 1; $hidden_row < $this->cell[$row][$col]['rowspan']; $hidden_row++) { $this->cell[$row+$hidden_row][$col]["colspan"] = $this->cell[$row][$col]['colspan']; } } } } //check if "rowspan" defined. if so then hide cells that get merged. if (isset($this->cell[$row][$col]["rowspan"])) { $extra .= 'ROWSPAN="'.$this->cell[$row][$col]['rowspan'].'"'; for ($hidden_row = 1; $hidden_row < $this->cell[$row][$col]['rowspan']; $hidden_row++) { $this->cell[$row+$hidden_row][$col]["hide"] = true; } } // code to draw cell html... if (isset($this->cell[$row][$col]['hide'])) continue; // if hide then skip this cell. // Should we put <form> tags surrounding the <td> tags ?? if ($this->cell[$row][$col]['cell_form'] == 'N') $this->_tdtag = ' <TD '; else $this->_tdtag = ' <form><TD '; // otherwise draw cell with style... if (!empty($this->cell[$row][$col]['cell_style'])) $this->html .= $this->_tdtag . $this->cell[$row][$col]['cell_style'] . ' ' . $extra.'>'; else if (!empty($this->col_style[$col])) $this->html .= $this->_tdtag . $this->col_style[$col] .' '. $extra.'>'; else $this->html .= $this->_tdtag . $this->cell_style .' '. $extra.'>'; // draw content of cell with style... if (!empty($this->cell[$row][$col]['style'])) $this->html .= '<SPAN '.$this->cell[$row][$col]['style'].'>'; else if (!empty($this->col_cell_style[$col])) $this->html .= '<SPAN '.$this->col_cell_style[$col].'>'; else if (!empty($this->content_style)) $this->html .= '<SPAN '.$this->content_style.'>'; // If the contents are email links or href links if ($row == 1) // is a top Title Header line - do not print email links { $this->html .= $this->cell[$row][$col]['content']; } else if ($this->cell[$row][$col]['content'] == "&nbsp;") // for netscape background is black { $this->html .= $this->cell[$row][$col]['content']; } else { if ($this->col_email_href[$col] == 1) // if the column is email links { $this->html .= '<a href="mailto:' . $this->cell[$row][$col]['content'] . '">' . $this->cell[$row][$col]['content'] . '</a>'; } else if ($this->col_email_href[$col] == 2) // if the column is a href links { $this->html .= '<a href="' . $this->cell[$row][$col]['content'] . '">' . $this->cell[$row][$col]['content'] . '</a>'; } else $this->html .= $this->cell[$row][$col]['content']; } if (!empty($this->cell[$row][$col]['style']) or !empty($this->col_cell_style[$col]) or !empty($this->content_style)) $this->html .= '</SPAN>'; if ($this->cell[$row][$col]['cell_form'] == 'N') $this->_tdtag = ' </TD> '; else $this->_tdtag = ' </TD></form> '; $this->html .= $this->_tdtag . "\n"; } $this->html .= ' </TR>'."\n"; } $this->html .= '</TABLE>'."\n"; } function display() { if (empty($this->html)) $this->code(); print $this->html; } } // end of class html_table. class html_table_pretty extends html_table { var $background = ''; var $border_width = ''; var $border_color = ''; var $html_pretty = ''; function code_pretty() { $this->code(); $border_style = ''; if (!empty($this->border_width)) $border_style .= ' CELLSPACING="0" CELLPADDING="0" BORDER="'.$this->border_width.'"'; if (!empty($this->border_color)) $border_style .= ' BORDERCOLOR="'.$this->border_color.'"'; $this->html_pretty = '<TABLE'.$border_style.'><TR><TD '.$this->background.'>'."\n"; $this->html_pretty .= $this->html; $this->html_pretty .='</TD></TR></TABLE>'."\n"; } function display_pretty() { if (empty($this->html_pretty)) $this->code_pretty(); print $this->html_pretty; } } // end of class html_table_pretty php?>