PHP.SU

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

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

> Найдено сообщений: 28
puncake Отправлено: 12 Августа, 2016 - 12:46:50 • Тема: Autocomplete, catcomplete • Форум: Программирование на PHP

Ответов: 30
Просмотров: 3881
PHP:
PHP:
скопировать код в буфер обмена
  1. class ArticlesController extends AppController{
  2.    
  3.     public $uses = array('Category', 'Article', 'Recipe', 'ArticleComment');
  4.  
  5. public function search(){
  6.         if(isset($_GET['term'])){
  7.            $result_search = $this->search_autocomplete();
  8.            exit(json_encode($result_search));
  9.         }elseif(isset($_GET['search']) && $_GET['search']){
  10.             $search = !empty($_GET['search']) ? $_GET['search'] : null;
  11.             $this->search_simple($search);
  12.         }
  13.     }
  14.  
  15.    
  16.     public function search_autocomplete(){
  17.         $search = $_GET['term'];
  18.         $search_res = $this->Article->find('list', array(
  19.                 'conditions' => array("Article.title LIKE" => '%' . $search . '%', "Article.is_visible" => '1'),
  20.                 'fields' => array('title', 'id', 'category_id'),
  21.                 'limit' => 20
  22.             ));
  23.  
  24.         $data = array();
  25.      
  26.         foreach ($search_res as $item) {
  27.             $data[$item['Article']['id']] = array(
  28.                     'label' => $item['Article']['title'],
  29.                     'category' => $item['Category']['title']
  30.             );
  31.         }
  32.         return $data = json_encode($data);
  33.     }  
  34. }


JS:
CODE (javascript):
скопировать код в буфер обмена
  1. <script>
  2.  
  3.   $.widget( "custom.catcomplete", $.ui.autocomplete, {
  4.     _create: function() {        
  5.       this._super();
  6.       this.widget().menu( "option", "items", "> :not(.ui-autocomplete-category)" );
  7.     },
  8.     _renderMenu: function( ul, items ) {
  9.       var that = this,
  10.         currentCategory = "";
  11.       $.each( items, function( index, item ) {
  12.         var li;
  13.         if ( item.category != currentCategory ) {
  14.           ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
  15.           currentCategory = item.category;
  16.         }
  17.         li = that._renderItemData( ul, item );
  18.         if ( item.category ) {
  19.           li.attr( "aria-label", item.category + " : " + item.label );
  20.         }
  21.       });
  22.     }
  23.   });  
  24.     var data = <?=$data?>;
  25.     var item = JSON.parse(data);
  26.     console.log(item);
  27.  
  28.  
  29.     $( "#search" ).catcomplete({
  30.       source: path + '/article/search/',
  31.       minLength: 1,
  32.         select: function(event, ui){
  33.             window.location = path + item.category + ui.item.value;
  34.         }
  35.     });
  36.  
  37.   </script>
puncake Отправлено: 11 Августа, 2016 - 16:21:42 • Тема: Autocomplete, catcomplete • Форум: Программирование на PHP

Ответов: 30
Просмотров: 3881
andrewkard пишет:
puncake пишет:
var data = <pre class="cake-error"><a href="javascript:void(0);" onclic

Вот тут, вместо выражения, получаем "<...", что и приводит к ошибке, что там дальше то? Ссылка какая-то?
(Добавление)
И это означает, что данные на сервере сформированы с ошибкой, попробуйте сначала отдать просто набор правильных данных без их генерации. А потом уже подгоняйте их.


Сама ошибка и есть ссылка. Больше ничего.
Если передавать в скрипт набор данных из демо-примера (откуда я брала код), то все работает. Но ведь мне нужно выбирать названия статей из БД. И вот тут никак не получается построить правильный массив, а после распарсить строку-json и получить $data как в демо. "Подгоняю" уже бог знает сколько дней.
puncake Отправлено: 11 Августа, 2016 - 15:00:40 • Тема: Autocomplete, catcomplete • Форум: Программирование на PHP

Ответов: 30
Просмотров: 3881
Если я все правильно делаю, (у меня консоль не англоязычная), Network - это сеть, а Response - ответ. Нажимаю на ссылку ошибки и оказываюсь во вкладке Script. Затем перехожу в Network - Response и вижу код совершенно другого скрипта, относящегося к форме подписки, которую я только что добавила. Раньше ее не было, значит и ошибка не из-за нее.
puncake Отправлено: 11 Августа, 2016 - 14:11:11 • Тема: Autocomplete, catcomplete • Форум: Программирование на PHP

Ответов: 30
Просмотров: 3881
Сервер локальный - OpenServer. А что именно там смотреть? Там 2 файла - MySQL-5.5_error и Apache-2.2_errora. Во втором вот таких строк больше 20-ти:

