Jump to content

Trouble with mysql_num_rows


SF23103

Recommended Posts

Hello,

 

I created a page that gets some information from a MySQL database and displays it on a page.  The information is selected based on the ID of the row in the database.  So, if ...script.php?id=55 it will display the information from submission ID #55.  All of that works great, but I am having difficulty sending it to an error page if someone manually enters an ID number that does not exist.  For instance script.php?id=7777

 

Right now I am using 

if (mysql_num_rows($result)==0) { die (include "/path/to/public_html/errors/no_classes_selected.php"); } 

Unfortunately it ALWAYS includes that error page, as it seems $result is always equal to 0 even if the ID number is a real entry.  For instance, if I take that line out, and an ID that exists is entered, it displays the data fine.  If I leave that code in and I use the same ID, it displays the error page.

 

Am I doing this right?

<?php 
// Get required login info
include "/path/to/login_info.php";

$db = new mysqli('localhost', $username, $password, $database); // Connect to DB using required login info
if($db->connect_errno > 0){
    die('Unable to connect to database [' . $db->connect_error . ']');
}

unset($username);// put these variables back to null
unset($password);// put these variables back to null
unset($database);// put these variables back to null

date_default_timezone_set('America/Los_Angeles'); // set default time zone PST

// ************GET ID FROM URL***********************
$id = (int)$_GET['id']; // this gets the id from the url
if($id != '' && $id > 0) {  // this checks to make sure that the ID is an integer
// **************************************************

$sql = <<<SQL
SELECT ft_form_8.*,ft_form_7.*
FROM ft_form_7
LEFT JOIN ft_form_8 ON ft_form_8.Instructor=ft_form_7.Instructor
WHERE ft_form_7.submission_id=$id
SQL;

if(!$result = $db->query($sql)){ // if there is an error in running the query, show error message.
    die('There was an error running the query [' . $db->error . ']');
}


if (mysql_num_rows($result)==0) { die (include "/path/to/public_html/apps/errors/no_classes_selected.php"); }

while($row = $result->fetch_assoc()){
	// Get start date information
	$start_date = $row['class_start_date']; // Get event_start_date for conversion and call it $start_date
	$start_date_formatted = date("l M d, Y", strtotime($start_date)); // Convert start_date 
	$end_date = $row['class_end_date']; // Get event_end_date for conversion and call it $start_date
	$end_date_formatted = date("M d, Y", strtotime($end_date)); // Convert start_date
	
	// Do above for start and end date two for multiple day classes (ex. jan 1-2 and feb 2-3)
	$start_date_2 = $row['class_start_date_2'];
	$start_date_2_formatted = date("l M d, Y", strtotime($start_date_2)); 
	$end_date_2 = $row['class_end_date_2'];
	$end_date_2_formatted = date("M d, Y", strtotime($end_date_2));
	
	// Get time information.
	$start_time = $row['class_start_time']; // Get event_start_time for conversion and call it $start_time
	$start_time_formatted = date("h:i A", strtotime($start_time)); // Convert start_time 
	$end_time = $row['class_end_time']; // Get event_end_time for conversion and call it $end_time
	$end_time_formatted = date("h:i A", strtotime($end_time)); // Convert end_time 
	
		// echo information...
	    echo "<h2>" , $row['class_name'],"</h2>" ; // echo event name

	echo "<p><strong>",$start_date_formatted; // echo the start date
	if (empty($end_date) or $end_date = $start_date) { echo '<br/>'; } else { echo " - ","", $end_date_formatted , "<br />"; } // echo end date
	
	if (empty($start_date_2)) {echo '';} else { echo $start_date_2_formatted; } // echo the start date
	if (empty($end_date_2) or $end_date_2 = $start_date_2) { echo ''; } else { echo " - ","", $end_date_2_formatted , "<br />"; } // echo end date
	
		if (empty($start_time)) { echo ''; } else { echo $start_time; } // echo start time
		if (empty($end_time)) { echo ')'; } else { echo " - ", $end_time; } // echo end time
		
	// if there is no start time, echo nothing. (otherwise it seems to echo 4pm). If it does contain a time, echo the time.
	echo "</strong>";
	
	$chef_full_name = $row['Instructor'];
	$chef_id = $row['submission_id'];
	$full_bio = $row['full_bio'];
	echo "<div class=\"showbio\">" , "<div class=\"underline\">" , $chef_full_name , "</div>";
	echo "<div class=\"bio\" style=\"display: none;\">";
	echo $full_bio , "</div></div><br />";
	echo $row['class_description'], "<br />";
	echo "<strong>" , $row['type'], " - Cost: $",$row['cost'] , " - #" , $row['course_number'] , " - <a href=\"registration.php\" target=\"_blank\"> (Register Online)</a> </strong><br />" , "</p>"; // echo class type and cost
}

$db->close();
$result->free();

}

else {
   die (include "/path/to/public_html/apps/errors/no_id.php"); //display error if ID is not an integer
}


?>
Link to comment
https://forums.phpfreaks.com/topic/297448-trouble-with-mysql_num_rows/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.