Re: issues movig to php5 (extending html_table)
| From: | Justin Patrin | 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