[Thu Aug 11 10:37:34 2016] [warn] RSA server certificate CommonName (CN) `openserver' does NOT match server name!?

Это ОНО?
puncake Отправлено: 11 Августа, 2016 - 14:01:39 • Тема: Autocomplete, catcomplete • Форум: Программирование на PHP

Ответов: 30
Просмотров: 3881
andrewkard пишет:
puncake пишет:
а в консоли такая ошибка:

Переходим по ссылке в консоли и смотрим где ошибка, исправляем (если она не в библиотеке типа jQuery, а если все же в ней, значит не такие данные поступают в обработку)


Да разве ж я писала бы сюда вопросы, если б знала ЧТО там исправлять... Ну перешла я по ссылке, смотрю на код и понятия не имею, где там фигурной скобки не хватает. Методом тыка ставила в наиболее "подозрительные" места. Вроде угадала, теперь такая ошибка в консоли:
SyntaxError: expected expression, got '<'

var data = <pre class="cake-error"><a href="javascript:void(0);" onclic

Перехожу по ссылке и не знаю, где править.... ((
puncake Отправлено: 10 Августа, 2016 - 11:13:42 • Тема: Движок для форума • Форум: CMS и фреймворки

Ответов: 9
Просмотров: 1634
Движок ведь можно будет поменять в случае возникновения проблем, не так ли?
puncake Отправлено: 09 Августа, 2016 - 20:55:41 • Тема: Autocomplete, catcomplete • Форум: Программирование на PHP

Ответов: 30
Просмотров: 3881
Спасибо, но что-то все-равно не работает, а в консоли такая ошибка:

SyntaxError: missing } after property list

var data = <pre class="cake-error"><a href="javascript:void(
puncake Отправлено: 09 Августа, 2016 - 13:10:17 • Тема: Autocomplete, catcomplete • Форум: Программирование на PHP

Ответов: 30
Просмотров: 3881
andrewkard пишет:
Вроде не совсем такой как в примере.
А так:.....


Наверное, тут и возвращать нужно json-строку, а не просто массив, да? В скрипте эти данные используются так: item.category и item.value.
puncake Отправлено: 09 Августа, 2016 - 13:07:13 • Тема: Движок для форума • Форум: CMS и фреймворки

Ответов: 9
Просмотров: 1634
Спасибо!
puncake Отправлено: 08 Августа, 2016 - 21:47:19 • Тема: Движок для форума • Форум: CMS и фреймворки

Ответов: 9
Просмотров: 1634
Я просила совет насчет движка, а не рекламу сервисов. Зачем мне форум на каком-то сервисе?? Мне нужно прикрутить форум к сайту!
puncake Отправлено: 08 Августа, 2016 - 10:59:32 • Тема: Движок для форума • Форум: CMS и фреймворки

Ответов: 9
Просмотров: 1634
Хочу прикрутить форум к сайту, написанному на CakePHP. Кто-нибудь может подсказать удобный, надежный, с поддержкой и желательно не очень дорогой движок для такого форума? Сайт молодой, посещаемость, естественно, пока будет небольшая, поэтому дорогой движок пока не хотелось бы. Но в будущем надежды на большую посещаемость. Можно ли его будет потом заменить? Буду благодарна за любой совет.
puncake Отправлено: 08 Августа, 2016 - 10:29:38 • Тема: Autocomplete, catcomplete • Форум: Программирование на PHP

Ответов: 30
Просмотров: 3881
Вопрос остается открытым. Пожалуйста, подскажите, кто знает, как решить проблему.
puncake Отправлено: 12 Июля, 2016 - 20:23:06 • Тема: Autocomplete, catcomplete • Форум: Программирование на PHP

Ответов: 30
Просмотров: 3881
Viper пишет:
Только без категории.
PHP:
скопировать код в буфер обмена
  1. $data = array();
  2.  
  3. foreach ($search_res as $item) {
  4.         $data[] = (object) array(
  5.                 'label' => $item['Article']['id'],
  6.                 'value' => $item['Article']['title'],
  7.                 'category' => $item['Article']['category_id']
  8.         );
  9. }


Как получить название категории решайте сами.


К сожалению, теперь автокомплит не работает вообще, т.е. выпадающего списка тайтлов нет.
puncake Отправлено: 12 Июля, 2016 - 17:39:09 • Тема: Autocomplete, catcomplete • Форум: Программирование на PHP

Ответов: 30
Просмотров: 3881
Viper пишет:
http://jqueryui[dot]com/autocomplete/#categories жмакаете view source и смотрите формат
CODE (javascript):
скопировать код в буфер обмена
  1.     data = [
  2.       { label: "anders", category: "" },
  3.       { label: "andreas", category: "" },
  4.       { label: "antal", category: "" },
  5.       { label: "annhhx10", category: "Products" },
  6.       { label: "annk K12", category: "Products" },
  7.       { label: "annttop C13", category: "Products" },
  8.       { label: "anders andersson", category: "People" },
  9.       { label: "andreas andersson", category: "People" },
  10.       { label: "andreas johnson", category: "People" }
  11.     ];


У вас же вывод совсем другой получается.

Я туда жмакала - я ведь оттуда код брала. Ясное дело, что у меня другой вывод. У меня ведь данные берутся из БД. Вот как из них построить такой вывод? Я data заполняю в цикле foreach. Но как-то у меня иначе получается.
puncake Отправлено: 12 Июля, 2016 - 14:09:37 • Тема: Autocomplete, catcomplete • Форум: Программирование на PHP

Ответов: 30
Просмотров: 3881
Viper пишет:
У вас нет в ответе 'category', а вы его пытаетесь получить через item.category. Исправляйте search_autocomplete()

PHP:
скопировать код в буфер обмена
  1. ...
  2. $data[$k] = array('label' => $v, 'value' => $k, 'category' => $category);
  3. ...

вам осталось каким-то образом заполнить данными переменную $category.


Так не работает. Не придумывается, как вытащить категорию. Я изменила цикл:
PHP:
скопировать код в буфер обмена
  1. foreach($search_res as $item){
  2.             $data[$item['Article']['id']] = array('label' => $item['Article']['id'], 'value' => $item['Article']['title'], 'category' => $item['Article']['category_id']);
  3.         }
  4.         return $data;

А к запросе вытаскиваю айди категории. Но тоже не работает.
Viper пишет:
Кода вашего я не вижу полностью, поэтому не могу сказать как это сделать.

Я вроде весь нужный код в самом начале выложила. Что еще нужно, скажите - я выложу.

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB