PHP Classes

File: htmltablecreation.inc

Recommend this page to a friend!
  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: 21 years ago
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();
*/


?>