Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: автозаполнение JavaScript + PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
imediasun
Отправлено: 02 Января, 2013 - 11:57:55
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


Помог: 2 раз(а)

[+][+][+][+][+]


Есть скрипт который реализует автозаполнение при вводе начальных букв.
JavaScript ссылается на файл autocomplete.php, который получает из поля keywords базы данных ключевых слов, и выводит ключевые слова в поисковой форме, проблема в том что какие бы буквы не вводились выводятся все ключевые слова а не те начальные буквы которых введены в поле http://exportgrain[dot]org/tiptop[dot]na[dot][dot][dot]utocomplete[dot]html

autocomplete.html
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. <script type="text/javascript">
  3. $(document).ready(function(){
  4. // --- Автозаполнение ---
  5.  
  6. function liFormat (row, i, num) {
  7.         var result = row[0];
  8.         return result;
  9. }
  10. function selectItem(li) {
  11.         if( li == null ) var sValue = 'А ничего не выбрано!';
  12.         if( !!li.extra ) var sValue = li.extra[2];
  13.         else var sValue = li.selectValue;
  14.         alert("Выбрана запись с ID: " + sValue);
  15. }
  16.  
  17. // --- Автозаполнение2 ---
  18. $("#example2").autocomplete("autocomplete.php", {
  19.         delay:10,
  20.         minChars:2,
  21.         matchSubset:1,
  22.         autoFill:true,
  23.         matchContains:1,
  24.         cacheLength:10,
  25.         selectFirst:true,
  26.         formatItem:liFormat,
  27.         maxItemsToShow:10,
  28.         onItemSelect:selectItem
  29. });
  30. // --- Автозаполнение2 ---
  31. });
  32. </script>
  33.  

autocomplete.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. header('Content-Type: text/html; charset=utf-8');
  4. include_once ('../blocks/bd.php');
  5. if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
  6.   if($_GET['q']){
  7.     $sql_key = "SELECT keywords FROM advert ORDER BY keywords";
  8.         $query_key=mysql_query($sql_key)or die (mysql_error());
  9.          while($row_key=mysql_fetch_assoc($query_key)){
  10.          print $row_key['keywords'].PHP_EOL;
  11.          }
  12.   }
  13. }
  14. ?>

(Отредактировано автором: 02 Января, 2013 - 12:00:17)

 
 Top
KingStar
Отправлено: 02 Января, 2013 - 12:10:50
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




ну вот убейте меня, не понимаю зачем плодить одни и те же темы ??? Нахмурился я тебе уже отвечал на твой вопрос - тебе нужно применить условие WHERE в запросе

PHP:
скопировать код в буфер обмена
  1. $sql_key = " SELECT `keywords` FROM `advert` WHERE `keywords` LIKE '".mysql_real_escape_string($_GET['q'])."%' ";

(Отредактировано автором: 02 Января, 2013 - 12:19:43)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
LIME
Отправлено: 02 Января, 2013 - 12:18:47
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




$sql_key = " SELECT `keywords` FROM `advert` WHERE `keywords` LIKE '".mysql_real_escape_string($_GET['q'])."%'";
 
 Top
KingStar
Отправлено: 02 Января, 2013 - 12:20:09
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




LIME да, пропустил Радость
(Добавление)
подправил


-----
То что программа работает, не означает что она написана правильно!
 
 Top
imediasun
Отправлено: 02 Января, 2013 - 12:21:13
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


Помог: 2 раз(а)

[+][+][+][+][+]


LIME пишет:
$sql_key = " SELECT `keywords` FROM `advert` WHERE `keywords` LIKE '".mysql_real_escape_string($_GET['q'])."%'";

Этот вариант верный, в этой теме она изложена правильно, теперь скрипт автозаполнения рабочий
(Добавление)
а как зделать чтобы сначала скрипт смотрел на одно поле базы данных и выводил в первую очередь имеющиеся соответствия от туда(keywords1) потом на другое поле(keywords2) а в последнюю очередь уже на имеющееся поле (keywords) и еще установить приоретет по определенному полю например (id)

(Отредактировано автором: 02 Января, 2013 - 12:28:47)

 
 Top
KingStar
Отправлено: 02 Января, 2013 - 12:28:43
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




