Morne
Morne

Reputation: 131

Php search not working 100%

I have the following search script,but its not working 100%. My goal is to have 4 textbox to search for records in a table called users and only after the search button is submitted the table must be display, but at the at the moment when the page loads the table header is being displayed secondly if search for a record it display all my records that is in my table and not the just the record that I'm searching for

Any suggestion will be very helpfull

<form id="form1" name="form1" method="post" action="View.php">
<label for="from">First Name</label>
<input name="first" type="text" id="first" size="10" value="<?php echo $_REQUEST["first"]; ?>" />
<label for="to">Last Name</label>
<input name="last" type="text" id="last" size="10" value="<?php echo $_REQUEST["last"]; ?>"/>
 <label>Email:</label>
<input type="text" name="email" id="string" value="<?php echo stripcslashes($_REQUEST["email"]); ?>" />
<label>Company</label>
<select name="company">
<option value="">--</option>

    <?php
        include("config.php");
        $sql = "SELECT * FROM users GROUP BY company ORDER BY company";
        $sql_result = mysql_query ($sql, $dbConn ) or die ('request "Could not execute SQL query" '.$sql);
        while ($row = mysql_fetch_assoc($sql_result)) {
            echo "<option value='".$row["company"]."'".($row["company"]==$_REQUEST["company"] ? " selected" : "").">".$row["company"]."</option>";
        }
    ?>
    </select>
    <input type="submit" name="button" id="button" value="Filter" />
      </label>
      <a href="View.php"> 
      reset</a>
    </form>
    <br /><br />
    <table width="700" border="1" cellspacing="0" cellpadding="4">
      <tr>
        <td width="90" bgcolor="#CCCCCC"><strong>First Name</strong></td>
        <td width="95" bgcolor="#CCCCCC"><strong>Last Name</strong></td>
        <td width="159" bgcolor="#CCCCCC"><strong>Company</strong></td>
        <td width="191" bgcolor="#CCCCCC"><strong>Email</strong></td>
        <td width="113" bgcolor="#CCCCCC"><strong>Contact Number</strong></td>
        <td width="113" bgcolor="#CCCCCC"><strong>Position</strong></td>
        <td width="113" bgcolor="#CCCCCC"><strong>How do you know the person</strong></td>
        <td width="113" bgcolor="#CCCCCC"><strong>Comment</strong></td>
      </tr>
    <?php

if($_POST["button"])
{

if ($_REQUEST["first"]<>'') {
    $search_first = " AND fname LIKE '%".mysql_real_escape_string($_REQUEST["fname"])."'";  
}
if ($_REQUEST["last"]<>'') {
    $search_last = " AND lname='".mysql_real_escape_string($_REQUEST["last"])."'";  
}
if ($_REQUEST["email"]<>'') {
    $search_email = " AND email='".mysql_real_escape_string($_REQUEST["email"])."'";    
}
if ($_REQUEST["company"]<>'') {
    $search_company = " AND company='".mysql_real_escape_string($_REQUEST["company"])."'";  
}
else {
    $sql = "SELECT * FROM users WHERE id>0".$search_first.$search_last.$search_email.$search_company;
}

$sql_result = mysql_query ($sql, $dbConn) or die ('request "Could not execute SQL query" '.$sql);
if (mysql_num_rows($sql_result)>0)
 {
    while ($row = mysql_fetch_assoc($sql_result)) 
    {
?>
  <tr>
    <td><?php echo $row["fname"]; ?></td>
    <td><?php echo $row["lname"]; ?></td>
    <td><?php echo $row["company"]; ?></td>
    <td><?php echo $row["email"]; ?></td>
    <td><?php echo $row["contactnumber"]; ?></td>
    <td><?php echo $row["position"]; ?></td>
    <td><?php echo $row["howdoyouknow"]; ?></td>
    <td><?php echo $row["comment"]; ?></td>
  </tr>
<?php
    }
} else {
?>
<tr><td colspan="5">No results found.</td>
<?php   
}
}
?>

</table>

Upvotes: 2

Views: 119

Answers (2)

Loko
Loko

Reputation: 6679

How would you expect that this:

else {
    $sql = "SELECT * FROM users WHERE id>0".$search_first.$search_last.$search_email.$search_company;
}

would even work when you declare the $search_company in the IF

Also I do think the else wouldn't even be needed in your case since the

$sql = "SELECT * FROM users WHERE id>0".$search_first.$search_last.$search_email.$search_company;

wouldn't work without executing the IF statements

Upvotes: 0

Krish R
Krish R

Reputation: 22711

Please remove else condition,

 else {
   $sql = "SELECT * FROM users WHERE id>0".$search_first.$search_last.$search_email.$search_company;
  }

use like below i.e without  else tag

 $sql = "SELECT * FROM users WHERE id>0".$search_first.$search_last.$search_email.$search_company;

Upvotes: 1

Related Questions