smada
smada

Reputation: 237

PHP / MySQL String Search Query

I've got a database setup with "customer" information. I've got a PHP form to search for the strings, first name (fname), last name (lname), and phone number (phone). For some reason, I'm not even getting the helpers displayed that the functions are working? I've re-read over this code over and over and can't seem to figure out where I'm missing something.

<form name="search" method="post" action="<?=$PHP_SELF?>">
 Seach for: <input type="text" name="find" /> in 
 <Select NAME="field">
 <Option VALUE="fname">First Name</option>
 <Option VALUE="lname">Last Name</option>
 <Option VALUE="phone">Phone #</option>
 </Select>
 <input type="hidden" name="searching" value="yes" />
 <input type="submit" name="search" value="Search" />
 </form>
 <? 
 //This is only displayed if they have submitted the form 
 if ($searching =="yes") 
 { 
 echo "<h2>Results</h2><p>"; 

 //If they did not enter a search term we give them an error 
 if ($find == "") 
 { 
 echo "<p>You forgot to enter a search term"; 
 exit; 
 } 

 // We preform a bit of filtering 
 $find = strtoupper($find); 
 $find = strip_tags($find); 
 $find = trim ($find); 

 //Now we search for our search term, in the field the user specified 
 $data = mysql_query("SELECT * FROM customer WHERE upper($field) LIKE'%$find%'"); 

 //And we display the results 
 while($result = mysql_fetch_array( $data )) 
 { 
 echo $result['fname']; 
 echo " "; 
 echo $result['lname']; 
 echo "<br>"; 
 echo $result['phone']; 
 echo "<br>"; 
 echo "<br>"; 
 } 

 //This counts the number or results - and if there wasn't any it gives them a little message explaining that 
 $anymatches=mysql_num_rows($data); 
 if ($anymatches == 0) 
 { 
 echo "Sorry, but we can not find an entry to match your query<br><br>"; 
 } 

 //And we remind them what they searched for 
 echo "<b>Searched For:</b> " .$find; 
 } 
 ?>

Upvotes: 0

Views: 1890

Answers (2)

fonta7
fonta7

Reputation: 64

there are some errors in your script, i'll try to help you:

<? --> <?php

then your form passes parameters by method POST, so you have to check searching like this:

if ($_POST['searching'] =="yes") 

and you have the same error here:

if ($_POST['find'] == "") 

and here:

 $find = strtoupper($_POST['find']); 

Bye!

Upvotes: 2

Abubakkar
Abubakkar

Reputation: 15664

You should first create a query string like the one shown below and then use this string inside mysql_query Hope this works.

str = "SELECT * FROM customer WHERE upper(".$field.") LIKE'%".$find%."'";

Upvotes: 0

Related Questions