PHP:
скопировать код в буфер обмена
  1. $sql_key = " SELECT `keywords` FROM `advert`
  2. WHERE
  3.   `keywords` LIKE '".mysql_real_escape_string($_GET['q'])."%' OR
  4.   `keywords1` LIKE '".mysql_real_escape_string($_GET['q'])."%' OR
  5.   `keywords2` LIKE '".mysql_real_escape_string($_GET['q'])."%'
  6. ORDER BY
  7.   `keywords`, `keywords1`, `keywords2`, `id` ";

(Отредактировано автором: 02 Января, 2013 - 12:29:40)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
imediasun
Отправлено: 02 Января, 2013 - 13:04:00
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


Помог: 2 раз(а)

[+][+][+][+][+]


PHP:
скопировать код в буфер обмена
  1.  
  2.                $sql_key = " SELECT * FROM `advert`
  3.    WHERE
  4.      `category` LIKE '".mysql_real_escape_string($_GET['q'])."%' OR
  5.      `subcategory` LIKE '".mysql_real_escape_string($_GET['q'])."%' OR
  6.      `keywords` LIKE '".mysql_real_escape_string($_GET['q'])."%'
  7.    ORDER BY
  8.      `category`, `subcategory`, `keywords`, `rate` ";
  9.         $query_key=mysql_query($sql_key)or die (mysql_error());
  10.          while($row_key=mysql_fetch_assoc($query_key)){
  11.          print $row_key['category'].PHP_EOL;
  12.          print $row_key['subcategory'].PHP_EOL;
  13.          print $row_key['keywords'].PHP_EOL;
  14.          }
  15.  
Выводит и['category']и['subcategory']и['keywords'], из тех строк где хоть какое то значение начинается с введенных букв , а как сделать чтобы выводило из трех этих полей в указанной приоритетности только те поля в которых начальные буквы совпадают с введенными а не все три позиции, хотя запрос построен грамматно и правильно - то что надо

(Отредактировано автором: 02 Января, 2013 - 13:05:26)

 
 Top
KingStar
Отправлено: 02 Января, 2013 - 13:16:12
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




PHP:
скопировать код в буфер обмена
  1. $sql_key = " SELECT * FROM `advert`
  2.  
  3. WHERE
  4.     `category` LIKE '".mysql_real_escape_string($_GET['q'])."%' OR
  5.  
  6.     `category` NOT LIKE '".mysql_real_escape_string($_GET['q'])."%' AND
  7.     `subcategory` LIKE '".mysql_real_escape_string($_GET['q'])."%' OR
  8.  
  9.  
  10.     `category` NOT LIKE '".mysql_real_escape_string($_GET['q'])."%' AND
  11.     `subcategory`NOT LIKE '".mysql_real_escape_string($_GET['q'])."%' AND
  12.     `keywords` LIKE '".mysql_real_escape_string($_GET['q'])."%'
  13.  
  14. ORDER BY
  15.     `category`, `subcategory`, `keywords`, `rate` ";


если я тебя конечно правильно понял Хм

(Отредактировано автором: 02 Января, 2013 - 13:20:12)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
imediasun
Отправлено: 02 Января, 2013 - 13:23:14
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


Помог: 2 раз(а)

[+][+][+][+][+]


KingStar пишет:
PHP:
скопировать код в буфер обмена
  1. $sql_key = " SELECT * FROM `advert`
  2.  
  3. WHERE
  4.     `category` LIKE '".mysql_real_escape_string($_GET['q'])."%' OR
  5.  
  6.     `category` NOT LIKE '".mysql_real_escape_string($_GET['q'])."%'
  7.     `subcategory` LIKE '".mysql_real_escape_string($_GET['q'])."%' OR
  8.  
  9.  
  10.     `category` NOT LIKE '".mysql_real_escape_string($_GET['q'])."%'
  11.     `subcategory`NOT LIKE '".mysql_real_escape_string($_GET['q'])."%' OR
  12.     `keywords` LIKE '".mysql_real_escape_string($_GET['q'])."%'
  13.  
  14. ORDER BY
  15.     `category`, `subcategory`, `keywords`, `rate` ";


если я тебя конечно правильно понял Хм

