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 :: Автоподстановка из php

 PHP.SU

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


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

> Описание: Нужна помощь
Russer
Отправлено: 24 Июля, 2015 - 13:37:39
Post Id


Гость


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


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




Хочу сделать автоподстановку в форму , чтобы по первым буквам давался список возможных слов. Начал с простого, почитал в интернете , если задавать значения через массив {Var массив=["переменная1" , "переменная2" , "переменная3"];} то все работает , далее решил усложнить и попробовать вытаскивать данные с php скрипта , чтобы в дальнейшем брать данные из mysql , но вот тут возникла проблема , а именно в каком формате я должен отдавать данные в autocomplite ? Делаю как описано в примере , но результатов нет

Клиентская часть:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5.   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  6.   <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
  7.   <script src="jquery-ui.min.js"></script>
  8.    <script>
  9.  $("#tags").autocomplete({source: "search.php", minLength:1});
  10.   </script>
  11.   <link type="text/css" href="jquery-ui.min.css" rel="stylesheet" />
  12.   <style>
  13.     body{font:normal 9pt Arial,sans-serif;}
  14.   </style>
  15. </head>
  16. <body>
  17.   <label for="tags">Автоподстановка </label>  <input id="tags" />
  18.  
  19.  
  20. </body>
  21. </html>
  22.  


Серверная часть:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $array = array('Переменная1', 'Переменная2', 'Переменная3');
  4.  
  5. $string =implode(",",$array);
  6. $result ="[".$string."]";
  7. echo ($result);
  8. ?>
  9.  


Подскажите , что я делаю не правильно ? Может формат полученных данных должен быть обязательно json, а потом необходимо разобрать его в новый массив ?
 
 Top
Ch_chov
Отправлено: 24 Июля, 2015 - 15:17:13
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


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




Цитата:
Может формат полученных данных должен быть обязательно json, а потом необходимо разобрать его в новый массив ?

Да, PHP скрипт должен отдавать данные в формате JSON. Создавать новый массив скорей всего не нужно.
 
 Top
DelphinPRO
Отправлено: 24 Июля, 2015 - 16:31:00
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. $array = array('Переменная1', 'Переменная2', 'Переменная3');
  2. echo json_encode($array);


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Сочная Долька
Отправлено: 25 Июля, 2015 - 13:56:21
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2015  


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




JQuery UI Autocomplete понимает только JSON. Вообще, всякий XHR от такого типа виджетов понимает JSON. Предыдущий оратор показал вам стандартное средство форматирования массивов в PHP в JSON.
 
 Top
Russer
Отправлено: 27 Июля, 2015 - 11:28:50
Post Id


Гость


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


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




Спасибо за советы! Но так тоже не работает , при переходе к json на русских буквах :
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $array = array('Переменная1', 'Переменная2', 'Переменная3');
  4. ?>
  5.  

Получается следующие :
CODE (html):
скопировать код в буфер обмена
  1.  
  2. string(193) "["\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f1","\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f2","\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f3"]"
  3.  

Нашел функцию json_encode($array, JSON_UNESCAPED_UNICODE), но она не работает выдает ошибку.
Попробовал с английским символами
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $array = array('Perem1', 'Perem2', 'Perem3');
  4. ?>
  5.  

Результат судя по описаниям верный:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. string(28) "["Perem1","Perem2","Perem3"]"
  3.  

Но автоподстановка все равно не работает , может есть еще варианты в чем может быть проблема ?
 
 Top
DelphinPRO
Отправлено: 27 Июля, 2015 - 12:49:08
Post Id



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


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


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




Russer пишет:
Но так тоже не работает , при переходе к json на русских буквах :
Русские буквы не при чем.

Вы документацию по плагину jQuery.Autocomplete читали? Недостаточно просто список отдавать с сервера
Ознакомьтесь: https://github[dot]com/devbridge/jQu[dot][dot][dot]#response-format


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Russer
Отправлено: 27 Июля, 2015 - 13:07:27
Post Id


Гость


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


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




DelphinPRO пишет:
Russer пишет:
Но так тоже не работает , при переходе к json на русских буквах :
Русские буквы не при чем.

Вы документацию по плагину jQuery.Autocomplete читали? Недостаточно просто список отдавать с сервера
Ознакомьтесь: https://github.com/devbridge/jQuery-Autocomplete#response-format

Спасибо! А нет случаем ссылки на русский аналог ?
Я читал вот здесь http://jquery[dot]page2page[dot]ru/index[dot][dot][dot]0%BD%D0%B8%D0%B5 , но тут слишком мало описания одни примеры по сути.
 
 Top
zypikov
Отправлено: 27 Июля, 2015 - 13:55:34
Post Id



Частый гость


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


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




Russer, у вас в пых скрипте стоит echo или var_dump?

DelphinPRO пишет:
Ознакомьтесь: https://github[dot]com/devbridge/jQu[dot][dot][dot]#response-format


