Re: [PHP] Call to undefined method on class property!?
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!?
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]
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!!