Search Box along with Search results

rohit 22 Apr, 2008
Can someone please show me an example code for a Search Box on the same page as search results. I am trying to do a simple search form that presents a search box and a Submit button. When I click on Submit I do see my search results. I do wish to retain the search box as well in my search results. I copied the html to my 'on submit' but the submit does not do anything.

My HTML:
<h2>Search</h2> 
Seach for: <input type='text' name='find' /> in 
<Select NAME='field'>
<Option VALUE='Fname'>First Name</option>
<Option VALUE='Lname'>Last Name</option>
</Select>
<input type='hidden' name='searching' value='yes' />
<input type='submit' name='search' value='Search' />
On Submit:
<? 
$searching = $_POST['searching'];
$find = $_POST['find'];
//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 
mysql_connect('localhost', 'root', '') or die(mysql_error()); 
mysql_select_db('joomla15') 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 jos_chronoforms_1 WHERE Fname like '%$find%''); 

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

//This counts the number or results - and if there wasn't any it gives them a 
$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; 
} 
?>
GreyHead 22 Apr, 2008
Hi rohit,

I think the logic for this is to re-display the Form HTML but including the search results.

If you create a dummy field 'message' in your form then you can check if it has contents to display. Form HTML:
<h2>Search</h2>
Seach for: <input type='text' name='find' /> in
<Select NAME='field'>
<Option VALUE='Fname'>First Name</option>
<Option VALUE='Lname'>Last Name</option>
</Select>
<input type='hidden' name='searching' value='yes' />
<input type='submit' name='search' value='Search' />
<input type='hidden' name='message' value='<?php echo $_POST'message']; ?>' />
<?php
if ( $_POST['message'] ) (
  echo $_POST['message'];
}
?>
and your OnSubmit code is like this
<?php
$searching = $_POST['searching'];
$find = $_POST['find'];
$message = '';
//This is only displayed if they have submitted the form
if ( $searching == 'yes' ) {
$message .= '<h2>Results</h2><p>';

//If they did not enter a search term we give them an error
if ($find == ''«») {
$message .= '<p>You forgot to enter a search term';
showform($_POST);
}

// Otherwise we connect to our Database
mysql_connect('localhost', 'root', ''«») or die(mysql_error());
mysql_select_db('joomla15'«») 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 jos_chronoforms_1 WHERE Fname like '%$find%''«»);

//And we display the results
while($result = mysql_fetch_array( $data ))
{
$message .= $result['Fname'].' '.$result['Lname'].'<br /><br />';
}

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

//And we remind them what they searched for
$message .= '<b>Searched For:</b> $find';
}
$_POST['message'] = $message;
showform($_POST);
?>
No tested, but this should work. There was a similar form posted here by Sofia? I think.

Bob
rohit 22 Apr, 2008
Thanks a ton, this worked.
This topic is locked and no more replies can be posted.

VPS & Email Hosting 20% discount
hostinger