Вроде де бы в Response Format ниче особо нет.
Response from the server must be JSON formatted following JavaScript object
Разве (json_encode($array) не превратит его в нужный json-объект?


-----
У всего есть обратная сторона.
 
 Top
Viper
Отправлено: 27 Июля, 2015 - 14:18:59
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Russer
Почувствуйте разницу.
PHP:
скопировать код в буфер обмена
  1. $array = array(
  2.         array('value' => 1, 'data' => 'One'),
  3.         array('value' => 2, 'data' => 'Two'),
  4.         array('value' => 3, 'data' => 'Three')
  5. );
  6.  
  7.  
  8. echo json_encode($array);


zypikov пишет:
Вроде де бы в Response Format ниче особо нет.
дело не в формате, а в структуре.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Russer
Отправлено: 27 Июля, 2015 - 14:47:13
Post Id


Гость


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


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




zypikov пишет:
Russer, у вас в пых скрипте стоит echo или var_dump?

DelphinPRO пишет:
Ознакомьтесь: https://github[dot]com/devbridge/jQu[dot][dot][dot]#response-format


Вроде де бы в Response Format ниче особо нет.
Response from the server must be JSON formatted following JavaScript object
Разве (json_encode($array) не превратит его в нужный json-объект?

Нет ,echo стоит! Это я просто формат проверял.


Viper пишет:
Russer
Почувствуйте разницу.
PHP:
скопировать код в буфер обмена
  1. $array = array(
  2.         array('value' => 1, 'data' => 'One'),
  3.         array('value' => 2, 'data' => 'Two'),
  4.         array('value' => 3, 'data' => 'Three')
  5. );
  6.  
  7.  
  8. echo json_encode($array);


zypikov пишет:
Вроде де бы в Response Format ниче особо нет.
дело не в формате, а в структуре.

К сожалению так тоже не работает! Тем более , что пример с
PHP:
скопировать код в буфер обмена
  1.  
  2. var availableTags = [
  3.   "Переменная1",
  4.   "Переменная2",
  5.   "Переменная3"
  6. ];
  7. $( "#tags" ).autocomplete({source: availableTags});
  8.  

Работает прекрасно, значит и массив не обязательно индексированный должен быть!

(Отредактировано автором: 27 Июля, 2015 - 15:00:17)

 
 Top
Viper
Отправлено: 27 Июля, 2015 - 15:30:14
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Russer пишет:
К сожалению так тоже не работает!
формат
PHP:
скопировать код в буфер обмена
  1. $array = array(
  2.         array('id' => 1, 'label' => 'One', 'value' => 'One'),
  3. );
для удаленных данных.

Russer пишет:
Работает прекрасно, значит и массив не обязательно индексированный должен быть!
в самом простом варианте - да.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Russer
Отправлено: 27 Июля, 2015 - 15:41:23
Post Id


Гость


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


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




Viper пишет:
Russer пишет:
К сожалению так тоже не работает!
формат
PHP:
скопировать код в буфер обмена
  1. $array = array(
  2.         array('id' => 1, 'label' => 'One', 'value' => 'One'),
  3. );
для удаленных данных.

Russer пишет:
Работает прекрасно, значит и массив не обязательно индексированный должен быть!
в самом простом варианте - да.

Этот вариант тоже не сработал. Где бы почитать , как правильно это все оформить , в каждой статье по разному реализованно... Огорчение
 
 Top
Viper
Отправлено: 27 Июля, 2015 - 15:56:06
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Russer пишет:
Этот вариант тоже не сработал. Где бы почитать , как правильно это все оформить , в каждой статье по разному реализованно...
http://jqueryui[dot]com/autocomplete/#remote
http://api[dot]jqueryui[dot]com/autocomp[dot][dot][dot]e/#option-source


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Russer
Отправлено: 27 Июля, 2015 - 19:55:07
Post Id


Гость


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


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




Viper пишет:
Russer пишет:
Этот вариант тоже не сработал. Где бы почитать , как правильно это все оформить , в каждой статье по разному реализованно...
http://jqueryui[dot]com/autocomplete/#remote
http://api.jqueryui.com/autocomplete/#option-source

Спасибо , посмотрел , но там нет самого интересного , а именно search.php , нужно посмотреть какой результат он отдает.
Нашел следующие:
Multiple types supported:
Array: An array can be used for local data. There are two supported formats:
An array of strings: [ "Choice1", "Choice2" ]

То есть по идее к нужному виду строку привел , в остальном ошибаться вроде бы негде , не понимаю почему не работает... Огорчение
 
 Top
DelphinPRO
Отправлено: 27 Июля, 2015 - 21:07:02
Post Id



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


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


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




Вы что, всё еще не решили проблему? Улыбка

Я же дал исчерпывающую ссылку...

На клиенте

CODE (javascript):
скопировать код в буфер обмена
  1. $('#autocomplete').autocomplete({
  2.     serviceUrl: '/search.php'
  3. });


в search .php

PHP:
скопировать код в буфер обмена
  1. $query = $_GET['query'];
  2.  
  3. //.. запрос к базе, или откуда вы там будете данные брать по совпадению с $query
  4.  
  5. // далее из полученных данных формируйте такую структуру
  6. $data = [
  7.     "suggestions" => [
  8.         [
  9.             "value"=> "United Arab Emirates",
  10.             "data": "AE"
  11.         ],
  12.         [
  13.             "value"=> "United Kingdom",
  14.             "data": "UK"
  15.         ],
  16.         [
  17.             "value"=> "United States",
  18.             "data"=> "US"
  19.         ]
  20.     ]
  21. ];
  22. // и выплевывайте ее в браузер
  23. echo json_encode($data);


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB