Jump to content

Bolmazov

User
  • Posts

    355
  • Joined

  • Last visited

Everything posted by Bolmazov

  1. Большое всем спасибо. Буду пробовать.
  2. Если не затруднит, подскажите как это сделать?
  3. Реализационном, если можно. Вот к чему я сам пришёл: 1. Вставляем форму с полем загрузки файлов Как то нужно получить тот файл, который пользователь выбрал (в этом и задача собственно) 2. Вешаем ajax-сценарий для получения данных (воспользуемся плагином ajaxForm)... наверное так Пока я не разобрался с ajaxForm и не могу понять: неужели придётся писать маленький php-файл для того чтобы он возвращал на страницу само изображение или можно всё на jquery написать...
  4. Здравствуйте! Может кто сталкивался с задачей загрузки пользователем на сайт изображения (с помощью jquery плагинов наверное), но без сохранения загруженного изображения на сервер... Как данную задачу можно реализовать? Объясню подробнее ситуацию: хочу дать на сайте возможность загрузить фото с изображением своего лица. Его фотография появляется на страничке. После этого он щёлкая по галерее причесок "примеряет" на своё фото различные стрижки... и .т.п. Но сохранять его изображение на сайте не нужно: как только он покинет страничку всё сбросится.
  5. Я давно на этом форуме и уважаю здешних обитателей. В связи этим руководствуюсь принципом: "Перед тем как открыть тему, нужно очень постараться самому ответить на собственный вопрос". Короче: я писал им два раза (ответа нет).
  6. Это же каталог простой, поэтому — на чём угодно. Не забывайте, что это B2B проект, следовательно внутри нас ждёт личный кабинет и прочий геморрой; посмотрите на их поиск: рекомендации при заполнении полей, туева хуча чекбоксов... Я пользуюсь в своей работе modx'ом (смею считать, что владею им хорошо) и представляю весь объём работы, чтобы заточить его по данные задачи. Думаю, что в данном случае разработчики пользовались заточенной, для этих целей CMS. Какой именно? Вот что интересно.
  7. ShumNo,Verder, спасибо. Blueprint CSS Framework тоже взял на заметку. Может подойдём к этому с другой стороны (но, боюсь, это может быть очередным бестолковым холиваром): на чём можно сделать такое?
  8. Странное дело, но так работает! Спасибо, Lesana. Осталось узнать что за магические действия для этого потребовались.
  9. Привет. Делаем сайт, он пока в процессе. Но интересует один вопрос: почему IE не отображает flash-логотип?
  10. Случайно на одном сайте наткнулся на спец. символ рубля ( ₶ ). 1. непонятно откуда он там? 2. почему у меня на комп-е он отображается только в FF и S, а на другом компьютер проверял, работает в O и в IE? 3. что такое эти спец. символы?
  11. Спасибо. Не сомневался, что будут варианты. Конечно ответ скорее "нельзя именно так как требовалось". Но всё равно есть над чем подумать.
  12. Здравствуй старый добрый форум и вновь мне нужен твой совет. Под утро, после более 12-ти часов за компьютером, на меня свалилась такая вот задача: Дано: есть сайт; на сайте есть jpg-файл (url: /img.jpg); есть .htacces; когда пользователь заходит по url: /img.jpg, то он любуется картинкой. Задача: по url: /img.jpg?download скачать эту красивую картинку. Примечании: Почему-то мне кажется, что эту задачку можно решить через .htacces Буду рад помощи.
  13. Эх... и не одного конструктивного комментария. И уже не в первый раз догоняю до ответа самостоятельно: CREATE TEMPORARY TABLE table_1 SELECT * FROM table_; Как-то так наверное...
  14. А как быть с двумя абзацами книги "MySQL" Поля Дюбуа в которых читаем: "Имя второй таблицы может совпадать с именем уже существующей постоянной таблицы. Такое повторение не является ошибкой...." и "Использование таблицы TEMPORARY с именем, аналогичным первоначальному имени может пригодится при отладке операторов..."?
  15. Как понятно из темы проблема в правильном написании следующего кода: CREATE TEMPORARY TABLE table_1 LIKE table_1 Система возвращает ошибку: Not UNIQUE TABLE/ALIAS: 'table_1'. Но ведь я и хочу создать временную таблицу с тем же именем, скопировать структуру и обращаясь к table_1 работать со временной таблицей. Как правильно написать приведенный выше код?
  16. Вот и ответ: select * from cars where LOWER(REPLACE(model, ' ', '')) = '{$model}'
  17. Есть переменная: $model='TrailBlazer'; в БД в таблице 'cars' есть кортежи с полем 'model' со значением 'trail blazer'. Допустим я приведу переменную к виду $model='trailblazer'; т.е. переведу строку в нижний регистр, удалю все пробелы. Как подобным образом поступить со значениями поля 'model' в таблице 'cars', что бы найти все кортежи поле 'model' которых содержит значение 'trailblazer'?
  18. Если коротко, то получится объяснить так: архитектура сайта состоит из нескольких модулей. В одном из них необходима недефолтная структура файлов вида. Самый близкий (на мой взгляд) к правде вариант такой: class Marks_ContentController extends Zend_Controller_Action{ public function preDispatch(){ $this->_helper->viewRenderer->setViewBasePathSpec(':moduleDir/views'); $this->_helper->viewRenderer->setViewScriptPathSpec(':action.:suffix'); } Но и такой вариант в целом не работает. Теперь немного подробнее. Кроме того, что в данном модуле недефолтная структура файлов видов, структура модуля в целом недефолтная. Пример самой структура модуля "marks": application/ modules/ admin/ ... site/ ... marks/ content/ views/ index.phtml ... ContentController.php ... Фактически должно происходить следующее: Контроллер 'IndexController' модуля 'site' выполняет вызов действия 'index' контроллера 'content' модуля 'marks' таким вот способом: $this->getFrontController()->addControllerDirectory('./application/modules/marks/content', 'marks'); $return = $this->view->action('index', 'content', 'marks',$param); Здесь, мне кажется, всё в порядке. По крайней мере ошибок на этом этапе не возникает. Вот мы в контролере 'Marks_ContentController'. И тут возникает ошибка. Программа не находит скрипт вида: Uncaught exception 'Zend_View_Exception' with message 'script 'content/index.phtml' not found in path (/application/modules/marks/content\scripts/)' Пытаясь самостоятельно с этим разобраться нашел следующее: $this->_helper->viewRenderer->setViewBasePathSpec - позволяет изменить спецификацию пути, используемую для определения базового пути, добавляемого в объект вида; $this->_helper->viewRenderer->setViewScriptPathSpec - позволяет изменить спецификацию пути, используемую для определения пути к отдельному скрипту вида (без базового пути скрипта вида). Пишу: class Marks_ContentController extends Zend_Controller_Action{ private $Section; public function preDispatch(){ $this->_helper->viewRenderer->setViewBasePathSpec(':moduleDir/'); $this->_helper->viewRenderer->setViewScriptPathSpec(':action.:suffix'); } ... Всё равно ошибка: Uncaught exception 'Zend_View_Exception' with message 'script 'index.phtml' not found in path (/application/modules/marks/content\scripts/)' Причем на мой взгляд странная. Получается, что setViewScriptPathSpec учлась, т.к. по дефонту он такая: :controller/:action.:suffix А c setViewScriptPathSpec, мне вообще не понятно. Не нового не дефолтного значения (:moduleDir/views) я в ошибках не нашел. Кроме того, в ошибке фигурирует папка "scripts" (in path (/application/modules/marks/content\scripts/)), значение которой я не знаю как изменить. Еще попробовал, что-бы хоть заработало переименовать папку 'views' ('/application/modules/marks/content/views/') в 'scripts', что бы подогнать структуру под общение 'not found in path (/application/modules/marks/content\scripts/)' Эффекта - ноль. Повторю общий вопрос: Как измененить (спицификацию) пути до объектов вида?
  19. Нет. Не в этом моя ошибка и я так не думаю. Вероятно, Ты так подумал, потому, что я слишком много понаписал тут. Это специально для того что бы не пришлось ждать чара с прокачанным скилом телепатии. На помощь я конечно рассчитывал, но естественно не в той мере, что бы сидеть и ждать пока мне прокачают экспириэнс. С другой стороны, я писал, для того что бы рано или поздно кто-то (я) нашел ответ на эти вопросы и форум стал еще немного полезней этой информацией. Так вот на большую часть вопросов я нашел ответ, сейчас изложу: Уважаемый %username%, если тебе требуется вставить html , который ты должен получить через ajax и в этом html есть элементы, на которых, по идеи, должен распространятся некоторый javascript-сценарий, то могут пригодится советы, изложенные ниже. Что бы было еще более понятно о чем это, можно прочитать все предыдущие посты, включая самый первый, где я описал частный случай, который и столкнул меня с некоторыми трудностями. Для эффективного (менее геморного) написания javascript-сценария я конечно использовал jquery. И так... 1. Как удобнее подготовить данные для их отправки через ajax? Перепробовав несколько вариантов я сделал следующее: собрал в данные, в удобную для последующей работы с ними на сервере, структуру и воспользовался плагином jquery.json, что бы спокойно отправить данную структуру на сервер через ajax. На сервере нужно воспользоваться функцией json_decode (для PHP), что бы преобразовать строку из json-формата в структуру, которую ты так кропотливо формировал в javascript. 2. Когда отправишь данные, может оказаться, что сработал включенный get_magic_quotes_gpc. Так отключи его! Воспользуйся функцией stripslashes, что бы убрать экранирование. 3. Обрати внимание на кодировку, в которой php отдает обратно код. Пропиши charset в ответе сервера, если кодировка страницы не совпадает с кодировкой ответа. Еще мне помогла эта заметка про IE. 4. Когда мы вернули и вставили наш новый html в таблицу, то хотим, что бы на них тоже распространялся некоторый javascript-сценарий. В моем случае я хочу, что бы вызывалась ф-я _change на событие change для всех элементов с классом construct_field. В таком случае обратите внимание на строчку $('.construct_field').change(function () { _change($(this)) } ); в функции building код, который я разместил ниже. 5. И последнее. Когда я всё сделал, то обнаружил, что IE упрямо не отправляет данные ajax'ом если писать примерно так: $.post("script.php", {'param': $.toJSON(param)}); Всё заработало даже в IE, когда я переписал это примерно так: $.post("script.php", {'param[]': $.toJSON(param)}); А теперь мой javascript-код иллюстрирующий всё это: <script src="/tools/jquery.json-2.2.min.js" type="text/javascript"></script> <script> // вешаем _change функцию на событие change // но она почему-то не будет выполнятся для вставленного html из ajax-запроса $('.construct_field').change(function () { _change($(this)) } ); function _change(_this){ var param = new Array(); // начинаю формировать удобную для меня структуру данных для отправки в ajax-запросе // структура param будет такой array(object('key': ..., 'value': array(...) ), object('key': ..., 'value': array(...), ...) $('#constructor .construct_field ').each(function () { param.push({ 'key': $(this).attr('id'), 'value': add_param($(this)) }); }); // Отправляем ajax-запрос. $.post("/modules/tconstructor.php", {'constructor[]': $.toJSON(param)}, function(data){ building(_this, data); }, "html"); } function add_param(field){ var value = new Array(); field.children(":selected").each(function () { value.push($(this).val()); }); field.children(":checked").each(function () { value.push($(this).val()); }); return value; } function building(field, data){ field.parents('#constructor tr').after(data); var summ = 0; $('.constructor_price').each(function () { summ += parseInt($(this).text()); }); $('#constructor_summ').html('Итоговыя сумма:<b style="font-size: 16px;"> '+summ+' </b>руб.'); // а вот эта строчка заставляет выполнить функцию _change для всех элементы с классом construct_field () при выполнении события change $('.construct_field').change(function () { _change($(this)) } ); } </script> Конечно, это наверняка сыровато, но, надеюсь, зерна разумного в этом есть. Буду признателен если вы как-то конструктивно прокомментируете это, а может быть даже объясните, почему везде подобный код: $.post("script.php", {'param': $.toJSON(param)});, работает, а что бы он работал и в IE, нужно писать так: $.post("script.php", {'param[]': $.toJSON(param)}); ?
  20. Продолжаю эту тему, т.к. считаю, что велика вероятность возникновения подобных вопросов у других программистов. Кратко опишу те проблемы с которыми я столкнулся по ходу написания ajax-запроса с помощью jqery. Мои частные, подозреваю не самые продуктивные, решения опишу позже, когда найду ответы на все интересующие меня вопросы. И так: 1. нужно было собрать из формы данные с помощью jqery в удобном для разбора на стороне сервера формате. 2. ajax-запрос должен добавить (изменить) html-форму и новые элементы формы должны были реагировать на события определенные в js-скрипте для всех полей данной html-формы. И вот я всё, казалось, сделал. Какой ни какой, а результат. И тут я решил всё проверить ... в IE. Конечно же не работает! Копирую на localhost и начинаю разбираться в чем дело. Первый вывод: запрос $.post("/modules/tconstructor.php", {'constructor': param}, function(data){ alert(data) }, "html"); не работает. Точнее alert(data) выводит: array(0){}. Что же... Немного изменил код на $.post("/modules/tconstructor.php", {'constructor[]': param}, function(data){ alert(data) }, "html"); И все заработало почти как нужно. Осталось на сервере при разборе POST переменной добавить что то типа $data = $_POST['constructor'][0]; Вот понимаю, что это костыли, но уже не до этого. Сделать бы, что-бы работало, а дальше поправим... В итоге код заработал и под IE на localhost. Заливаю на хостинг и ... ОПА! Тот же IE не работает! Т.е. на хостинге даже function(data){ alert(data) }, "html" не выполняется, если сервер возвращает любую не пустую строчку data. Это для меня вообще чудо! Но т.к. я в чудеса не верю, а верю в недостаток моих знаний в этом вопросе и кривость IE, то прошу вас помочь с решением данной проблемы.
  21. Ясно. Просто для меня (я не часто пишу клиентские скрипты) это не логично. По мне, так раз произошло событие, то почему бы не посмотреть по всему обновленному html, какой элемент подходит под данное действие. Ты говоришь, что нужно повесить функцию-обработчик на post. Я не представляю как это можно сделать... Но в данной ситуации я нашел выход (как и писал ранее): каждому селекту добавить onChange='change($(this))'. Надеюс, это близко к тому что Ты имел в виду. (Только почему ЭТО работает пока не очень уяснил.) Есть более изящный способ (что бы не множить в каждом селекте onChange='change($(this))' )?
  22. ...Вот еще проблема. Ожидается, что когда ajax вернет новый селект с классом construct_field, то и на него будет распространятся скрипт: $('.construct_field').change(function () { var param = new Array(); var current_field = $(this); current_field.prevAll().each(function () { param[$(this).attr('id')] = add_param($(this)); }); param[current_field.attr('id')] = add_param(current_field); $.post("/modules/tconstructor.php", {'constructor[]': param}, function(data){ building(current_field, data); }, "html"); }); Но вопреки моим ожиданием такого не происходит. Тем не менее если каждому селекту добавить onChange='change($(this))' и переписать скрипт: function change(_this){ var param = new Array(); var current_field = _this; current_field.prevAll().each(function () { param[$(this).attr('id')] = add_param($(this)); }); param[current_field.attr('id')] = add_param(current_field); $.post("/modules/tconstructor.php", {'constructor[]': param}, function(data){ building(current_field, data); }, "html"); }, то реакция нового селекта появится. Почему так?
  23. Слышал. Но как его в JavaScript'e применить в данном случае пока не догадался. Да и не было такой идеи. Попробую. Спасибо за идею и терпение.
  24. Так это первый вопрос начального поста. Так и получается , что этот массив преобразуется в строку. А я бы хотел, что бы этот вложенный массив и оставался массивом. Но это на принципиально и может быть даже приемлемым способом. Еще раз повторю, главный вопрос второй. Главное, что я не могу сделать, это сформировать ЧИСТЫЙ массив (или объект). Т.е. сейчас в $_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" } , а нужно array(3=>array(2), 4=>array(2,3)))). Что бы на сервере не удалять элементы типа [0]=> string(15) "[object Window]"
×
×
  • 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