Location: PHPKode > scripts > csv2mysql database migration tool > csv2mysql-database-migration-tool/htmltablecreation.inc
<?php

//////// sample array to pass to class //////////
/*
$stuff = array("0" => array(
      		    "product_id" => "00001",
      		    "actual_unit_cost"  => "99.99",
      		    "retail_unit_cost" => "124.99",
      		    "quantity"   => "5"
      		   ),
      "1" => array(
      		    "product_id" => "00002",
      		    "actual_unit_cost" => "699.99",
      		    "retail_unit_cost" => "750.00",
      		    "quantity"   => "3"      		
      		  )
      );
*/


class display {
	var $widths = array();
	var $biggest = array();
	var $data = array();
	var $dis;
	var $divider;
	var $rows;
	var $emptyset=FALSE;
	var $write; //echo the output
	var $ascii_output;
	var $finalhtmltable;
	var $stylesheet;
	
	var $borderwidth = 0;
	var $bordercolor = "#000000";
	var $cellpadding = 2;
	var $cellspacing = 1;
	

	function calculate_widths($array){
		if(empty($array)){
			//check that there is some data to display
			$this->emptyset=TRUE;
			return(false);
		}
		//loop through each row
		$this->data = $array;
		$x=0;
		if(is_array($array)){
			foreach($array as $a){
				while(list($key, $val) = each($a)){ 
						$this->widths[$x][$key] = strlen($val);
				}
				++$x;
			}
		}
		$this->biggest = $this->get_longest_only();
		return($this->widths);
	}

	function get_longest_only(){
		$x=0;
		$array = $this->widths;
		foreach($array as $a){
			while(list($key, $val) = each($a)){ 
					if($val > $this->biggest[$key] || empty($this->biggest[$key])){	
						$this->biggest[$key] = $val;
					}
					if(strlen($key) > $this->biggest[$key]){
						$this->biggest[$key] = strlen($key);
					}
			}
			++$x;
		}
		return($this->biggest);
	}	

	function make_layout($write=1){
		$this->write = $write;
		if($this->emptyset){
			return("Empty set (0.00 hehehe)\n");
		}
			$first="+";	
			while(list($key, $val) = each($this->biggest)){ 

			$dis.="+";
				for($x=0;$x<$this->biggest[$key];$x++){
					$first .= "-";
				}
				$first.="+";
				$s="|".ucwords(str_replace("_", " ",$key));
				if(strlen($s)<= $this->biggest[$key]){
					for($x=strlen($s);$x<=$this->biggest[$key];$x++){
						$s.=" ";
					}
				}
				$second.=$s;
			}
		$this->divider = $first;
		$re = $first."\n".$second."|\n".$first."\n";
		$re.=$rows;	

		$this->rows = $this->make_body();
		$re.=$this->rows;
		if($this->write){
			//write the output to the webpage
			//echo "<pre>".$re."</pre>";
			echo "".$re."";
		}
		$this->ascii_out = $re;
		return($re);
	}

	function create_stylesheet($bg="ededed", $fontcol="000000", $fontsize="x-small", $bg2="444444", $fontcol2="ffffff", $fontsize2="x-small"){
		$this->stylesheet = "
			<STYLE type='text/css'> 
			<!--
				.column-data { background:$bg; color:$fontcol; font-size:$fontsize; }
				.table-header { background:$bg2; color:$fontcol2; font-weight:bold; text-align:center; font-size:$fontsize2 }
			//-->
			</style>";
	}

	function make_body(){
		if(is_array($this->data)){
			foreach($this->data as $row){	
				while(list($key, $val)=each($row)){

				if(is_array($val)){
					$out[0]=$val;
					$tr = new display($out);
					$tr->make_layout(0);
					$tr->set_borderwidth($this->borderwidth);
					$tr->set_cellpadding($this->cellpadding);
					$tr->set_cellspacing($this->cellspacing);
					$tr->set_bordercolor($this->bordercolor);		
					$val = "<Table><TR><TD> ".$tr->make_html_table()."</TD></tR></tAble>";
				}
					$r .= "|".$val;
					if(strlen($val)<= $this->biggest[$key]){
						for($x=strlen($val);$x < $this->biggest[$key]; $x++){	
							$r.=" ";
						}
					}
				}
				$r.="|\n";
			}	
		}	
		$r.=$this->divider."\n";
		return($r);	

	}

	function get_divider(){
		return($this->divider);
	}
	
	function display($stuff){
			//constructor function
			$this->widths = $this->calculate_widths($stuff);
	}

	function set_borderwidth($wid){
		$this->borderwidth = $wid;
	}

	function set_cellpadding($pad){
		$this->cellpadding=$pad;
	}
	
	function set_cellspacing($spac){
		$this->cellspacing=$spac;
	}

	function set_bordercolor($col){
		$this->bordercolor=$col;
	}
	function make_html_table(){
		//converts ascii display into a proper html table
		$text = $this->ascii_out;			

		$rows = explode("\n", $text);
		$x=0;
		foreach($rows as $row){
			$last = strlen($row);
			$class = "column-data";	
			if($x==1){	
				$class = "table-header";
			}
			if(!ereg("^\+\-*", $row) && strlen($row)>0){
				$row = "<TR>\n <td class='$class' align='center' valign='middle'>".$row;
				$row .= "</td>\n</TR>\n";
				$row = str_replace("+", "</td><td class='$class' align='center'>", $row);
				$row = str_replace("|", "</td><td class='$class' align='center'>", $row);
				$row = str_replace("<td class='$class' align='center'></td>", "", $row); //remove any blanks
				$row = str_replace("<td class='$class' align='center' valign='middle'></td>", "", $row); //remove any blanks
				$htmloutput.=$row;
			}
			$x++;
		}

		$style = $this->stylesheet;
		$htmloutput = $style."\n<TABLE border='".$this->borderwidth."' bordercolor='".$this->bordercolor."' cellpadding='".$this->cellpadding."' cellspacing='".$this->cellspacing."'>\n ".$htmloutput."\n</TABLE>";

		$this->finalhtmltable = $htmloutput;
		return($htmloutput);	
	}

	function returnhtml(){
		return($this->finalhtmltable);
	}
	function parsehtml(){
		echo $this->finalhtmltable;
	}
}
			
		

//$t = new display($stuff);
//$t->make_layout(0);
//echo $t->make_html_table();

/*
$d = new display($stuff);
$d->make_layout(0);
$d->set_borderwidth(0);
$d->set_cellspacing(1);
$d->set_cellpadding(2);
$d->make_html_table();
$d->parsehtml();
*/


?>
Return current item: csv2mysql database migration tool