Расширенный поиск PHP, MySQL

Я пытаюсь настроить расширенный поиск на своем сайте, однако, когда пользователь отправляет свой запрос, если есть пустое поле, он отправляется как NULL. Я не уверен, как исключить пустые параметры.

Ниже приведена форма для поиска:

<form>
<div class="form-group">
<div class="col-sm-2">
<label for="Author" class="control-label">Author</label>
</div>
<div class="col-sm-10">
<input type="text" class="form-control" id="author" placeholder="Author" name="author">
</div>
</div>
<div class="form-group has-feedback">
<div class="col-sm-2">
<label for="isbn" class="control-label">ISBN</label>
</div>
<div class="col-sm-10">
<input type="text" class="form-control" id="isbn" placeholder="ISBN" name="isbn">
</div>
</div>
<div class="form-group">
<div class="col-sm-2">
<label for="genre" class="control-label">Genre</label>
</div>
<div class="col-sm-10">
<input type="text" class="form-control" id="genre" placeholder="Genre" name="genre">
</div>
</div>
<div class="form-group">
<div class="col-sm-2">
<label for="tags" class="control-label">Tags</label>
</div>
<div class="col-sm-10">
<input type="text" class="form-control" id="tags" placeholder="Tags" name="tags">
</div>
</div>
<div class="form-group">
<div class="col-sm-2">
<label for="location" class="control-label">Location</label>
</div>
<div class="col-sm-10">
<input type="text" class="form-control" id="location" placeholder="Location" name="location">
</div>
</div>

<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" name="AdvancedSearch" value="Search" class="btn btn-block btn-lg btn-primary">Search</button>

</div>
</div>
</form>

Ниже приведен запрос:

$sql = "select *
from Book_info
where user_id=$u_id
AND title like '%$_REQUEST[title]%'
AND location like '%$_REQUEST[location]%'
AND author like '%$_REQUEST[author]%'
AND tags like '%$_REQUEST%»
И жанр как '% $ _ REQUEST [жанр]%'
ИЛИ ISBN = '$ _ REQUEST [isbn]' ";
[/ NOEDIT]

-1

Решение

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

Самое простое решение вашей проблемы было бы примерно так:

<?php

$sql="select * from Book_info where user_id=$u_id";

$title = $_REQUEST['title'];
$location = $_REQUEST['location'];

if($title != null) {
$sql .= " AND title like '%$title%'";
}

if($location != null) {
$sql .= " AND location like '%$location%'";
}

//and so on...

идея заключается в том, что вы проверяете, имеет ли значение значение NULL, а затем добавляете новое условие where к вашему запросу, если значение не NULL (или пусто, или любые другие предикаты, которые вы хотите добавить).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]