Bolmazov
User-
Posts
355 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Everything posted by Bolmazov
-
Постановка задачи: Нужно реализовать некую форму (назовем её "конструктор"). Изначально форма состоит из одного селекта. В зависимости от выбранного пункта в селекте нужно к форме добавить еще один селект. И так далее. Селекты (кроме первого) могут иметь множественный выбор (multiple). Поля каждого последующего селекта зависят от выбранных полей всех предыдущих селектов. Пользователь может изменить значения любого из отображаемых селектов формы, в таком случае все последующие селекты удаляются и строится новый селект, который следует непосредственно после того селекта, значение которого было изменено. Описание моего подхода к задаче (код предыдущего поста уже немного изменен, но до сих пор отражает суть изначального вопроса): Т.к. для формирования нового селекта и его полей мне нужно знать предыдущие селекты и их выбранные поля, то каждому селекту приписываем уникальный (среди селектов) id и каждому полю в селекте присваиваем уникальное value (по сути id поля данного селекта). Как только пользователь выберет новое значение одного из отображаемых селектов, скрипт должен составить двухмерный массив состоящий из id селекта и набора выбранных полей (учитывается возможность multiple) и отправить этот массив на сервер для формирования нового селекта.
-
Т.к. я больше программирую в PHP буду объяснять терминами этого языка. JS (jquery) должен сформировать по сути двухмерный ассоциированный массив, но ключи массива д.б. числовыми. Пример: array(3=>array(2), 4=>array(2,3))); Пример формирования подобного массива: var param = new Array(); $(".construct_field").each(function () { var value = new Array(); $(this).children(":selected").each(function () { value.push($(this).val()); }); param[$(this).attr('id')] = value; }); Сформировав подобный массив, его нужно передать в качестве параметра AJAX-запросу в PHP: Пример: $.post("script.php", {'data[]': param}, function(data){ node.after(data); }, "html"); В тестовых целях script.php возвращает var_dump($_POST['data']); И тут я вижу следующее: array(5) { [0]=> string(15) "[object Window]" [1]=> string(15) "[object Window]" [2]=> string(15) "[object Window]" [3]=> string(1) "2" [4]=> string(3) "2,3" } Объяснил подробно. Теперь вопрос: 1. Если внимательно посмотреть, то вложенные массивы передаются строкой (пример: [4]=> string(3) "2,3" ). Можно ли еще в JS так сформировать данные, что бы получить, то что изначально требовалось: "4=>array(2,3)"? 2. Но важнее ответ на следующий вопрос. Как видно из примера в PHP попадает не чистый массив с т.з. самого PHP. Его придется фильтровать, что бы избавится от подобных значений: "object Window". а это не cool способ. Хочется, что бы в PHP попадал уже "чистый" массив (типа array(3=>array(2), 4=>array(2,3)))); P.S. мои знания в JS не Ах!, поэтому допускаю, что формировать данные нужно как-то подругому. Прошу помочь.
-
Да. Искал усердно, но ничего не нашел к сожалению. Пришлось спросить. Так 64, если я правильно понял?
-
Подскажите, пожалуйста, процессор pentium r dual-core cpu t4400 64-разрядный?
-
Да, Int. По ходу дело в них, а не в flv-файле.
-
Взял обычный скрипт для заливки файлов через html-форму. Пытаюсь залить через неё flv-файл и не получается. Ошибок не пишет, просто обнуляет форму и никуда ничего не отправляет. Пытаясь выяснить в чем дело взял обычный txt-файл и поменял расширение на flv - форма его загрузила. Взял flv-файл и поменял у него расширение на txt - форма его как и прежде не загружает. Значит дело в содержимом файла... Но разве нет возможности зались на сервер flv-файл через html-форму?! Да и от чего такое нежелание загружать flv-файл?!
-
$this->_helper->actionStack('action2', 'controller2'); И всё! )))
-
Да вроде с логикой всё в порядке. Смысл в том, что в контенте обрабатываются метки. Вот эти метки как раз по логике должны обрабатываться отдельными контроллерами и результат должен замещать соответствующую метку. Думаю, что с учетом задачи логика выполнения близка к правде. Вопрос в том может ли это Zend Framework
-
Ломаю голову над таким финтом ушами: Выполняется действие (action1) в контроллере (controller1), формируется соответствующий вид (view1) Как вызвать в действии (action1) контроллера (controller1) действие (action2) другого контроллера (controller2) и его вид (view2) сохранить в переменную что бы вставить её в вид (view1)? К сожалению такой код работает неправильно: class Controller2Controller extends Zend_Controller_Action{ function init(){} function action1Action() { $this->view->content = $this->_forward('action2', 'controller2'); } }
-
При попытке использования в проекте Zend Framework и его Zend_Filter столкнулся с таким вопросом: Что бы работать с кодировкой utf-8 нужно постоянно писать что-то типа: new Zend_Filter_StringToLower('UTF-8'). Можно ли настроить та, что бы не приходилось постоянно явно указывать кодировку?
-
Вроде так: SELECT article.* FROM article, site, site_article WHERE article.id = site_article.article_id AND sites.id=site_article.site_id GROUP BY article.id HAVING count(site_id) = (SELECT count(id) FROM sites)
-
Не, вроде не так. Пример: у нас два сайта и две статьи: Таблица site_article: [site_id]-[article_id] 1———--1 1———--2 2———--1 select distinct article_id from site_article даст все article_id в таблице site_article без повторений: [article_id] 1 2 а нужно получить article_id которые есть на всех сайтах, т.е.: [article_id] 1
-
Есть site_article с полями site_id и article_id, которая показывает на каком сайте какие статьи размещены (любая статья может быть размещена на нескольких сайтах, а может быть нигде не размещена или на одном из сайтов). Есть таблица article со всеми статьями и таблица site со всеми сайтами. Как написать запрос что бы получить число общих (размещенных всех сайтах) статей?
-
НУ ПОЧЕМУ Я УБИЛ ВЕСЬ ВЕЧЕР ПЯТНИЦЫ, НАЧАЛ ИМЕННО С ВАРИАНТОВ ПОДОБНОГО ЗАПРОСА И НИЧЕГО НЕ ПОЛУЧИЛОСЬ?!! ВОТ НАПИСАЛ НА ФОРУМ, ПОТРАТИЛ ЧЬЕ-ТО ВРЕМЯ НА ПОМОЩЬ МНЕ, А В ИТОГЕ ВЕРНУЛСЯ К ИСХОДНОМУ ВАРИАНТУ И ОН ...Р-А-Б-О-Т-А-Е-Т! Спасибо, Veseloff. Вот примерный вариант: SELECT * FROM ( SELECT data_of_event_in_sites.site_id, COUNT(events.id) FROM data_of_event_in_sites, events, data_of_events WHERE data_of_event_in_sites.data_of_event_id=data_of_events.id AND data_of_events.event_id = events.id GROUP BY data_of_event_in_sites.site_id ) as t1 LEFT JOIN ( SELECT data_of_event_in_sites.site_id, COUNT(events.id) FROM data_of_event_in_sites, events, data_of_events WHERE data_of_event_in_sites.data_of_event_id=data_of_events.id AND data_of_events.event_id = events.id AND data_of_event_in_sites.site_id = ALL ( SELECT sites.id FROM sites ) GROUP BY data_of_event_in_sites.site_id ) as t2 ON t1.site_id = t2.site_id
-
Может быть именно LEFT JOIN и решает мою проблему, но написать запрос, к сожалению, пока не получается. Раз не очень понятна задача, попробую пояснить. Первым запросом получаем id'шники и некоторую количественную характеристику (с1). Второым запросом получаем id'шники (подмножество id'шников, множества id'шников из первого запроса) и вторую количественную характеристику (с2). Нужно получить общую таблицу с полями: id, c1, c2. Еще более общая постановка вопроса: как объединить несколько подзапросов в одну таблицу по некоторому ключу?
-
Подскажите пожалуйста, как объединить два запроса: SELECT data_of_event_in_sites.site_id, COUNT(events.id) FROM data_of_event_in_sites, events, data_of_events WHERE data_of_event_in_sites.data_of_event_id=data_of_events.id AND data_of_events.event_id = events.id GROUP BY data_of_event_in_sites.site_id и SELECT site_id, count(id) FROM ( SELECT data_of_event_in_sites.site_id, events.id FROM data_of_event_in_sites, events, data_of_events WHERE data_of_event_in_sites.data_of_event_id=data_of_events.id AND data_of_events.event_id = events.id GROUP BY events.id HAVING count(events.id) = 1 ) as _teble GROUP BY site_id по site_id первой таблицы?
-
Ого! Действительно! Зачем его вообще изучать?! Пойду-ка побыстрее выброшу, пока не узнал почему он так тебе не понравился! )))
-
А вот и решение: $router->addRoute('site', new Zend_Controller_Router_Route(':module/*', array('controller' => 'index', 'action' => 'index'), array('module'=>'(?!admin$).+') ) ); Нашел сам, но всё-же хотелось бы узнать мнение о правильности описанной реализации динамической структуры сайта на основе БД с помощью Zend Framework.
-
Осваиваю Zend Framework. Сайт разделил на два модуля: сам сайт и его админка. Начал с модуля админки. Там всё получилось классически - нужно создать страницу, значет нужен соответствующий контроллер. Подстраницами будут являтся действия контроллера. Таким образом я создал интерфейс для создания древовидной структуры страниц самого сайта и записал её в БД. Когда начал писать модуль непосредственно сайта, то сразу возник вопрос: а как быть тут? Ведь структура сайта храниться в БД и именно исходя из неё должны выводится те или иные данные страницы соответствующего URL, а не исходя из наличия контроллера и его действий. Решил, что в данном случае именно IndexController будет исходя из URL собирать страницу. Только возникла трудность с настройкой роутера. Как записать правило: "Для страниц админки 'www.site.ru/admin/.../...' использовать модуль 'admin', соответствующие контроллеры, действия и параметры, а для страниц непосредственно сайта 'www.site.ru/.../...' всегда использовать модуль 'site', контроллер 'IndexController ', действие 'indexAction' "? Вот такие правила не работают: $router->addRoute('site', new Zend_Controller_Router_Route('*', array('controller' => 'index', 'action' => 'index')) ); $router->addRoute('admin', new Zend_Controller_Router_Route('admin', array('module'=>'admin', 'controller' => 'index', 'action' => 'index')) ); Для чего я так развернуто задал такой простой вопрос? Потому что кроме непосредственного ответа на вопрос "Как записать правило?", я хотел бы узнать мнения о правильности решения описанной задачи в общем.
-
Спасибо. Понимал, что по логике получается именно так. Но замута с парами ключ - значение, имхо, стремная вещь. Кому нужны x! (где x - количество пар ключ-значение) разных url ведущих на один и тот же ресурс... (или я ошибаюсь?) Если делать через роутеры, то можно правило: $router->addRoute('tree', new Zend_Controller_Router_Route('admin/tree/edit/:section_id', array('module'=>'admin', 'controller' => 'tree', 'action' => 'edit')) ); как-то покороче переписать (именно для этого url), исходя из того, что должно быть и так понятно, что admin это модуль, tree - контроллер, edit - действие?
-
LokiDi L0ck, читал я. Хорошо. Тогда можно тебе задать следующий вопрос: Можно до вызова диспетчерезации фронт-контроллером написать так: //// Файл маршрутизации $router = new Zend_Controller_Router_Rewrite(); $router->addRoute('tree', new Zend_Controller_Router_Route('admin/tree/edit/:article/:type') ); ///// //// Bootstrap $FrontController->setRouter($router); $frontController->dispatch(); //// и всё будет нормально. Но что-то меня не радует перспектива по каждому чиху лезть в файл маршрутизации. Пытался локализовать правило в конкретном контроллере, но не получается. class Admin_TreeController extends Zend_Controller_Action{ function init() { $router = new Zend_Controller_Router_Rewrite(); $router->addRoute('tree', new Zend_Controller_Router_Route(':module/:controller/:action/:article/:type') ); $this->getFrontController()->setRouter($router); }... В чем ошибка? Возможно ли определить правило маршрутизации в контролере? Не вредно ли мое стремление локализации правила в контроллере?
-
Осваиваю Zend Framework. Столкнулся с такой ситуацией: Рассмотрим url "http://site/admin/tree/edit/" соответственно :module = 'admin'; :controller = 'tree'; :action = 'edit'. Что бы добавить к этому url параметры :article = 1 и tupe = 'news' нужно писать, как я понимаю, так "http://site/admin/tree/edit/article/1/type/news", а ведь можно еще и так: "http://site/admin/tree/edit/type/news/article/1". В принципе не понимаю зачем такое чудо нужно!? Но вопрос не столько в этом, а в том как заставить Zend Framework правильно понимать такие url как "http://site/admin/tree/edit/news/1"?
-
Проблема в том, что я могу вставить в шаблон контент из контроллера (получается два этапа), но мне нужно контент вставить в шаблон именно для этой страницы (index.tpl), это всё вставить в сетку (которая м.б. использована несколькими страницами), а потом уже это всё вставить в основной шаблон (<head><body> ....) (получается три этапа).
-
Только начинаю разбираться с MVC Zend Framework-а и столкнулся с проблемой работы с видом. Есть шаблон типа: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> </head> <body> .... </body> </html> Далее есть сетка сайта: <div class="wrapper"> <div class="column-l"> </div> <div class="header"> <strong>Левое расположение меню. Все колонки с минимальным контентом.</strong> </div> <div class="column-r"> </div> <div class="container"> <div class="column-l"> Левая колонка </div> <div class="content"> <?php echo $this->escape($this->content); ?> </div> <div class="column-r"> Правая колонка </div> <div class="clear"> </div> </div> </div> <div class="footer"> Прижимающийся футер </div> Ну и сам контент формирует контроллер: class IndexController extends Zend_Controller_Action{ function indexAction() { $this->view->content= "Контент"; } } Не могу понять как использовать (Zend_View и Zend_Layout или что-то подобное) что бы собрать страницу: контент вставить в сетку и всё это в общий шаблон.