Re: issues movig to php5 (extending html_table)

From: Date: Mon, 03 Apr 2006 07:22:17 +0000
Subject: Re: issues movig to php5 (extending html_table)
References: 1  Groups: php.pear.general 
Request: Send a blank email to pear-general+get-23511@lists.php.net to get a copy of this message
On 4/2/06, j llarens <llarensj@yahoo.com.ar> wrote: > I beggining to test php 5.0.5. > I get a error using an class that extends PEAR HTML_Table, and the error happends in > HTML_Table, > not in the inherited class. I could not determine the cause of the error. Can somebody guide me > to > documentation/hints regarding to code migration related to PEAR? > Or PEAR can't be used with PHP5 ? Most of PEAR is fine with PHP5. > this is the class HTML_DB_Table: > > <?php > /* > table from a query > */ > require_once ("HTML/Table.php"); > > class DB_HTML_Table extends HTML_Table { > > public $aColumnLinks = array(); > public $aTableLinks = array(); > public $sqlData; > public $headers; > public $isForm; > public $aColTot=array(); > public $aFilTot=array(); > > function DB_HTML_Table( $oResult, $attr, $headAttr=array(), $lForm=false ) { > $this->sqlData = $oResult; > HTML_Common::HTML_Common($attr); > } > > > function addheaders( $attr=null ) { > $aHeaders = $this->sqlData->tableInfo(); > $acHeaders = array(); > foreach( $aHeaders as $header ) { > array_push( $acHeaders, $header["name"] ); > } > $this->headers = $acHeaders; > $this->addRow($acHeaders,$attr,"TH",true); > } > > > > function addData( $attr=null, $filas=null, $pntr=null ) { > $i = is_null($filas) ? null : 0 ; > // arma columnas de totales > if(count($this->aColTot)){ > foreach($this->aColTot as $numCol){ > $this->aFilTot[$numCol]=0; > } > } > while ( $registro=$this->sqlData->fetchRow(DB_FETCHMODE_ORDERED,$i+$pntr) > ) { > if(count($this->aColTot)){ > foreach($this->aColTot as $numCol){ > $this->aFilTot[$numCol]+=$registro[$numCol]; > } > } > $i++; > if ( !is_null($filas) and $i == $filas+1 ) { > break; > } > $TRow="TD"; > $this->addRow($registro,$attr,$TRow,false); > } > if(count($this->aColTot)){ > $this->addRow($this->aFilTot,$attr,"TH",false); > } > } > > > > function addColumnLink($url,$keyColumns,$label,$vars=array(),$attrs=null){ > $linkCol = array( "?" ); > for ( $x = 0; $x < $this->_rows-1; $x++ ) { > $urlVars = ""; > foreach ( $vars as $key => $value ) { > $urlVars.="&".$key."=".$value; > } > foreach( $keyColumns as $varName => $varValue ) { > > $urlVars.="&".$varName."=".$this->getCellContents($x+1,$varValue); > } > array_push( $linkCol, "<a > href='".$url."?".$urlVars."' "." >".$label. > "</a>" ); > } > $this->addCol( $linkCol,$attrs ); > } > > > > } > ?> > > this code uses it, $dbc is an instance of PEAR::DB > > <?php > /* > this is not the complete code, nor in the class definition > but is the minimal case > */ > require_once("DB_HTML_Table.php"); > $oQ=&$dbc->query("select * from ciudad order by id"); > $tb=new DB_HTML_Table($oQ); > $tb->addHeaders(); > $tb->addData(); > $tb->display(); > $oQ->free(); > ?> > > and gives this error: > > Fatal error: call to a member function addRow() on a non-object in /usr/lib/php/HTML/Table.php > on > line 416 > This almost always means that an error happened somewhere and the code isn't checking for the error before trying to use the object. Try setting a global PEAR error handler. -- Justin Patrin

« previous php.pear.general (#23511) next »