I have a simple form which echoes data from db. when name typed. It works fine when name is typed and submit pressed.
But I see that even when no name is selected or, when existing results on screen, pressing submit brings up ALL names from table not just row containing $name.
How can I stop this happening and have only row with $name displayed?
The code I am using is (have tried with $_POST with same result)
<?php
if (isset($_GET['name'])) $name = $_GET ['name'];
else $name = "(Not entered)";
echo <<<_END
<html>
<head>
<title>Allaunch</title>
</head>
<body>
<form method="get" action="allaunch.php">
Enter Ship Name
<input type="text" name="name" size="25" maxlength ="35"/>
<input type="image" name="submit"/>
</form>
<font color="blue" size="4px"/>You searched for: $name<br/>
</body>
</html>
_END;
require_once 'login.php';
$db_server = mysql_connect('localhost', 'root','');
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error()); mysql_select_db('shipdb')
or die("Unable to select database: " . mysql_error());
$query = "SELECT * FROM allnames WHERE name1 LIKE '$name%' OR name2 LIKE '$name%' OR name3 LIKE '$name%' OR name4 LIKE '$name%' OR name5 LIKE '$name%'";
$result = mysql_query($query);
if (!$result) die ("Database access failed: " . mysql_error());
$rows=mysql_num_rows($result);
if(mysql_num_rows($result)==0)
{
echo "No data found for your request. Try a different query.";
exit;}
for ($j=0; $j < $rows ; ++$j)
{
$row =mysql_fetch_row($result);
$subquery = "SELECT * FROM launch WHERE ID = '$row[0]'";
$subresult = mysql_query($subquery);
if (!$subresult) die ("Database access failed: " . mysql_error());
$subrow = mysql_fetch_row($subresult);
// there follow tables all of which are excuted correctly.