Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Ajax поиск (http://forum.oszone.net/showthread.php?t=142824)

darksmoke 16-06-2009 17:16 1144855

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


Coutty 17-06-2009 15:22 1145113

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

Igor_I 17-06-2009 15:30 1145118

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

?>

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

darksmoke 17-06-2009 16:05 1145164

Ошибки в фале 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.

Sham 17-06-2009 16:15 1145176

'Task' везде замените на 'Name'
Цитата:

Цитата darksmoke
$total = mysql_num_rows(getTask); »

тут параметр дб переменная ($getName) (сайчас некая константа)

darksmoke 17-06-2009 18:48 1145303

Цитата:

Цитата 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)) { 


Sham 17-06-2009 19:23 1145322

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


Igor_I 25-06-2009 20:15 1151725

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


Время: 16:46.

Время: 16:46.
© OSzone.net 2001-