Reputation: 35
I have two pages, one for my search and one for search results. So far only my search bar with keywords will search. I can't get my finalist checkbox to work. Any help is appreciated-new at all of this. Thanks!
Search page:
<?php require_once($_SERVER['DOCUMENT_ROOT']."/includes/session.php");?>
<?php require($_SERVER['DOCUMENT_ROOT']."/includes/db_connection.php");?>
<?php require_once($_SERVER['DOCUMENT_ROOT']."/includes/functions.php");?>
<?php include("../includes/header-home.php"); ?>
<div class="container">
<div class="col=md-12">
<p><strong>Search:</strong></p>
<form name="form1" method="post" action="search_results.php">
<p><input name="search" type="text" size="40" maxlength="50"/> <input type="submit" name="submit" value="Search" /></p>
<p><strong>Type:</strong></p>
<form name="form1" method="post" action="search_results.php">
<p><input type="checkbox" name="keywords[]" value="1"> Finalist <input type="submit" name="submit" value="Search" /></p>
</div></div>
<?php include($_SERVER['DOCUMENT_ROOT']."/includes/footer.php");?>
Search Results page:
?php require_once($_SERVER['DOCUMENT_ROOT']."/includes/session.php");?>
<?php require_once($_SERVER['DOCUMENT_ROOT']."/includes/db_connection.php");?>
<?php require_once($_SERVER['DOCUMENT_ROOT']."/includes/functions.php");?>
<?php
if (!isset ($_POST['search'])) {
header("Location:admin.php");
}
$search_sqli="SELECT * FROM profiles WHERE first_name LIKE '%".$_POST ['search']."%' OR last_name LIKE '%".$_POST ['search']."%' OR first_name2 LIKE '%".$_POST ['search']."%' OR last_name2 LIKE '%".$_POST ['search']."%' OR last_name2 LIKE '%".$_POST ['search']."%' OR city LIKE '%".$_POST ['search']."%' OR agency LIKE '%".$_POST ['search']."%' OR subcomponent LIKE '%".$_POST ['search']."%' OR team_name LIKE '%".$_POST ['search']."%' OR achievement LIKE '%".$_POST ['search']."%' OR profile LIKE '%".$_POST ['search']."%'";
$search_query=mysqli_query($connection, $search_sqli);
if (mysqli_num_rows($search_query) !=0) {
$search_rs=mysqli_fetch_assoc($search_query);
}
else{
$sql="SELECT * FROM profiles WHERE finalist = '1'";
$search_query=mysqli_query($connection, $search_sqli);
if (mysqli_num_rows($search_query) !=0) {
$search_rs=mysqli_fetch_assoc($search_query);
}
}
?>
<?php include("../includes/header-home.php"); ?>
<div class="container">
<div class="col=md-12">
<p>Search:</p>
<form name="form1" method="post" action="search_results.php">
<input name="search" type="text" size="40" maxlength="50"/>
<input type="submit" name="submit" value="Search" />
</form>
<br />
<p><strong>Search Results:</strong></p>
<?php if (mysqli_num_rows($search_query) !=0) {
do {
?>
<p><ul>
<li><a href="view_profile.php?profile=<?php echo urlencode($search_rs["id"]); ?>"><?php echo $search_rs['first_name']; ?> <?php echo $search_rs['last_name']; ?> <?php echo $search_rs['first_name2']; ?> <?php echo $search_rs['last_name2']; ?></a></li></ul></p>
<?php } while ($search_rs=mysqli_fetch_assoc($search_query));
} else {
echo "No results found";
}
?>
<p> <a class="btn btn-default" href="search.php" role="button">Back to search</a></p>
</div></div>
<?php include($_SERVER['DOCUMENT_ROOT']."/includes/footer.php");?>
Upvotes: 0
Views: 37
Reputation:
You need to make one form to hold all input tags and only one submit input:
<p><strong>Search:</strong></p>
<form name="form1" method="post" action="search_results.php">
<p><input name="search" type="text" size="40" maxlength="50"/></p>
<p><strong>Type:</strong></p>
<p><input type="checkbox" name="keywords[]" value="1"> Finalist</p>
<p><input type="submit" name="submit" value="Search" /></p>
</form>
If you create different forms, only the data from the one that holds the submit button you use is sent with the request.
After that, you also need to combine the two queries into one, something like this:
$search_sqli="SELECT * FROM profiles WHERE
(first_name LIKE '%".$_POST ['search']."%'
OR last_name LIKE '%".$_POST ['search']."%'
OR first_name2 LIKE '%".$_POST ['search']."%'
OR last_name2 LIKE '%".$_POST ['search']."%'
OR last_name2 LIKE '%".$_POST ['search']."%'
OR city LIKE '%".$_POST ['search']."%'
OR agency LIKE '%".$_POST ['search']."%'
OR subcomponent LIKE '%".$_POST ['search']."%'
OR team_name LIKE '%".$_POST ['search']."%'
OR achievement LIKE '%".$_POST ['search']."%'
OR profile LIKE '%".$_POST ['search']."%')"
. (isset($_POST['keywords']) && in_array('1', $_POST['keywords']) ? " AND finalist='1'" : "");
This adds AND finalist='1'
to the end of the query if the checkbox was marked.
Upvotes: 1