Jump to content

Bolmazov

User
  • Posts

    355
  • Joined

  • Last visited

Everything posted by Bolmazov

  1. Постановка задачи: Нужно реализовать некую форму (назовем её "конструктор"). Изначально форма состоит из одного селекта. В зависимости от выбранного пункта в селекте нужно к форме добавить еще один селект. И так далее. Селекты (кроме первого) могут иметь множественный выбор (multiple). Поля каждого последующего селекта зависят от выбранных полей всех предыдущих селектов. Пользователь может изменить значения любого из отображаемых селектов формы, в таком случае все последующие селекты удаляются и строится новый селект, который следует непосредственно после того селекта, значение которого было изменено. Описание моего подхода к задаче (код предыдущего поста уже немного изменен, но до сих пор отражает суть изначального вопроса): Т.к. для формирования нового селекта и его полей мне нужно знать предыдущие селекты и их выбранные поля, то каждому селекту приписываем уникальный (среди селектов) id и каждому полю в селекте присваиваем уникальное value (по сути id поля данного селекта). Как только пользователь выберет новое значение одного из отображаемых селектов, скрипт должен составить двухмерный массив состоящий из id селекта и набора выбранных полей (учитывается возможность multiple) и отправить этот массив на сервер для формирования нового селекта.
  2. Т.к. я больше программирую в 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 не Ах!, поэтому допускаю, что формировать данные нужно как-то подругому. Прошу помочь.
  3. Да. Искал усердно, но ничего не нашел к сожалению. Пришлось спросить. Так 64, если я правильно понял?
  4. Подскажите, пожалуйста, процессор pentium r dual-core cpu t4400 64-разрядный?
  5. Да, Int. По ходу дело в них, а не в flv-файле.
  6. Взял обычный скрипт для заливки файлов через html-форму. Пытаюсь залить через неё flv-файл и не получается. Ошибок не пишет, просто обнуляет форму и никуда ничего не отправляет. Пытаясь выяснить в чем дело взял обычный txt-файл и поменял расширение на flv - форма его загрузила. Взял flv-файл и поменял у него расширение на txt - форма его как и прежде не загружает. Значит дело в содержимом файла... Но разве нет возможности зались на сервер flv-файл через html-форму?! Да и от чего такое нежелание загружать flv-файл?!
  7. $this->_helper->actionStack('action2', 'controller2'); И всё! )))
  8. Да вроде с логикой всё в порядке. Смысл в том, что в контенте обрабатываются метки. Вот эти метки как раз по логике должны обрабатываться отдельными контроллерами и результат должен замещать соответствующую метку. Думаю, что с учетом задачи логика выполнения близка к правде. Вопрос в том может ли это Zend Framework
  9. Ломаю голову над таким финтом ушами: Выполняется действие (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'); } }
  10. Bolmazov

    Zend_Filter и utf-8

    При попытке использования в проекте Zend Framework и его Zend_Filter столкнулся с таким вопросом: Что бы работать с кодировкой utf-8 нужно постоянно писать что-то типа: new Zend_Filter_StringToLower('UTF-8'). Можно ли настроить та, что бы не приходилось постоянно явно указывать кодировку?
  11. Вроде так: 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)
  12. Не, вроде не так. Пример: у нас два сайта и две статьи: Таблица 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
  13. Есть site_article с полями site_id и article_id, которая показывает на каком сайте какие статьи размещены (любая статья может быть размещена на нескольких сайтах, а может быть нигде не размещена или на одном из сайтов). Есть таблица article со всеми статьями и таблица site со всеми сайтами. Как написать запрос что бы получить число общих (размещенных всех сайтах) статей?
  14. НУ ПОЧЕМУ Я УБИЛ ВЕСЬ ВЕЧЕР ПЯТНИЦЫ, НАЧАЛ ИМЕННО С ВАРИАНТОВ ПОДОБНОГО ЗАПРОСА И НИЧЕГО НЕ ПОЛУЧИЛОСЬ?!! ВОТ НАПИСАЛ НА ФОРУМ, ПОТРАТИЛ ЧЬЕ-ТО ВРЕМЯ НА ПОМОЩЬ МНЕ, А В ИТОГЕ ВЕРНУЛСЯ К ИСХОДНОМУ ВАРИАНТУ И ОН ...Р-А-Б-О-Т-А-Е-Т! Спасибо, 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
  15. Может быть именно LEFT JOIN и решает мою проблему, но написать запрос, к сожалению, пока не получается. Раз не очень понятна задача, попробую пояснить. Первым запросом получаем id'шники и некоторую количественную характеристику (с1). Второым запросом получаем id'шники (подмножество id'шников, множества id'шников из первого запроса) и вторую количественную характеристику (с2). Нужно получить общую таблицу с полями: id, c1, c2. Еще более общая постановка вопроса: как объединить несколько подзапросов в одну таблицу по некоторому ключу?
  16. Подскажите пожалуйста, как объединить два запроса: 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 первой таблицы?
  17. Ого! Действительно! Зачем его вообще изучать?! Пойду-ка побыстрее выброшу, пока не узнал почему он так тебе не понравился! )))
  18. А вот и решение: $router->addRoute('site', new Zend_Controller_Router_Route(':module/*', array('controller' => 'index', 'action' => 'index'), array('module'=>'(?!admin$).+') ) ); Нашел сам, но всё-же хотелось бы узнать мнение о правильности описанной реализации динамической структуры сайта на основе БД с помощью Zend Framework.
  19. Осваиваю 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')) ); Для чего я так развернуто задал такой простой вопрос? Потому что кроме непосредственного ответа на вопрос "Как записать правило?", я хотел бы узнать мнения о правильности решения описанной задачи в общем.
  20. Спасибо. Понимал, что по логике получается именно так. Но замута с парами ключ - значение, имхо, стремная вещь. Кому нужны 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 - действие?
  21. 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); }... В чем ошибка? Возможно ли определить правило маршрутизации в контролере? Не вредно ли мое стремление локализации правила в контроллере?
  22. Осваиваю 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"?
  23. Проблема в том, что я могу вставить в шаблон контент из контроллера (получается два этапа), но мне нужно контент вставить в шаблон именно для этой страницы (index.tpl), это всё вставить в сетку (которая м.б. использована несколькими страницами), а потом уже это всё вставить в основной шаблон (<head><body> ....) (получается три этапа).
  24. Только начинаю разбираться с 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 или что-то подобное) что бы собрать страницу: контент вставить в сетку и всё это в общий шаблон.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy