Login   Register  
PHP Classes
elePHPant
Icontem

File: htmltablecreation.inc

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Mark Williamson  >  csv2mysql database migration tool  >  htmltablecreation.inc  >  Download  
File: htmltablecreation.inc
Role: Auxiliary script
Content type: text/plain
Description: creates html tables from structs
Class: csv2mysql database migration tool
convert fields in a csv into SQL
Author: By
Last change:
Date: 2002-11-01 18:34
Size: 5,774 bytes
 

Contents

Class file image Download
<?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();
*/


?>