-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
- -
Ajax поиск
(
http://forum.oszone.net/showthread.php?t=142824)
Ajax поиск
Добрый день.
Нашел вот интересный скрипт поиска на Ajax. Он работает, но не до конца. В нем есть синтаксические ошибки. Может кто понимает помогли б исправить?
И другим поколениям будет скрипт хороший в наследство.
Спасибо.
Поле ввода поискового выражения и <div id="search-result"> для отображения результатов поиска.
Добавьте подключение javascript function в тег <head>:
HTML код:
<script language="javascript" src="ajax_framework.js"></script>
...а следующий код разместите в секции <body>:
HTML код:
<h2>Ajax Search Engine</h2>
<form id="searchForm" name="searchForm" method="post" action="javascript:insertTask();">
<div class="searchInput">
<input name="searchq" type="text" id="searchq" size="30" onkeyup="javascript:searchNameq()"/>
<input type="button" name="submitSearch" id="submitSearch" value="Search" onclick="javascript:searchNameq()"/>
</div>
</form>
<h3>Search Results</h3>
<div id="msg">Type something into the input field</div>
<div id="search-result"></div>
ajax_framework.js:
Код:
/* -------------------------- */
/* XMLHTTPRequest Enable */
/* -------------------------- */
function createObject() {
var request_type;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
request_type = new ActiveXObject("Microsoft.XMLHTTP");
} else {
request_type = new XMLHttpRequest();
}
return request_type;
}
var http = createObject();
/* -------------------------- */
/* SEARCH */
/* -------------------------- */
function searchNameq() {
searchq = encodeURI(document.getElementById('searchq').value);
document.getElementById('msg').style.display = "block";
document.getElementById('msg').innerHTML = "Searching for <strong>" + searchq+"";
// Set te random number to add to URL request
nocache = Math.random();
http.open('get', 'in-search.php?name='+searchq+'&nocache = '+nocache);
http.onreadystatechange = searchNameqReply;
http.send(null);
}
function searchNameqReply() {
if(http.readyState == 4){
var response = http.responseText;
document.getElementById('search-result').innerHTML = response;
}
}
Поиск в базе in-search.php:
PHP код:
<?php
include('config.php');
$getforfilter = array
(
'searchq' => array (
"filter" => FILTER_VALIDATE_REGEXP,
"options" => array(
"regexp" => '/^[a-zA-Zа-яА-Я0-9._ -]+$/')
),
);
$filterget = filter_input_array (INPUT_GET, $getforfilter);
$getName_sql = 'SELECT * FROM USER
WHERE name LIKE "%' . $filterget['searchq'].'%"';
$getName = mysql_query($getTask_sql);
$total = mysql_num_rows(getTask);
while ($row = mysql_fetch_array($getName)) {
echo $row.name . '<br/>';
}
?>
config.php
PHP код:
// Connection's Parameters
$db_host="localhost";
$db_name="database_name";
$username="database_username";
$password="database_password";
$db_con=mysql_connect($db_host,$username,$password);
$connection_string=mysql_select_db($db_name);
|
Ну и? Какие ошибки выдаёт и в каком файле?
На первый взгляд - не хватает одинарной кавычки и точки с запятой после строки WHERE name LIKE "%' . $searchq .'%"
|
PHP код:
<?php
include('config.php');
#$searchq = $_GET['name'];
$getforfilter = array
(
'searchq' => array (
"filter" => FILTER_VALIDATE_REGEXP,
"options" => array(
"regexp" => '/^[a-zA-Zа-яА-Я0-9._ -]+$/')
),
);
$filterget = filter_input_array (INPUT_GET, $getforfilter);
$getName_sql = 'SELECT * FROM USER
WHERE name LIKE "%' . $filterget['searchq'].'%"';
$getName = mysql_query($getTask_sql);
$total = mysql_num_rows(getTask);
while ($row = mysql_fetch_array($getName)) {
echo $row.name . '<br/>';
}
?>
Автор скрипта даже не удосужился проверить
|
Ошибки в фале in-search.php:
Код:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\ukrosvita\www\in-search.php
PHP код:
$total = mysql_num_rows(getTask);
и
Код:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\ukrosvita\www\in-search.php
PHP код:
while ($row = mysql_fetch_array($getName)) {
Шапку изменил, точнее апгредил примером Igor_I.
|
'Task' везде замените на 'Name'
Цитата:
Цитата darksmoke
$total = mysql_num_rows(getTask); »
|
тут параметр дб переменная ($getName) (сайчас некая константа)
|
Цитата:
Цитата Sham
'Task' везде замените на 'Name' »
|
Заменил, ошибки все равно есть.
Код:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\ukrosvita\www\in-search.php
PHP код:
$total = mysql_num_rows(getName);
Код:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\ukrosvita\www\in-search.php
PHP код:
while ($row = mysql_fetch_array($getName)) {
|
PHP код:
$getName_sql = 'SELECT * FROM USER
WHERE name LIKE "%' . $filterget['searchq'].'%"';
$getName = mysql_query($getName_sql, $db_con);
$total = mysql_num_rows($getName);
while ($row = mysql_fetch_array($getName)) {
echo $row.name . '<br/>';
}
Цитата:
Цитата darksmoke
$db_con=mysql_connect($db_host,$username,$password);
$connection_string=mysql_select_db($db_name);
// Connection
mysql_connect($db_host,$username,$password);
mysql_select_db($db_name); »
|
не понятно зачем две последние строки, нужно оставить только две
PHP код:
$db_con=mysql_connect($db_host,$username,$password);
$connection_string=mysql_select_db($db_name, $db_con);
|
!!!
Писать надо самому, а не разбиратся в чужом ... , причём неграмотном коде.
И писать проверки. Через тот же самый echo, print_r, dump & etc.
А то получается, что запрос присваивается $getName_sql, а к базе отправляется mysql_query($getTask_sql)...
|
Время: 16:46.
© OSzone.net 2001-