Location: PHPKode > scripts > Table Class > table-class/class.Table.php
<?

/*
=======================================================================
		This file consist of the 
		
		TABLE CLASS V 0.1.1.
		-------------------------------------
Purpose and Use:
	This class is used to create a table wherein the user can specify
	parameters for the table. This is used to shorten the code and minimize
	time of development

Functions:
	* Table($col)									- constructor of the class and accepts number
																	of columns for the table
	
	* AddRow($row, $property="")								- adds a single row to the table. accepts a string
																	separated by "^".
																	EXAMPLE:
																		AddRow("Junrey^Beduya^Programmer","class=level2");
																			- the above code adds "Junrey" on the first
																				column, then "Beduya" on the second and so forth
	
	* Process()										- this function is the main of this class.
																	It processes the table to be displayed.
	
	* Display()										- print the table
	
	* setColWidth($width)					- this funcion sets the width of every column
																	of the table
	
	* setHeaders($header)					-	sets the text to be displayed as headers of
																	the table
	
	* setProperties($property)		- sets the property of the table
	
	* setHeaderStyle($start, $end)- sets the style of the header such as bold or italic.
																	start and end means start tag and end tag
																	EXAMPLE:
																		setHeaderStyle("<font face=Verdana><b>", "</b></font>");
	
	* setHeaderProperty($property)-	sets the property of the header. Either you include
																	a class or whatever
																	EXAMPLE:
																		setHeaderProperty("bgcolor=green");
																		setHeaderProperty("class=brownish");
	
	* setColAlignment($alignment)		- this function sets the alignment of every column inside
																		the table the default alignment is left.																		
	
	* setSpacing($space)						- sets the spacing of the table
	
	* setBorder($border) 						- sets the border of the table
	
	* setPadding($pad)							- sets the padding of the table
	
	* getTable()										- returns the processed table


++++++++++++++++++++++++++++++++++++++++++++++++++++++++
NOTE:
	Most of the function accepts string parameter. And most parameter are separated by
	comma. Only the AddRow($row) function that accepts a parameter that is delimited or
	separated by caret (^).
++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-------------------------------
=	PROGRAMMER:									=
=		Junrey Beduya							=	
=		hide@address.com				=
=		04.03.2002.		15.29.32		=
================================================================================
*/

class Table {
	var $columns;											// holds the number of columns
	var $width = array();							// holds the width of every column
	var $colProperties = array();			// holds the property of every column such as alignment

	var $rowCount;										// number of rows in the table
	var $row = array();								// holds the value of every row
	var $properties;									// holds the property of the table

	var $headerProperty;							// has the value of the header properties
	var $headerStyle = array();				// header style whether bold or whatever
	var $headers = array();						// holds the text to be displayed as header
	
	var $padding;											// table padding
	var $spacing;											// table spacing
	var $border;											// table border
	
	var $table;
	var $percent;
	function Table($col) {
		$this->columns=$col;
		$this->rowCount=0;
		$this->border=0;
		$this->padding=0;
		$this->spacing=0;
		$this->headerStyle["start"]="<center><b>";
		$this->headerStyle["end"]="<center><b>";
		$this->percent = false;
		for ($i=0;$i<$col-1; $i++){
			$this->colProperties[$i]["align"] = "align=left";
		}
	}
	
	function setColWidth($colWidth) {
		$temparr = split(",", trim($colWidth));
		for ($i=0; $i<count($temparr); $i++) {
			$this->width[$i]=(int)$temparr[$i];
		}
	}

	function setPercent($percent=true) {
		$this->percent = $percent;
	}
	
	function setHeaders($headers) {
		$temparr = split("\^", $headers);
		for ($i=0; $i<count($temparr); $i++) {
			$this->headers[$i]=$temparr[$i];
		}
	}
	
	function Process() {
		if ($this->columns<=0) {
			return "There is no table to display.";
		}
		$width = 0;
		for ($i=0; $i < $this->columns; $i++) {
			$width += (int)$this->width[$i];
		}
		$this->properties .= " width=" . $width;
		$this->properties .= ($this->percent==true)?"%":"";
		$temp = "<table cellspacing=" . $this->spacing . $this->properties;
		$temp .= " cellpadding=". $this->padding . " border=" . $this->border .">\n";
		$temp .= "\t<tr " . $this->headerProperty . ">\n";
		for ($y=0; $y < $this->columns; $y++) {
			$temp .= "\t\t<td width=" . $this->width[$y] . (($this->percent==true)?"%":"") . ">";
			$temp .= $this->headerStyle["start"] . $this->headers[$y] . $this->headerStyle["end"] . "</td>\n";
		}
		$temp .= "\t</tr>\n";
		for ($i=0; $i< $this->rowCount; $i++) {
			$temparr = split("\^", $this->row[$i]["fields"]);
			$temp .= "\t<tr " . $this->row[$i]["properties"] . ">\n";
			for ($y=0; $y < $this->columns; $y++) {
				$temp .= "\t\t<td width=" . $this->width[$y] . (($this->percent==true)?"%":"") . " " . $this->colProperties[$y]["align"] . ">" . $temparr[$y] . "</td>\n";
			}
			$temp .= "\t</tr>\n";
		}
		$temp .= "</table>";
		$this->table = $temp;
	}
	
	function Display() {
		echo $this->table;
	}
	
	function getTable() {
		return $this->table;
	}

	function setProperties($property) {
		$this->properties=$property;
	}
	
	function setHeaderStyle($start, $end) {
		$this->headerStyle["start"]=$start;
		$this->headerStyle["end"]=$end;
	}
	
	function setHeaderProperty($property) {
		$this->headerProperty=$property;
	}

	function AddRow($row, $property="") {
		$count = $this->rowCount++;
		$this->row[$count]["fields"] = $row;
		$this->row[$count]["properties"] = $property;
	}
	
	function setPadding($pad) {
		$this->padding = $pad;
	}
	
	function setSpacing($space) {
		$this->spacing = $space;
	}

	function setBorder($border) {
		$this->border = $border;
	}
	
	function setColAlignment($alignment) {
		$temparr = split(",",$alignment);
		for ($i=0;$i<$this->columns;$i++) {
			$temp = trim($temparr[$i]);
			$this->colProperties[$i]["align"]= "align=" . ( ($temp=="")?"left":$temp );
		}
	}

}

?>
Return current item: Table Class