AdRock Posted July 29, 2008 Share Posted July 29, 2008 I am having a problem getting the number of fow in my database using my database class and I can't see why it's doing it. What i want to do is count the numbe of rows in my query and if it's greater than 1, call a function but it's not calling the function becuase it says there is only 1 row even though there are others. This is the code i am using which tells me i only have 1 record <?php /** * The home page of the website */ // The title of the page $title = "The latest news at JackGodfry.org.uk"; // Include the init file to connect to database, // regsiter the sessions and include the functions include("php/init.php"); // Include the header html require_once("header.inc.php"); ?> <h1>Latest News</h1> <div id="news"> <?php $path = "news"; $webpage = basename($path); $db = & new MySQL($host,$dbUser,$dbPass,$dbName); $sql="Select count(*) from news"; // Perform a query getting back a MySQLResult object $result = $db->query($sql); //get the number of rows in datatbase $test = $result->size(); $numrows = $result->fetchrow(); if(isset($_GET['pagenum'])?$page = $_GET['pagenum']:$page = 1); $entries_per_page = 1; $total_pages = ceil($numrows[0]/$entries_per_page); $offset = (($page * $entries_per_page) - $entries_per_page); $sql="SELECT id,title,content, DATE_FORMAT(time, '%W %D %M %Y') as date, photo, alternate FROM news WHERE archived='n' ORDER BY id DESC LIMIT $offset,$entries_per_page"; // Perform a query getting back a MySQLResult object $result = $db->query($sql); $err = $result->size(); if($err == 0) { echo ("No matches met your criteria."); } else { // Iterate through the results while ($row = $result->fetch()) { $title = htmlentities(strtoupper($row['title'])); $content = htmlentities($row['content']); if (!$row['photo']){ echo "<h3>".$title."</h3><p class='italic'>Date added: ".$row['date']."</p><p>".nl2br($content)."</p><br />\n"; } else { echo "<h3>".$title."</h3><p class='italic'>Date added: ".$row['date']."</p><p><img src='images/large/".$row['photo']."' alt='".$row['alternate']."' class='imgright' />".nl2br($content)."</p><br />\n"; } } //or after the results if($test > 1) pagination_five($total_pages,$page); echo $test; //echoes out 1 } echo "</div>"; require_once("footer.inc.php"); ?> and here is the database class which i got from a book <?php /** * @package SPLIB * @version $Id: MySQL.php,v 1.1 2003/12/12 08:06:07 kevin Exp $ */ /** * MySQL Database Connection Class * @access public * @package SPLIB */ class MySQL { /** * MySQL server hostname * @access private * @var string */ var $host; /** * MySQL username * @access private * @var string */ var $dbUser; /** * MySQL user's password * @access private * @var string */ var $dbPass; /** * Name of database to use * @access private * @var string */ var $dbName; /** * MySQL Resource link identifier stored here * @access private * @var string */ var $dbConn; /** * Stores error messages for connection errors * @access private * @var string */ var $connectError; /** * MySQL constructor * @param string host (MySQL server hostname) * @param string dbUser (MySQL User Name) * @param string dbPass (MySQL User Password) * @param string dbName (Database to select) * @access public */ function MySQL ($host,$dbUser,$dbPass,$dbName) { $this->host=$host; $this->dbUser=$dbUser; $this->dbPass=$dbPass; $this->dbName=$dbName; $this->connectToDb(); } /** * Establishes connection to MySQL and selects a database * @return void * @access private */ function connectToDb () { // Make connection to MySQL server if (!$this->dbConn = @mysql_connect($this->host, $this->dbUser, $this->dbPass)) { trigger_error('Could not connect to server'); $this->connectError=true; // Select database } else if ( !@mysql_select_db($this->dbName,$this->dbConn) ) { trigger_error('Could not select database'); $this->connectError=true; } } /** * Checks for MySQL errors * @return boolean * @access public */ function isError () { if ( $this->connectError ) return true; $error=mysql_error ($this->dbConn); if ( empty ($error) ) return false; else return true; } /** * Returns an instance of MySQLResult to fetch rows with * @param $sql string the database query to run * @return MySQLResult * @access public */ function & query($sql) { if (!$queryResource=mysql_query($sql,$this->dbConn)) trigger_error ('Query failed: '.mysql_error($this->dbConn). ' SQL: '.$sql); return new MySQLResult($this,$queryResource); } } /** * MySQLResult Data Fetching Class * @access public * @package SPLIB */ class MySQLResult { /** * Instance of MySQL providing database connection * @access private * @var MySQL */ var $mysql; /** * Query resource * @access private * @var resource */ var $query; /** * MySQLResult constructor * @param object mysql (instance of MySQL class) * @param resource query (MySQL query resource) * @access public */ function MySQLResult(& $mysql,$query) { $this->mysql=& $mysql; $this->query=$query; } /** * Fetches a row from the result * @return array * @access public */ function fetch () { if ( $row=mysql_fetch_array($this->query,MYSQL_ASSOC) ) { return $row; } else if ( $this->size() > 0 ) { mysql_data_seek($this->query,0); return false; } else { return false; } } /** * Returns the number of rows selected * @return int * @access public */ function size () { return mysql_num_rows($this->query); } function fetchrow () { return mysql_fetch_row($this->query); } /** * Returns the ID of the last row inserted * @return int * @access public */ function insertID () { return mysql_insert_id($this->mysql->dbConn); } /** * Checks for MySQL errors * @return boolean * @access public */ function isError () { return $this->mysql->isError(); } } ?> Quote Link to comment https://forums.phpfreaks.com/topic/117115-mysql_num_rows-not-working-correctly/ Share on other sites More sharing options...
ignace Posted July 29, 2008 Share Posted July 29, 2008 use fetch() instead of fetchRow() Quote Link to comment https://forums.phpfreaks.com/topic/117115-mysql_num_rows-not-working-correctly/#findComment-602432 Share on other sites More sharing options...
PFMaBiSmAd Posted July 29, 2008 Share Posted July 29, 2008 $sql="Select count(*) from news";Your query returns a result set with a single row in it that contains a count of the number of records in the table. Quote Link to comment https://forums.phpfreaks.com/topic/117115-mysql_num_rows-not-working-correctly/#findComment-602580 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.