Yet another 'Call to a member function on a non-object' problem

owetosteorCob

New Member
I have a html page that calls a php object to get some data back from the database. It works fine, but the script was getting unwieldy so I decided to break some of it out into a bunch of functions.So I have the following files:\[code\]// htdocs/map.php<?php include("config.php"); include("rmap.php"); $id = 1; $gamenumber = getGameNumber($id); echo $gamenumber;?>// htdocs/config.php<?php$_PATHS["base"] = dirname(dirname(__FILE__)) . "\\";$_PATHS["includes"] = $_PATHS["base"] . "includes\\";ini_set("include_path", "$_PATHS[includes]");ini_set("display_errors", "1");error_reporting(E_ALL); include("prepend.php");?> // includes/prepend.php<?phpinclude("session.php");?>// includes/session.php<?phpincludes("database.php");class Session { function Session() { }};$session = new Session;?>// includes/database.php<?phpinclude("constants.php");class Database { var $connection; function Database() { $this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error()); mysql_select_db(DB_NAME, $this->connection) or die(mysql_error()); } function query($query) { return mysql_query($query, $this->connection); }};/* Create database connection */$database = new Database;?>// includes/rmap.php<?phpfunction getGameNumber($id) { $query = "SELECT gamenumber FROM account_data WHERE usernum=$id"; $result = $database->query($query); // line 5 return mysql_result($result, 0);}?>\[/code\]And constants has a bunch of defines in it (DB_USER, etc).So, map.php includes config.php. That in turn includes prepend.php which includes session.php and that includes database.php. map.php also includes rmap.php which tries to use the \[code\]database\[/code\] object.The problem is I get a \[quote\] Fatal error: Call to a member function on a non-object in C:\Develop\map\includes\rmap.php on line 5\[/quote\]The usual cause of this is that the $database object isn't created/initialised, but if I add code to show which gets called when (via \[code\]echo "DB connection created";\[/code\] and \[code\]echo "using DB connection";\[/code\]) they are called (or at least displayed) in the correct order.If I add \[code\]include("database.php")\[/code\] to rmap.php I get errors about redefining the stuff in constants.php. If I use \[code\]require_once\[/code\] I get the same errors as before.What am I doing wrong here?
 
Top