nonemox
Новичок
Дата регистрации:
28.03.2013 09:24:56
Сообщений: 6
Возникла проблема. Есть код и есть один input, код работает результаты выдает, мне его необходимо немного расширить и сделать возможность поиска в диапазоне.
Код формы:
<form method="post">
<input type="search" name="query" placeholder="Поиск" /><input type="search" name="query1" placeholder="от" /><input type="search" name="query2" placeholder="до" />
<a href="#" class="button" onClick="document.getElementById('form_1').submit()">Поиск</a>
</form>
Сам обработчик:
/////////////// Определяем используемые функции //////////////////
/* Открываем соединение с базой данных*/
function connectDB (){
// Определяем константы для соединения с базой данных //Пытаемся соединится с базой данных $dbconn = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Ошибка соединения с базой данных! " . mysql_error());
//и выбрать таблицу
mysql_select_db(DB_NAME);
// Устанавливаем кодировку
mysql_query('SET NAMES utf8');
//Возвращаем дескриптор соединения
return $dbconn;
}
/*Закрываем соединение с базой данных*/
function closeDB($dbconn){
mysql_close($dbconn);
}
/*Обработка поискового запроса*/
function search ($query) {
$text = '';
// Проводим фильтрацию данных
$query = trim($query); // Обрезаем пробелы и спецсимволы
$query = strip_tags($query); // Удаляем HTML и PHP теги
$query = mysql_real_escape_string($query); // Экранируем специальные символы
//Поисковый запрос не пустой?
if (!empty($query)){
if (strlen($query) < 4) {
$text = '<p>короткий поисковый запрос.</p>';
}elseif (strlen($query) > 128) {
$text = '<p>длинный поисковый запрос.</p>';
} else {
//Формируем строку поискового запроса
$sql = "SELECT `id`, `title`, `opisanie_1`,`opisanie_2`,`bedroom`,`bathroom`, `area`, `price`
FROM `sale` WHERE `opisanie_1` LIKE '%$query%' OR `opisanie_2` LIKE '%$query%' OR `bedroom` LIKE '%$query%'
OR `bathroom` LIKE '%$query%' OR `area` LIKE '%$query%' OR `price` LIKE '%$query%'
OR `title` LIKE '%$query%'";
// и выполняем его
$result = mysql_query($sql);
//Определим количество найденных совпадений
$num = mysql_num_rows($result);
//Если число совпадений (строк результата запроса) больше 0
if ( $num > 0) {
//Получаем ассоциативный массив
$row = mysql_fetch_assoc($result);
//и начинаем формировать строку поисковой выдачи
$text .= '<p>По вашему запросу <strong>'.$query.'</strong>';
$text .= ' найдено '.$num.' совпадений</p>' ;
do {
//Продолжаем формировать строку поисковой выдачи
$text .= '<p><a href="real-estate.php?id='.$row['id'].'">';
$text .= $row['title'].'</a></p>';
$text .= '<p>'.$row['tinyDescription'].'</p>';
// Делаем это пока у нас есть результаты
} while ($row = mysql_fetch_assoc($result));
} else {
// Найти совпадение не удалось
$text = '<p>По вашему запросу ничего не найдено.</p>';
}
}
}else {
$text = '<p>Задан пустой поисковый запрос.</p>';
}
//Возвращаем сформированную строку поисковой выдачи
return $text;
}
///////////// Сам скрипт обработчик ///////////////
if (isset ($_POST['query']) && !empty($_POST['query'])){
// Открываем соединение с базой данных
$connect = connectDB();
$search_result = search ($_POST['query']);
echo $search_result;
// Закрываем соединение с базой данных
closeDB ($connect);
}
Попробовал добавить поиск в диапазоне от и до
код:
/*Закрываем соединение с базой данных*/
function closeDB($dbconn){
mysql_close($dbconn);
}
$_POST['button']{
$query1=$_POST['query1'];
$query2=$_POST['query2'];
/*Обработка поискового запроса*/
function search ('$query' && '$query1' && '$query2') {
$text = '';
// Проводим фильтрацию данных
$query = trim($query);
$query2 = trim($query2);
$query1 = trim($query1); // Обрезаем пробелы и спецсимволы
$query = strip_tags($query); // Удаляем HTML и PHP теги
$query2 = strip_tags($query2);
$query1 = strip_tags($query1);
$query = mysql_real_escape_string($query); // Экранируем специальные символы
$query1 = mysql_real_escape_string($query1);
$query2 = mysql_real_escape_string($query2);
//Поисковый запрос не пустой?
if (!empty($query) && !empty($query1) && !empty($query2) ){
if (strlen($query) < 4) {
$text = '<p>короткий поисковый запрос.</p>';
}elseif (strlen($query) > 128) {
$text = '<p>длинный поисковый запрос.</p>';
} else {
//Формируем строку поискового запроса
$sql = "SELECT `id`, `title`, `opisanie_1`,`opisanie_2`,`bedroom`,`bathroom`, `area`, `price`
FROM `sale` WHERE `opisanie_1` LIKE '%$query%' OR `opisanie_2` LIKE '%$query%' OR `bedroom` LIKE '%$query%'
OR `bathroom` LIKE '%$query%' OR `area` LIKE '%$query%' OR `title` LIKE '%$query%' OR
(`price`>='$query1' and `price`<='$query2')";
// и выполняем его
$result = mysql_query($sql)or die(mysql_error());
//Определим колличество найденных совпадений
$num = mysql_num_rows($result);
//Если число совпадений (строк результата запроса) больше 0
if ( $num > 0) {
//Получаем ассоциативный массив
$row = mysql_fetch_assoc($result);
//и начинаем формировать строку поисковой выдачи
$text .= '<p>По вашему запросу <strong>'.$query.'.'.$query1.'.'.$query2.'</strong>';
$text .= ' найдено '.$num.' совпадений</p>' ;
do {
//Продолжаем формировать строку поисковой выдачи
$text .= '<p><a href="real-estate.php?id='.$row['id'].'">';
$text .= $row['title'].'</a></p>';
$text .= '<p>'.$row['opisanie_1'].'</p>';
// Делаем это пока у нас есть результаты
} while ($row = mysql_fetch_assoc($result));
} else {
// Найти совпадение не удалось
$text = '<p>По вашему запросу ничего не найдено.</p>';
}
}
}else {
$text = '<p>Задан пустой поисковый запрос.</p>';
}
//Возвращаем сформированную строку поисковой выдачи
return $text;
}
///////////// Сам скрипт обработчик ///////////////
if (isset ($_POST['query']) && !empty($_POST['query']) && isset ($_POST['query1']) && !empty($_POST['query1']) &&isset ($_POST['query2']) && !empty($_POST['query2'])){
// Открываем соединение с базой данных
$connect = connectDB();
$search_result = search ($_POST['query'] or $_POST['query1'] or $_POST['query2']);
echo $search_result;
}
}
Не работает и потерял я ';'. Как можно сделать поиск какое то слово и цена в диапазоне указанном