Ошибка : u have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`subcategory` LIKE 'ви%' OR
Я постараюсь еще раз объяснить: в базе следующие записи `category`- дизайнерские услуги `subcategory`- веб дизайн, `keywords`- изготовление сайтов, при написании первых букв например (ве)- от слов веб дизайн выводятся все 3 поля а надо только веб дизайн чтобы выводилось но запрос чтобы строился среди всех трех полей

(Отредактировано автором: 02 Января, 2013 - 13:24:39)

 
 Top
KingStar
Отправлено: 02 Января, 2013 - 13:24:18
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




я исправил предыдущий мой пост, проверь...


-----
То что программа работает, не означает что она написана правильно!
 
 Top
imediasun
Отправлено: 02 Января, 2013 - 13:29:19
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


Помог: 2 раз(а)

[+][+][+][+][+]


KingStar пишет:
я исправил предыдущий мой пост, проверь...

http://exportgrain[dot]org/tiptop[dot]na[dot][dot][dot]utocomplete[dot]html
попробуй написать что то (веб дизайн)(дизайнерские услуги)(изготовление сайтов) должно это и выводиться а не все три позиции сразу
 
 Top
KingStar
Отправлено: 02 Января, 2013 - 14:01:33
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




PHP:
скопировать код в буфер обмена
  1. $sql_key = " SELECT * FROM `advert`
  2.  
  3. WHERE
  4.    `category` LIKE '".mysql_real_escape_string($_GET['q'])."%' OR
  5.  
  6.    IFNULL(`category` LIKE '".mysql_real_escape_string($_GET['q'])."%') AND
  7.    `subcategory` LIKE '".mysql_real_escape_string($_GET['q'])."%' OR
  8.  
  9.    IFNULL(`category` LIKE '".mysql_real_escape_string($_GET['q'])."%') AND
  10.    IFNULL(`subcategory`LIKE '".mysql_real_escape_string($_GET['q'])."%') AND
  11.    `keywords` LIKE '".mysql_real_escape_string($_GET['q'])."%'
  12.  
  13. ORDER BY
  14.    `category`, `subcategory`, `keywords`, `rate` ";


ну а такой вариант???

(Отредактировано автором: 02 Января, 2013 - 14:07:29)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
imediasun
Отправлено: 02 Января, 2013 - 14:29:35
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


Помог: 2 раз(а)

[+][+][+][+][+]


incorrect parameter count in the call to native function 'IFNULL'
ответ такой.
В запросе же выбирается все поля строки где есть определенные условия, а после запроса выводятся три поля может каким то условием при выводе print пользоваться
PHP:
скопировать код в буфер обмена
  1.  
  2. print $row_key['category'].PHP_EOL;
  3. print $row_key['subcategory'].PHP_EOL;
  4. print $row_key['keywords'].PHP_EOL;
  5.  

(Отредактировано автором: 02 Января, 2013 - 17:31:59)

 
 Top
imediasun
Отправлено: 02 Января, 2013 - 17:32:28
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 605
Дата рег-ции: Авг. 2012  


Помог: 2 раз(а)

[+][+][+][+][+]


не работает
 
 Top
KingStar
Отправлено: 02 Января, 2013 - 21:26:32
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




делаешь раз

PHP:
скопировать код в буфер обмена
  1. $sql_key = " SELECT * FROM `advert`
  2.  
  3. WHERE
  4.   `category` LIKE '".mysql_real_escape_string($_GET['q'])."%' OR
  5.  
  6.   `subcategory` LIKE '".mysql_real_escape_string($_GET['q'])."%' OR
  7.  
  8.   `keywords` LIKE '".mysql_real_escape_string($_GET['q'])."%'
  9.  
  10. ORDER BY
  11.   `category`, `subcategory`, `keywords`, `rate` ";


делаешь два

PHP:
скопировать код в буфер обмена
  1. if(!empty($row_key['category']))
  2. {
  3.    echo $row_key['category'].PHP_EOL;
  4. }
  5. elseif(empty($row_key['category']))
  6. {
  7.    echo $row_key['subcategory'].PHP_EOL;
  8. }
  9. elseif(empty($row_key['subcategory']))
  10. {
  11.    echo $row_key['keywords'].PHP_EOL;
  12. }


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB