Перейти к содержимому


Дополнительное действие и javascript

вычисление яваскрипт javascript

Сообщений в теме: 10

#1 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 14 Февраль 2014 - 10:58

Хотел сделать группировку записей по дополнительному действию.
Мысль была такая.
Сделать Доп.действие с опцией В текущем окне. Через javasript запустить ajax, который создаст запись в таблице Группа, получить id созданной записи. Далее передать его в вычисление. Вопрос только КАК ЭТО СДЕЛАТЬ? - это первый вопрос.
Реализовал выше написанное до момента понимания. Вписал в поле код с ajax. Окошко выскакивает, группа создается. Далее ничего не происходит. Вычисление на php не отрабатывает.
ЧТО НЕ ТАК? - это второй.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#2 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Февраль 2014 - 11:13

В документации вроде описано, что javascript в настройках доп.действия, который вызывается при нажатии на кнопку, должен возвращать true, для дальнейшего запуска собственно доп.действия. В этом и заключается основная функция js в данном месте: в случае необходимости отменить нажатие кнопки. Судя по всему у вас возврата true нет, т.к. вы используете данный функционал нестандартно.

#3 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 14 Февраль 2014 - 11:25

Просмотр сообщенияCbCoder (14 Февраль 2014 - 11:13) писал:

В документации вроде описано, что javascript в настройках доп.действия, который вызывается при нажатии на кнопку, должен возвращать true
Просмотрел документацию по Доп.действию и по Javascript. Ничего не нашел подобного.
Добавил
return true;
. Вычисление запустилось., спасибо.
Я еще спрашивал есть ли возможность передать значение id, полученное из ajax, в вычисление php?

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#4 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Февраль 2014 - 11:32

Это уже вопрос не к функционалу программы КБ, а скорее обще-веб-программистский. Я знаю только один способ связи между javascript и php - это html-форма. Т.е. на странице должен заполнятся input элемент, передающий значение для дальнейшей обработки результатов формы в php-скрипт. В данном случае, к примеру, это может быть скрытое поле.

#5 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 14 Февраль 2014 - 12:09

Просмотр сообщенияCbCoder (14 Февраль 2014 - 11:32) писал:

Это уже вопрос не к функционалу программы КБ, а скорее обще-веб-программистский. Я знаю только один способ связи между javascript и php - это html-форма. Т.е. на странице должен заполнятся input элемент, передающий значение для дальнейшей обработки результатов формы в php-скрипт. В данном случае, к примеру, это может быть скрытое поле.
Если бы я вызывал через яваскрипт какой-нибудь обработчик на php - тогда все понятно.
Здесь все происходит за кулисами и как связаны поле javascript и поле с вычислениями на php - мне не ясно. Если в первое я внесу скрытое поле и отправлю его через post, а затем в поле php впишу $_REQUEST["id"] - я там что-нибудь поймаю? В данном случае меня интересует именно движок КБ.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#6 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Февраль 2014 - 12:33

Нет, а в чём данная ситуация отличается от описанной мною выше? Когда вызывается ваш яваскрипт, никакой отправки еще не происходит, форма просмотра/редактирования записи остается на месте, соответственно вы можете передать значение в любое поле на форме. Затем, после завершения выполнения яваскрипта (и при возврате им true, естественно), но до выполнения кода доп.действия, происходит сохранение записи. Соответственно, затем вы стандартно извлекаете значение поля через $line и используете его в своем коде.

#7 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 14 Февраль 2014 - 12:44

Просмотр сообщенияCbCoder (14 Февраль 2014 - 12:33) писал:

Когда вызывается ваш яваскрипт, никакой отправки еще не происходит, форма просмотра/редактирования записи остается на месте, соответственно вы можете передать значение в любое поле на форме.
Данный функционал разрабатывается для табличного режима просмотра. Именно поэтому использована опция В текущем окне, чтобы к доп.действию был доступ из таблицы. Вариант с передачей в поле не совсем верный.
Скорее всего придется использовать другие алгоритмы, например извлечь id по условию: последняя запись в таблице Группа, созданная текущим пользователем.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#8 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Февраль 2014 - 12:56

А зачем вообще вам тут нужен этот сложный "финт ушами" через ajax? Почему сразу, непосредственно в доп.действии, не "создавать запись в таблице Группа"?

#9 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 14 Февраль 2014 - 13:13

Просмотр сообщенияCbCoder (14 Февраль 2014 - 12:56) писал:

А зачем вообще вам тут нужен этот сложный "финт ушами" через ajax? Почему сразу, непосредственно в доп.действии, не "создавать запись в таблице Группа"?
Подскажите как?
Есть таблица Заявки сгруппированное по полю Группа. Мне нужно выделить в ней несколько записей, после чего нажать доп.действие Группировать - создается новая группа в таблице Группа (это делается один раз в поле javascript), во все выделенные записи в связанное поле Группа вносится значение id этой новой группы (это делается вычислением в php поле для каждой записи отдельно), страница перезагружается - все разложено по группам.
Пробовал использовать Массовое редактирование, но редактировать нужно одно поле, а выводится 30 независимо от настроек правил доступа.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#10 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Февраль 2014 - 14:52

То, что выполнение кода доп.действия идет для каждой строки, а добавить группу нужно только один раз, обходится достаточно легко и делалось неоднократно, как нами для своих нужд, так и в примерах на форуме. Есть как минимум 2 варианта решения этой ситуации:
  • Выполнять код доп.действия только один раз, выходя после первого выполнения по exit. При этом обработка выделенных записей идет в цикле, получая массив id выделенных строк через переменную $_REQUEST['sel'] (если не путаю)
  • Выполнять код.действия для каждой строки, как обычно. При этом добавление группы идет по условию в зависимости от флага, который передается дальше (флаг должен быть в глобальной переменной). После первого выполнения кода флаг заполняется и затем уже добавление группы обходится. В вашем случае в качестве флага можно использовать id добавленной группы, или отдельно его передавать также через global, как вам удобнее.


#11 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 16 Февраль 2014 - 00:06

Просмотр сообщенияCbCoder (14 Февраль 2014 - 14:52) писал:

Выполнять код.действия для каждой строки, как обычно. При этом добавление группы идет по условию в зависимости от флага, который передается дальше (флаг должен быть в глобальной переменной). После первого выполнения кода флаг заполняется и затем уже добавление группы обходится. В вашем случае в качестве флага можно использовать id добавленной группы, или отдельно его передавать также через global, как вам удобнее.
Про глобальные я как-то не подумал. Спасибо. Получилось.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения






Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных