tedd wrote:
At 12:05 AM -0700 10/9/07, Jim Lucas wrote:
Daevid Vincent wrote:
Does PHP have any tools like this? I'd prefer not to pull in some PEAR
package or other bloat, but I'll take what I can get if it actually works well. I was hoping there are some tips/tricks to show simple tabular data:
-snip-
notice basic things like alignment, length of data (as in 'tabs' won't work), etc.


Try this out

-snip- code

Jim:

Thanks for the code. I've altered it to display a table in a browser:

http://webbytedd.com/bbb/table/

Code is shown there.

Cheers,

tedd

Wasn't he asking for something that was to display in the console?

I wouldn't use that to display tabular data in a browser.

I will attach what I use to display in a browser.

I updated the comments, I think everything is correct.  Let me know what you 
think

<?php

/**
 * This class is for creating an HTML table
 *
 * Example usage
 *      $table = new table();
 *      $table->addHeader(   array('ID',     'FirstName',    'LastName'),    
'header');
 *      $table->addData(     array(1,        'Jim',          'L'),           
'rowA');
 *      $table->addData(     array(2,        'Tim',          'H'),           
'rowB');
 *      $table->addData(     array(1,        'Jim',          'B'),           
'rowA');
 *      $table->addData(     array(2,        'Chris',        'C'),           
'rowB');
 *      echo $table->get('table_one', 'some_class');
 *
 *      or
 *
 *      $data[] = array('id' => 1,   'first_name' => 'John',              
'last_name' => 'Doe');
 *      $data[] = array('id' => 2,   'first_name' => 'Jonny',     'last_name' 
=> 'Buck');
 *      $data[] = array('id' => 3,   'first_name' => 'James',     'last_name' 
=> 'Smith');
 *      $table = new table();
 *      $table->dump($dataArray);
 *      echo $table->to_s();
 */
class table {
        /**
         * Purpose is to contain table data for display purposes later
         *
         * @type        array()
         */
        var $table      = array();
        /**
         * Constructor.
         *
         * @return      Class Object
         */
        function __construct() {
                return $this;
        }
        /**
         * Constructor, php4 style
         *
         * @return      Class Object
         */
        function table() {
                return $this->__construct();
        }
        /**
         * Creates a table header row
         *
         * This calls to the addRow method to create a list of cells with the 
$data submitted
         * It creates <th>...</th> cells
         *
         * @param       Your 1-dimensional array of data
         * @param       Value you would like to set id for the <tr id="..."> tag
         *
         * @return      Class Object
         */
        function addHeader($data, $row_id=null) {
                $this->addRow($data, 'th', $row_id);
                return $this;
        }
        /**
         * Creates a table data row
         *
         * This calls to the addRow method to create a list of cells with the 
$data submitted
         * It creates <td>...</td> cells
         *
         * @param       Your 1-dimensional array of data
         * @param       Value you would like to set id for the <tr id="..."> tag
         *
         * @return      Class Object
         */
        function addData($data, $row_id=null) {
                $this->addRow($data, 'td', $row_id);
                return $this;
        }
        /**
         * Creates a table row, when called
         *
         * @param       Data to be displayed
         * @param       Which type of cells are we creating?  td (default) or th
         * @param       ID value to be appended to the <tr id='row_...'> tag
         *
         * @return      Class Object
         */
        function addRow($data, $type='td', $row_id=null) {
                $this->table[] = "<tr id='row_{$row_id}'>";
                foreach ( $data AS $id => $cell ) {
                        $this->table[] = "<{$type} class='col_{$id}'>".
                                        htmlspecialchars($cell)."</{$type}>";
                }
                $this->table[] = '</tr>';
                return $this;
        }
        /**
         * Just build a table from an array full of data
         *
         * @param       Your 2-dimensional array of data
         *
         * @return      Class Object
         */
        function dump($data=array()) {
                for ( $x=0; $x<count($data); $x++ ) {
                        if ( ( $x % 20) == 0 ) {
                                $this->addHeader(array_keys($data[$x]));
                        }
                        $this->addData($data[$x]);
                }
                return $this;
        }
        /**
         * Generate and return the built table
         *
         * @param       Specify the ID value for the table id attribute
         * @param       Specify a class for the table class attribute
         *
         * @return      if data found, return formatted table
         *              if no data found, return 'No data to display' message
         */
        function get($id='', $class='') {
                if ( count($this->table) ) {
                        return "\n<table id='{$id}' class='{$class}'
                                cellpadding='0' cellspacing='0'>\n".
                                join("\n", $this->table)."\n</table>\n";
                }
                return 'No data to display';
        }
        /**
         * Generate and return the built table
         *
         * The purpose of this method is to be forwards compatible.
         * Most of my new CMS tries to detect if an object has a to_s() method
         *
         * @return      results from the get() method
         */
        function to_s() {
                return $this->get();
        }
}

--
Jim Lucas

   "Some men are born to greatness, some achieve greatness,
       and some have greatness thrust upon them."

Twelfth Night, Act II, Scene V
    by William Shakespeare

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to