Функция поиска с использованием ключевого слова и нескольких выпадающих списков

#php #html #mysql #search #filter

#php #HTML #mysql #Поиск #Фильтр

Вопрос:

Я пытаюсь создать функцию поиска с использованием ключевого слова и выпадающего списка на своем веб-сайте, я искал в Google, но, похоже, я не могу найти тот же код. Я попытался объединить найденный код и пришел к этому. да, это работает, только если вы выберете по одному варианту в каждом из 3 выпадающих списков. И моя проблема в том, что это не работает, если я выбираю только один вариант только в одном выпадающем списке и приступаю к поиску.

 <!DOCTYPE html>
<html>
<head>
    <title>Activity</title>
    <link href="css/bootstrap.css" rel="stylesheet" type="text/css" media="screen">


    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="css/bootstrap-responsive.css" rel="stylesheet">
</head>
<body>
    <?php
        include('dbcon.php');
    ?>

    <div class="container">
        <div class="row-fluid">
            <div class="span12">
                        <br />
                        <br />
                <div class="row-fluid">
                    <div class="span6">
                        <div class="span6">
                            <form method="POST" action="search.php" class="navbar-search pull-left">
                                <input type="text" name="search" class="search-query" placeholder="Search">
<select name="author" class="input">
    <option value="all">Select Author</option>
    <option value="bbb">bbb</option>
    <option value="rrr">rrr</option>
    <option value="ooo">ooo</option>                                                    
    <option value="hhh">hhh</option>
    <option value="KingKoy Max">KingKoy Max</option>
</select>
<select name="category" class="input">
    <option value="all">Select Category</option>
    <option value="ccc">ccc</option>
    <option value="ttt">ttt</option>
    <option value="iii">iii</option>
    <option value="ggg">ggg</option>
    <option value="Romance">Romance</option>    
</select>
<select name="year_publication" class="input">
    <option value="all">Select Year</option>
    <option value="2014">2014</option>
    <option value="2015">2015</option>
    <option value="2016">2016</option>
</select>
        <input type="submit" value="Search Now">
                            </form>
                        </div>
                        <br />
                        <br />
                        <br />
                        <table class="table table-bordered  table-hover table-striped" style="width:800px;"> 
                            <thead>
                                <tr>
                                    <th>Title</th>
                                    <th>Author</th>
                                    <th>Category</th>
                                    <th>Year Publication</th>
                                    <th>Place Publication</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php
                                    $query=mysql_query("select * from book")or die(mysql_error());
                                    while($row=mysql_fetch_array($query)){
                                    ?>

                                    <tr>
                                        <td><?php echo $row['title']; ?></td>
                                        <td><?php echo $row['author']; ?></td>
                                        <td><?php echo $row['category']; ?></td>
                                        <td><?php echo $row['year_publication']; ?></td>
                                        <td><?php echo $row['place_publication']; ?></td>
                                    </tr>
                                    <?php
                                    }
                                ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>

</body>
  

вот php-код:

     <?php
        include('dbcon.php');
    ?>
                                <?php



                                    $search=$_POST['search'];
                                    $author=$_POST['author'];
                                    $category=$_POST['category'];
                                    $year_publication=$_POST['year_publication'];
                                    $query=mysql_query("select * from book where 
                                    title like '%$search%' AND author like '%$author%' AND category like '%$category%' AND year_publication like '%$year_publication%' ")or die(mysql_error());


                                    while($row=mysql_fetch_array($query)){
                                    ?>

                                    <tr>
                                        <td><?php echo $row['title']; ?></td>
                                        <td><?php echo $row['author']; ?></td>
                                        <td><?php echo $row['category']; ?></td>
                                        <td><?php echo $row['year_publication']; ?></td>
                                        <td><?php echo $row['place_publication']; ?></td>

                                    </tr>
                                    <?php
                                    }
                                    ?>
  

Ответ №1:

Вы можете проверить, выбран ли выпадающий список или нет, и в случае пустоты установить пустую переменную. Попробуйте заменить

 $search=$_POST['search'];
$author=$_POST['author'];
$category=$_POST['category'];
$year_publication=$_POST['year_publication'];
  

Автор:

  if(empty($_POST['search']))
   $search = '';
 else
   $search=$_POST['search'];
 if(empty($_POST['author']))
   $author = '';
 else
   $author=$_POST['author'];
 if(empty($_POST['category']))
   $category = '';
 else
   $category=$_POST['category'];
 if(empty($_POST['year_publication']))
   $year_publication = '';
 else
   $year_publication=$_POST['year_publication'];
  

Комментарии:

1. Я попытался заменить его, но все равно не работает .. в любом случае, спасибо