Re: [PHP] Call to undefined method on class property!?

2010-01-07 Thread Darren Karstens
Do you have a method in your Database class called affected_rows() ?
From the code you have shown you only have a member variable called
affected_rows and so your call $db-fetch_array($result) is falling
over.

On Thu, Jan 7, 2010 at 8:47 AM, Allen McCabe allenmcc...@gmail.com wrote:
 I have a singleton database object in a global file at the top of my
 document. In most other locations I am able to access it just fine, however
 in my footer I want to loop through a properties list for links (I am saving
 links to a database, each with its own properties).

 Here is the code snippet that is giving me trouble:

 footerlinks.inc.php:

 ?php
        $result = $db-query('SELECT * FROM `links` WHERE `category` =
 \'footer_navigation\';');
        $total = $db-affected_rows;

        if ($total  0)
        {
            $Link = new Link();
            $count = $db-affected_rows($result);
            $i = 0;
            while ($row = $db-fetch_array($result))
            {
                $properties = $Link-setLinkProperties($row);

                $link[$i] = 'a ';
                foreach ($properties as $prop)
                {
                    $link[$i] .= $prop;
                }
                $link[$i] .= '';
                $row['text'];
                $link[$i] .= '/a';

                $i++;
            }

            $j = 0;
            while ($j  $link)
            {
                echo $link[$j];
                if ($j  $count)
                {
                    echo ' | ';
                }

                $j++;
            }

        }

    ?

 The $Link-$Link-setLinkProperties() method is defined in

 Link.class.php:

 ?php

 class Link {

    public function setLinkProperties($rows)
    {
        if (!empty($row['href']))
        {
            $properties['href'] = 'href=' . $row['href'] . ' ';
        }

        if (!empty($row['class']))
        {
            $properties['class'] = 'class=' . $row['class'] . ' ';
        }

        if (!empty($row['style']))
        {
            $properties['style'] = 'style=' . $row['style'] . ' ';
        }

        if (!empty($row['title']))
        {
            $properties['title'] = 'title=' . $row['title'] . ' ';
        }

        if (!empty($row['name']))
        {
            $properties['name'] = 'name=' . $row['name'] . ' ';
        }

        if (!empty($row['target']))
        {
            $properties['target'] = 'target=' . $row['target'] . ' ';
        }

        if (!empty($row['rel']))
        {
            $properties['rel'] = 'rel=' . $row['rel'] . ' ';
        }

        if (!empty($row['onclick']))
        {
            $properties['onclick'] = 'onclick=' . $row['onclick'] . ' ';
        }

        if (!empty($row['ondblclick']))
        {
            $properties['ondblclick'] = 'ondblclick=' . $row['ondblclick']
 . ' ';
        }

        if (!empty($row['onmouseover']))
        {
            $properties['onmouseover'] = 'onmouseover=' .
 $row['onmouseover'] . ' ';
        }

        if (!empty($row['onmouseout']))
        {
            $properties['onmouseout'] = 'onmouseout=' . $row['onmouseout']
 . ' ';
        }

        return $properties;

    } // END OF METHOD setLinkProperties
 } // END OF CLASS

 ?

 Also for reference, the method query() in my database class sets a value for
 $affected_rows:

 Database.class.php:

 ?php

 class Database {

    private $server   = ''; //database server
    private $user     = ''; //database login name
    private $pass     = ''; //database login password
    private $database = ''; //database name
    private $pre      = ''; //table prefix

    ###
    //internal info
    private $error = '';
    private $errno = 0;

    //number of rows affected by SQL query
    public $affected_rows = 0;

 ...

 ?

 This is the error I am receiving:

 *Fatal error*: Call to undefined method Database::affected_rows() in *
 /home/mwclans1/public_html/components/footerlinks.inc.php* on line *9*

 Please help PHP gurus!!


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



Re: [PHP] Call to undefined method on class property!?

2010-01-07 Thread Thijs Lensselink

Allen McCabe wrote:

I have a singleton database object in a global file at the top of my
document. In most other locations I am able to access it just fine, however
in my footer I want to loop through a properties list for links (I am saving
links to a database, each with its own properties).

Here is the code snippet that is giving me trouble:

footerlinks.inc.php:

?php
$result = $db-query('SELECT * FROM `links` WHERE `category` =
\'footer_navigation\';');
$total = $db-affected_rows;


Here you use affected_rows as a class property to assign a value to a 
variable.




if ($total  0)
{
$Link = new Link();
$count = $db-affected_rows($result);


Here you call affected_rows as a class method. And from looking at your 
Database class. affected_rows is a property not a method. So that 
explains the undefined method error.




$i = 0;
while ($row = $db-fetch_array($result))
{
$properties = $Link-setLinkProperties($row);

$link[$i] = 'a ';
foreach ($properties as $prop)
{
$link[$i] .= $prop;
}
$link[$i] .= '';
$row['text'];
$link[$i] .= '/a';

$i++;
}

$j = 0;
while ($j  $link)
{
echo $link[$j];
if ($j  $count)
{
echo ' | ';
}

$j++;
}

}

?

The $Link-$Link-setLinkProperties() method is defined in

Link.class.php:

?php

class Link {

public function setLinkProperties($rows)
{
if (!empty($row['href']))
{
$properties['href'] = 'href=' . $row['href'] . ' ';
}

if (!empty($row['class']))
{
$properties['class'] = 'class=' . $row['class'] . ' ';
}

if (!empty($row['style']))
{
$properties['style'] = 'style=' . $row['style'] . ' ';
}

if (!empty($row['title']))
{
$properties['title'] = 'title=' . $row['title'] . ' ';
}

if (!empty($row['name']))
{
$properties['name'] = 'name=' . $row['name'] . ' ';
}

if (!empty($row['target']))
{
$properties['target'] = 'target=' . $row['target'] . ' ';
}

if (!empty($row['rel']))
{
$properties['rel'] = 'rel=' . $row['rel'] . ' ';
}

if (!empty($row['onclick']))
{
$properties['onclick'] = 'onclick=' . $row['onclick'] . ' ';
}

if (!empty($row['ondblclick']))
{
$properties['ondblclick'] = 'ondblclick=' . $row['ondblclick']
. ' ';
}

if (!empty($row['onmouseover']))
{
$properties['onmouseover'] = 'onmouseover=' .
$row['onmouseover'] . ' ';
}

if (!empty($row['onmouseout']))
{
$properties['onmouseout'] = 'onmouseout=' . $row['onmouseout']
. ' ';
}

return $properties;

} // END OF METHOD setLinkProperties
} // END OF CLASS

?

Also for reference, the method query() in my database class sets a value for
$affected_rows:

Database.class.php:

?php

class Database {

private $server   = ''; //database server
private $user = ''; //database login name
private $pass = ''; //database login password
private $database = ''; //database name
private $pre  = ''; //table prefix

###
//internal info
private $error = '';
private $errno = 0;

//number of rows affected by SQL query
public $affected_rows = 0;

...

?

This is the error I am receiving:

*Fatal error*: Call to undefined method Database::affected_rows() in *
/home/mwclans1/public_html/components/footerlinks.inc.php* on line *9*

Please help PHP gurus!!




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



Re: [PHP] Call to undefined method on class property!? - [CLOSED]

2010-01-07 Thread Allen McCabe
I caught that error, but the line number was referring to the assignment, it
didn't even get to the obvious error.

Why would  $total = $db-affected_rows, (assigning the value of
$affected_rows to $total) be interpreted as a method call?

I have since defined a num_rows() method (using mysql_num_rows()) and I have
gotten past this error, however I am still having a major problem with what
I'm trying to accomplish.

I'll post more later tonight when I get home from work... Thanks for your
help Thijs adn Darren

On Thu, Jan 7, 2010 at 3:49 AM, Thijs Lensselink d...@lenss.nl wrote:

 Allen McCabe wrote:

 I have a singleton database object in a global file at the top of my
 document. In most other locations I am able to access it just fine,
 however
 in my footer I want to loop through a properties list for links (I am
 saving
 links to a database, each with its own properties).

 Here is the code snippet that is giving me trouble:

 footerlinks.inc.php:

 ?php
$result = $db-query('SELECT * FROM `links` WHERE `category` =
 \'footer_navigation\';');
$total = $db-affected_rows;


 Here you use affected_rows as a class property to assign a value to a
 variable.



if ($total  0)
{
$Link = new Link();
$count = $db-affected_rows($result);


 Here you call affected_rows as a class method. And from looking at your
 Database class. affected_rows is a property not a method. So that explains
 the undefined method error.



 $i = 0;
while ($row = $db-fetch_array($result))
{
$properties = $Link-setLinkProperties($row);

$link[$i] = 'a ';
foreach ($properties as $prop)
{
$link[$i] .= $prop;
}
$link[$i] .= '';
$row['text'];
$link[$i] .= '/a';

$i++;
}

$j = 0;
while ($j  $link)
{
echo $link[$j];
if ($j  $count)
{
echo ' | ';
}

$j++;
}

}

?

 The $Link-$Link-setLinkProperties() method is defined in

 Link.class.php:

 ?php

 class Link {

public function setLinkProperties($rows)
{
if (!empty($row['href']))
{
$properties['href'] = 'href=' . $row['href'] . ' ';
}

if (!empty($row['class']))
{
$properties['class'] = 'class=' . $row['class'] . ' ';
}

if (!empty($row['style']))
{
$properties['style'] = 'style=' . $row['style'] . ' ';
}

if (!empty($row['title']))
{
$properties['title'] = 'title=' . $row['title'] . ' ';
}

if (!empty($row['name']))
{
$properties['name'] = 'name=' . $row['name'] . ' ';
}

if (!empty($row['target']))
{
$properties['target'] = 'target=' . $row['target'] . ' ';
}

if (!empty($row['rel']))
{
$properties['rel'] = 'rel=' . $row['rel'] . ' ';
}

if (!empty($row['onclick']))
{
$properties['onclick'] = 'onclick=' . $row['onclick'] . ' ';
}

if (!empty($row['ondblclick']))
{
$properties['ondblclick'] = 'ondblclick=' . $row['ondblclick']
 . ' ';
}

if (!empty($row['onmouseover']))
{
$properties['onmouseover'] = 'onmouseover=' .
 $row['onmouseover'] . ' ';
}

if (!empty($row['onmouseout']))
{
$properties['onmouseout'] = 'onmouseout=' . $row['onmouseout']
 . ' ';
}

return $properties;

} // END OF METHOD setLinkProperties
 } // END OF CLASS

 ?

 Also for reference, the method query() in my database class sets a value
 for
 $affected_rows:

 Database.class.php:

 ?php

 class Database {

private $server   = ''; //database server
private $user = ''; //database login name
private $pass = ''; //database login password
private $database = ''; //database name
private $pre  = ''; //table prefix

###
//internal info
private $error = '';
private $errno = 0;

//number of rows affected by SQL query
public $affected_rows = 0;

 ...

 ?

 This is the error I am receiving:

 *Fatal error*: Call to undefined method Database::affected_rows() in *
 /home/mwclans1/public_html/components/footerlinks.inc.php* on line *9*

 Please help PHP gurus!!