Jump to content

Simple search doesn't work, please help


dianneusa

Recommended Posts

I'm new and taking a class on building php-mySQL dB, and I can't get a simple search to work.

 

I see the form, but I get most of my php script above my form.

 

Screen looks like:

Results

 

"; //If they did not enter a search term we give them an error if ($find == "") { echo "

 

You forgot to enter a search term"; exit; } // Otherwise we connect to our Database mysql_connect("localhost", "root", "root") or die(mysql_error()); mysql_select_db("database_name") or die(mysql_error()); // 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 employee WHERE upper($field) LIKE'%$find%'"); //And we display the results while($result = mysql_fetch_array( $data )) { echo $result['first_name']; echo " "; echo $result['last_name']; echo "

"; echo $result['employee_id']; echo "

"; echo "

"; } //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

 

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

 

 

And the code from my search.php file is:

 

<?

//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;

}

 

// connect to Database

mysql_connect("localhost", "XXX", "XXXX") or die(mysql_error());

mysql_select_db("new_db") or die(mysql_error());

 

// filtering

$find = strtoupper($find);

$find = strip_tags($find);

$find = trim ($find);

 

//search for our search term, in the field the user specified

$data = mysql_query("SELECT * FROM employee WHERE upper($field) LIKE'%$find%'");

 

//display the results

while($result = mysql_fetch_array( $data ))

{

echo $result['first_name'];

echo " ";

echo $result['last_name'];

echo "<br>";

echo $result['employee_id'];

echo "<br>";

echo "<br>";

}

 

//This counts the number or results - and if there wasn't any a 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>";

}

 

//what they searched for

echo "<b>Searched For:</b> " .$find;

}

?>

Link to comment
Share on other sites

First of all, welcome to the forums.

 

If you are seeing some of your code in the browser, then you've missed a quotation mark or semicolon somehwere in your code, or you've got an issue with how your chosen text editor is formatting your code.

 

Might I also ask what text editor you are using to write your code?

Link to comment
Share on other sites

I'm using html-kit as my editor.

 

I figured out a couple of the quotes (changed these to single quotes) were causing problems. Now, however, it seems that the if statement at the top is causing problems.

 

Notice: Undefined variable: searching in C:\Program Files\Apache Group\Apache\htdocs\NLM\search_emp.php on line 9.

 

I guess I don't understand the hidden functions.

 

Can anyone help?

Here's my fixed code:

<?php #search_emp.php

 

$page_title = 'Search Employee';

include ('includes/header.html');

 

//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;

}

 

// Otherwise we connect to our Database

DEFINE ('DB_USER', 'root');

DEFINE ('DB_PASSWORD', 'root');

DEFINE ('DB_HOST', 'localhost');

DEFINE ('DB_NAME', 'new_nlm');

 

// Make the connnection.

$dbc = @mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) OR die ('Could not connect to MySQL: ' . mysql_error() );

 

// Select the database.

@mysql_select_db (DB_NAME) OR die ('Could not select the database: ' . mysql_error() );

 

 

// 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 employee WHERE upper($field) LIKE'%$find%'");

 

//And we display the results

while($result = mysql_fetch_array( $data ))

{

echo $result['first_name'];

echo " ";

echo $result['last_name'];

echo "<br>";

echo $result['employee_id'];

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)

 

mysql_close(); // Close the database connection.

 

{

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;

}

?>

 

 

 

 

<h2>Search</h2>

<form name="search" method="post" action="<?=$PHP_SELF?>">

Seach for: <input type="text" name="find" /> in

<Select NAME="field">

<Option VALUE="first_name">First Name</option>

<Option VALUE="last_name">Last Name</option>

</Select>

<input type="hidden" name="searching" value="yes" />

<input type="submit" name="search" value="Search" />

</form>

 

<?php

include ('./includes/footer.html');

?>

 

 

 

Link to comment
Share on other sites

i guess this code you got it from Internet. Am i right?

 

The hidden function? the input type="hidden" is to pass the value for next processing purpose and make it "invisible" to user when it is passed. This variable is needed in next page, that's why we need to pass it.

 

For your case,

 

<input type="hidden" name="searching" value="yes" />

 

This means once the user has clicked the Search button and pass the value "YES" to next page. Name and Value is different. Name is to identify whereas value is the value it pass. Do you understand? Haha.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.