I’m trying to sort a PHP generated form by price. I get an error message ‘Notice: Undefined index: PriceDesc/Asc’. I understand the error message but can’t find any relevant info through searching so thought I’d ask. I’m new to PHP and so far this is the code I have:
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--[if IE]>
<link href="blueprint/ie.css" type="text/css" rel="stylesheet">
<![endif]-->
<link href="blueprint/screen.css" type="text/css" rel="stylesheet">
<link href="style.css" type="text/css" rel="stylesheet">
<title>Enygma Peripherals</title>
</head>
<body>
<div id="wrapper" class="container">
<div id="top" class="span-24">
<div id="logo" class="span-5">
<a href="index.php"><img src="images/logo.png" alt="Enygma"></a>
</div>
<div id="nav" class="span-11 last">
<ul>
<li><a href="index.php">HOME</a></li>
<li><a href="products.php">PRODUCTS</a></li>
<li><a href="about.php">ABOUT</a></li>
<li><a href="contact.php">CONTACT</a></li>
</ul>
</div>
</div>
<div id="mainContent" class="span-24">
<h2>Products</h2>
<div id="left" class="span-8">
</div>
<div id="right" class="span-15 last">
<form method="get" name="sort">
<select name="sort" id="sort">
<option value="">--Select--</option>
<option value='PriceAsc'>Price: Highest First</option>
<option value='PriceDesc'>Price: Lowest First</option>
</select>
<input type="submit" value="Sort"/>
</form>
<?php
include("connection.php");
$data = mysql_query("SELECT * FROM products");
IF ($_GET['PriceAsc']){
$orderby=" ORDER BY price ASC";
}
IF ($_GET['PriceDesc']){
$orderby=" ORDER BY price DESC";
}
Print "<table border cellpadding=10>";
while($info = mysql_fetch_array( $data ))
{
Print "<tr>";
Print "<th>Product Number:</th> <td>".$info['product_no'] . "</td> ";
Print "<th>Product:</th> <td>".$info['product_name'] . "</td> ";
Print "<th>Type:</th> <td>".$info['type'] . "</td> ";
Print "<th>Price:</th> <td>".$info['price'] . "</td> ";
Print "<th>Availability:</th> <td>".$info['availability'] . " </td></tr>";
}
Print "</table>";
?>
</div>
</div>
<div id="footer" class="span-24">
<a href="acknowledgements.html">Acknowledgments</a>
</div>
</div>
For the record, I’m using PhpMyAdmin for my backend d/b and the initial tabled data works fine.
Replace
with
Note the changes, you need to use empty() to check if form submitted and check the value of it. And do the query once Order by appended to SQL.