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(); } } ?> 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() 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. 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
Archived
This topic is now archived and is closed to further replies.