2015-02-05 3 views
0

У меня возникли проблемы с включением выпадающего списка в моем поисковом запросе. У меня было выпадающее меню, прекрасно работающее в качестве переключателей, но когда я попытался изменить его на раскрывающийся список, запрос просто потянул все мои записи. Панель поиска и флажок все еще работают нормально.Раскрывающийся поисковый запрос с mySQL

Страница поиска:

<?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"/></p> 
    <p><strong>Type:</strong></p> 
    <input type="checkbox" name="type[]" value="1"> Medalist</p> 

<select name="medal"> 
<option value="1">Federal Employee of the Year</option> 
<option value="2">Career Achievement Medal</option> 
<option value="3">Call to Service Medal</option> 
<option value="4">Citizen Services Medal</option> 
<option value="5">Homeland Security and Law Enforcement Medal</option> 
<option value="6">Management Excellence Medal</option> 
<option value="7">National Security and International Affairs Medal</option> 
<option value="8">Science and Environment Medal</option> 
</select> 


    <p><input type="submit" name="submit" value="Search" /></p> 
</form> 
    </div></div> 
<?php include($_SERVER['DOCUMENT_ROOT']."/includes/footer.php");?> 

Поиск Результаты Страница:

<?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']."%')" 
. (isset($_POST['type']) && in_array('1', $_POST['type']) ? " AND medalist='1'" : "") 
. (isset($_POST['FYE']) && in_array('1', $_POST['FYE']) ? " AND medal='1'" : "") 
. (isset($_POST['CAM']) && in_array('2', $_POST['CAM']) ? " AND medal='2'" : "") 
. (isset($_POST['C2S']) && in_array('3', $_POST['C2S']) ? " AND medal='3'" : "") 
. (isset($_POST['CSM']) && in_array('4', $_POST['CSM']) ? " AND medal='4'" : "") 
. (isset($_POST['HSLE']) && in_array('5', $_POST['HSLE']) ? " AND medal='5'" : "") 
. (isset($_POST['MEM']) && in_array('6', $_POST['MEM']) ? " AND medal='6'" : "") 
. (isset($_POST['NSIA']) && in_array('7', $_POST['NSIA']) ? " AND medal='7'" : "") 
. (isset($_POST['SEM']) && in_array('8', $_POST['SEM']) ? " AND medal='8'" : ""); 


$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");?> 
+0

Вы не используете '$ _POST ['medal']' где угодно. Вы проверяете переменные, которые не были переданы через вашу форму (например, '$ _POST ['FYE']' и т. Д.) –

+0

Хм, извините, я пробовал это, и он не сработал. Я заменил бы то же, что и FYE на странице search_results? – surfingpig

ответ

0

Ваш выбор имеет имя medal, так что вы должны использовать это в PHP. Например:

. (isset($_POST['medal']) && $_POST['medal'] == '1') ? " AND medal='1'" : "") 
. (isset($_POST['medal']) && $_POST['medal'] == '2') ? " AND medal='2'" : "") 
. (isset($_POST['medal']) && $_POST['medal'] == '3') ? " AND medal='3'" : "") 
... etc 

Есть способы, которыми Вы могли бы упростить это, например:

. (isset($_POST['medal']) && (int)$_POST['medal'] > 0) ? " AND medal='".(int)$_POST['medal']."'" : "") 

который заменит все 8 строк выше.


Еще одно замечание, это выглядит как ваш FYE, CAM и т.д. переменные были сделаны в виде массива (напр. name='FYE[]'), в то время как ваша medal переменная не является. Убедитесь, что вы обращаете внимание на то, что используете, когда вы извлекаете их в PHP.

+0

Когда я заменяю все медалью, теперь я получаю эту ошибку: Warning: in_array() ожидает, что параметр 2 будет массивом, строка, указанная в *** в строке 24 – surfingpig

+0

Посмотрите на ответ еще раз; 'in_array' был заменен на' == '. Вы не должны получать это предупреждение с помощью приведенного выше кода. –

Смежные вопросы