accembler
Новичок
Здравствуйте, уважаемые, подскажите, пожалуйста, в чем может быть проблема.
есть
форма поиска+js
и search.php
проблема заключается в том, что при любом запросе, ответов sql не дает никаких, тоесть "по вашему запросу ничего не найдено". Заранее благодарен.
есть
форма поиска+js
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" >
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
</head>
<script type='text/javascript'>
//Функция возвращает объект XMLHttpRequest
function getXmlHttpRequest(){
if (window.XMLHttpRequest){
try {
return new XMLHttpRequest();
}
catch (e){}
}
else if (window.ActiveXObject){
try {
return new ActiveXObject('Msxml2.XMLHTTP');
} catch (e){}
try {
return new ActiveXObject('Microsoft.XMLHTTP');
}
catch (e){}
}
return null;
}
// Очистка списка
function clearList()
{
var ulResult = document.getElementById("ulResult");
while (ulResult.hasChildNodes())
ulResult.removeChild(ulResult.lastChild);
}
// Добавление нового элемента списка
function addListItem(text){
if (text.length == 0) return;
var ulResult = document.getElementById("ulResult");
var li = document.createElement("li");
ulResult.appendChild(li);
var liText = document.createTextNode(text);
li.appendChild(liText);
}
//Поиск совпадения
function searchNum(){
// Параметры поиска
var title = document.getElementById("txtTitle").value;
// Формирование строки поиска
var searchString = "query=" + encodeURIComponent(title);
// Запрос к серверу
var req = getXmlHttpRequest();
req.onreadystatechange = function(){
if (req.readyState != 4) return;
var responseText = new String(req.responseText);
var num = responseText.split('\n');
clearList();
for (var i = 0; i < num.length; i++)
addListItem(num[i]);
}
// Метод POST
req.open("POST", "/search.php", true);
// Установка заголовков
req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
req.setRequestHeader("Content-Length", searchString.length);
// Отправка данных
req.send(searchString);
}
</script>
<body>
<h3 style="text-align:center;">Поиск по сайту AJAX + PHP + MySQL</h3><br />
<div style="border:2px solid blue; padding: 50px 0;">
<form onsubmit="return false"> <fieldset style="width: 300px; margin: 0 auto; ">
<legend>Поиск по сайту AJAX + PHP + MySQL</legend>
<div><label for="txtTitle">Поисковый запрос</label> <input onkeyup="searchNum()" id="txtTitle" type="text" name="title"/>
</div> <button onclick="searchNum()">Поиск</button> </fieldset>
</form>
<ul id="ulResult" style = "list-style: none; text-align: center"></ul>
</div>
</body>
</html>
PHP:
<?php
header ("Content-type:text/html; charset=utf-8");
/////////////// Определяем используемые функции //////////////////
/* Открываем соединение с базой данных*/
function connectDB (){
// Определяем константы для соединения с базой данных
define('DB_HOST', 'idb3.majordomo.ru');
define('DB_USER', 'u140449');
define('DB_PASS', 'nevaelectronsql');
define('DB_NAME', 'b140449_catalog');
//Пытаемся соединится с базой данных
$dbconn = mysql_connect(DB_HOST, DB_USER, DB_PASS)
or die("Ошибка соединения с базой данных! " . mysql_error());
//и выбрать таблицу
mysql_select_db(DB_NAME);
// Устанавливаем кодировку
mysql_query('SET NAMES utf-8');
//Возвращаем дескриптор соединения
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 = 'короткий поисковый запрос';
}elseif (strlen($query) > 128) {
$text = 'длинный поисковый запрос';
} else {
//Формируем строку поискового запроса
$sql = "use b140449_catalog;
SELECT ID, NAME, PRODUCER, PRICE_1, PRICE_2, PRICE_3, PRICE_4
FROM component
WHERE NAME LIKE '%$$query%' OR PRODUCER LIKE '%$query%'";
// и выполняем его
$result = mysql_query($sql);
$end_result = '';
if(mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_object($result)){
$end_result .= $row->title. "\n";
}
$text = $end_result;
} else {
$text = 'По вашему запросу ничего не найдено';
}
}
}else {
$text = 'Задан пустой поисковый запрос.';
}
//Возвращаем сформированную строку поисковой выдачи
return $text;
}
///////////// Сам скрипт обработчик ///////////////
if (isset ($_POST['query']) && !empty($_POST['query'])){
// Открываем соединение с базой данных
$connect = connectDB();
$search_result = search ($_POST['query']);
echo $search_result;
// Закрываем соединение с базой данных
closeDB ($connect);
}
?>