Войти

Показать полную графическую версию : Ajax поиск


darksmoke
16-06-2009, 17:16
Добрый день.
Нашел вот интересный скрипт поиска на Ajax. Он работает, но не до конца. В нем есть синтаксические ошибки. Может кто понимает помогли б исправить?
И другим поколениям будет скрипт хороший в наследство.
Спасибо.

Поле ввода поискового выражения и <div id="search-result"> для отображения результатов поиска.
Добавьте подключение javascript function в тег <head>:

<script language="javascript" src="ajax_framework.js"></script>
...а следующий код разместите в секции <body>:

<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
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

// 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);

Coutty
17-06-2009, 15:22
Ну и? Какие ошибки выдаёт и в каком файле?
На первый взгляд - не хватает одинарной кавычки и точки с запятой после строки WHERE name LIKE "%' . $searchq .'%"

Igor_I
17-06-2009, 15:30
<?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/>';
}
?>

Автор скрипта даже не удосужился проверить

darksmoke
17-06-2009, 16:05
Ошибки в фале in-search.php:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\ukrosvita\www\in-search.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
while ($row = mysql_fetch_array($getName)) {
Шапку изменил, точнее апгредил примером Igor_I.

Sham
17-06-2009, 16:15
'Task' везде замените на 'Name'$total = mysql_num_rows(getTask); »тут параметр дб переменная ($getName) (сайчас некая константа)

darksmoke
17-06-2009, 18:48
'Task' везде замените на 'Name' »
Заменил, ошибки все равно есть.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\ukrosvita\www\in-search.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
while ($row = mysql_fetch_array($getName)) {

Sham
17-06-2009, 19:23
$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/>';
}
$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); »
не понятно зачем две последние строки, нужно оставить только две
$db_con=mysql_connect($db_host,$username,$password);
$connection_string=mysql_select_db($db_name, $db_con);

Igor_I
25-06-2009, 20:15
!!!
Писать надо самому, а не разбиратся в чужом ... , причём неграмотном коде.
И писать проверки. Через тот же самый echo, print_r, dump & etc.
А то получается, что запрос присваивается $getName_sql, а к базе отправляется mysql_query($getTask_sql)...




© OSzone.net 2001-2012