RedBoffin Posted May 14, 2007 Share Posted May 14, 2007 Hello :-) I am trying to get only one PackageImages object to persist across page refreshes ( a singleton ). I think the problem lies with my (mis)understanding Sessions in PHP. Can anyone help clarify? <?php require_once("../../classes/database/databaseConnector.php"); session_start; class PackageImages { var $databaseConnector; var $locationId; var $brandId; var $packageId; function PackageImages() { $this->databaseConnector = & new DatabaseConnector(); } function renderLocationOptions() { $sqlLocations = $this->databaseConnector->selectQuery("SELECT locationId,locationName FROM Locations"); if ( mysql_num_rows( $sqlLocations ) > 0 ) { while( $location = mysql_fetch_array( $sqlLocations ) ) { echo('<option value="'.$location['locationId'].'">'.$location['locationName'].'</option>'); } } else { echo('PackageImages->renderLocationOptions() $sqlLocations Error : No records found!'); } } function renderBrandOptions() { $sqlBrands = $this->databaseConnector->selectQuery("SELECT id, brandName FROM Brands"); if ( mysql_num_rows( $sqlBrands ) > 0 ) { while( $brand = mysql_fetch_array( $sqlBrands ) ) { if ( $brand['brandName'] != 'www.escapeltd.co.uk' ) { echo('<option value="'.$brand['id'].'">'.$brand['brandName'].'</option>'); } } } else { echo('PackageImages->renderBrandOptions() $sqlBrands Error : No records found!'); } } function renderPackageOptions() { $locationId = $this->locationId; $brandId = $this->brandId; $sqlPackages = $this->databaseConnector->selectQuery("SELECT Packages.id, Packages.packageTitle FROM Packages WHERE Packages.id IN (SELECT PackageLocations.packageId FROM PackageLocations JOIN PackageBrands ON PackageLocations.packageId = PackageBrands.packageId WHERE PackageLocations.locationId = '$locationId' AND PackageBrands.brandId = '$brandId') ORDER BY Packages.packageTitle ASC"); if ( mysql_num_rows( $sqlPackages ) > 0 ) { while( $package = mysql_fetch_array( $sqlPackages ) ) { echo( '<option value="'.$package['packageId'].'">'.$package['packageTitle'].'</option>'); } } else { echo('PackageImages->renderPackageOptions $sqlPackages error : No records found!<br/>'); } } function catchPostData() { if ( $_POST['formTag'] == 'packagesFilter' ) { $this->locationId = $_POST['location']; $this->brandId = $_POST['brand']; } $this->packageId = $_POST['packageId']; } } if ( !isset( $_SESSION['packageImages'] ) ) { $packageImages = & new PackageImages(); $_SESSION['packageImages'] = $packageImages; } else { $packageImages = $_SESSION['packageImages']; } $packageImages->catchPostData(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Manage Package Images</title> </head> <body> <?php echo('LocationId : '.$packageImages->locationId.'<br/>'); echo('BrandId : '.$packageImages->brandId.'<br/>'); echo('Package Id : '.$packageImages->packageId.'<br/>'); ?> <a href="../index.php">Escape Limited Management</a> <fieldset> <legend>Packages Filter</legend> <form name="packagesFilter" action="<?php echo( $_SERVER['PHP_SELF'] ); ?>" method="post"> <input type="hidden" name="formTag" value="packagesFilter"/> <label for="location">Location</label> <select name="location" size="1"> <?php $packageImages->renderLocationOptions(); ?> </select> <label for="brand">Brand</label> <select name="brand" size="1"> <?php $packageImages->renderBrandOptions(); ?> </select> <input type="submit" value="Submit"/> </form> </fieldset> <fieldset> <legend>Package Selector</legend> <form name="packageSelector" action="<?php echo( $_SERVER['PHP_SELF'] ); ?>" method="post"> <label for="package">Package</label> <select name="package" size="1"> <?php $packageImages->renderPackageOptions(); ?> </select> <input type="submit" value="Submit"/> </form> </fieldset> </body> </html> Link to comment https://forums.phpfreaks.com/topic/51308-session-problem/ Share on other sites More sharing options...
clown[NOR] Posted May 14, 2007 Share Posted May 14, 2007 try using this session_start(); Link to comment https://forums.phpfreaks.com/topic/51308-session-problem/#findComment-252695 Share on other sites More sharing options...
RedBoffin Posted May 14, 2007 Author Share Posted May 14, 2007 Thank you - I am a d***head Now I have a problem with my database access Link to comment https://forums.phpfreaks.com/topic/51308-session-problem/#findComment-252726 Share on other sites More sharing options...
mmarif4u Posted May 14, 2007 Share Posted May 14, 2007 where is ur database access code. Link to comment https://forums.phpfreaks.com/topic/51308-session-problem/#findComment-252732 Share on other sites More sharing options...
RedBoffin Posted May 14, 2007 Author Share Posted May 14, 2007 It is in require_once("../../classes/database/databaseConnector.php"); <?php session_start(); class DatabaseConnector { var $host; var $username; var $password; var $database; var $lastInsertId; function DatabaseConnector() { // echo('DatabaseConnector->constructor()<br/>'); $this->host = "localhost"; $this->username = "username"; $this->password = "password"; $this->database = "database"; $databaseConnection = mysql_connect( $this->host, $this->username, $this->password ) or die ('Unable to connect to database because: '.mysql_error() ); mysql_select_db( $this->database, $databaseConnection ) or die('Unable to select database because '.mysql_error() ); } function getLastInsertId() { return $this->lastInsertId; } // Returns a mysql result function insertQuery( $query ) { // echo('DatabaseConnector->insertQuery()<br/>'); $sql = mysql_query( $query ) or die( mysql_error() ); $this->lastInsertId = mysql_insert_id(); return $sql; } // Returns a mysql result function selectQuery( $query ) { // echo('DatabaseConnector->selectQuery()<br/>'); $sql = mysql_query( $query ) or die( mysql_error() ); return $sql; } // Returns a mysql result function updateQuery( $query ) { // echo('DatabaseConnector->selectQuery()<br/>'); $sql = mysql_query( $query ) or die( mysql_error() ); return $sql; } // Performs a delete query function deleteQuery( $query ) { // echo('DatabaseConnector->deleteQuery()<br/>'); mysql_query( $query ) or die( mysql_error() ); } } ?> Link to comment https://forums.phpfreaks.com/topic/51308-session-problem/#findComment-252748 Share on other sites More sharing options...
clown[NOR] Posted May 14, 2007 Share Posted May 14, 2007 what line does it say you have an error? Link to comment https://forums.phpfreaks.com/topic/51308-session-problem/#findComment-252782 Share on other sites More sharing options...
RedBoffin Posted May 15, 2007 Author Share Posted May 15, 2007 Hello :-) Sorry for the delay - I had to sleep! The error message is as follows: <b>Warning</b>: mysql_query() [<a href='function.mysql-query'>function.mysql-query</a>]: Access denied for user 'c20esca'@'localhost' (using password: NO) in <b>/home/c20esca/public_html/classes/database/databaseConnector.php</b> on line <b>49</b><br /> <br /> <b>Warning</b>: mysql_query() [<a href='function.mysql-query'>function.mysql-query</a>]: A link to the server could not be established in <b>/home/c20esca/public_html/classes/database/databaseConnector.php</b> on line <b>49</b><br /> Access denied for user 'c20esca'@'localhost' (using password: NO) Thanks for your help so far. Link to comment https://forums.phpfreaks.com/topic/51308-session-problem/#findComment-253416 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.