Здравствуйте.
Есть таблицы "Заявки, "Счета". В "Заявках" есть связь с таблицей "Счета" с автонумерацией при добавлении записи. Из вот этой темы:
http://clientbase.ru...58&st=0&p=28060
я хочу взять код добавления новой записи в таблицу "Счета" и проставление ID этой записи в Заявке. Вопрос в следующем: если я отмечу несколько записей в списке Заявок и выберу доп. действие "Создать счет", то скорее всего, каждой записи будет назначен новый счет. Нужно сделать так, чтобы всем отмеченным записям доп. действие проставило всего 1 новый ID счета.
Я предполагаю, что это можно сделать каким-то образом через global переменную или сессию, но тогда как отслеживать её состояние, чтобы эта переменная обновлялась? Либо, наверное, есть какой-то массив с отмеченными записями.


Одно доп. действие на несколько записей
Автор SpectralEye, 08 февр. 2016 11:08
Сообщений в теме: 6
#1
Отправлено 08 Февраль 2016 - 11:08
#2
Отправлено 08 Февраль 2016 - 11:56
Такие темы на форуме тоже есть (как раз относительно глобальной переменной или использования массива выделенных, что является по сути двумя вариантами реализации), можно поискать.
#3
Отправлено 08 Февраль 2016 - 15:45
CbCoder (08 Февраль 2016 - 11:56) писал:
Такие темы на форуме тоже есть (как раз относительно глобальной переменной или использования массива выделенных, что является по сути двумя вариантами реализации), можно поискать.
$doc = data_table("Документы","id={ID}"); // текущая выделенная запись в договорах if (!$nakl_id) { // проверяем была ли уже создана накладная или нет (переменная передается из предыдущего исполнения кода) // если нет - создаем; одновременно появляется переменная $nakl_id с id созданной накладной $nakl['Поле1'] = ...; ..... другие поля $nakl_id = insert_query($nakl,"Накладная"); } // добавляем запись в подтаблицу Накладной: $pod['Накладная'] = $nakl_id; // связь с род.таблицей ... другие поля insert_query($pod,"Подтаблица накладной");
Принцип понятен. Непонятно следующее: переменная $nakl_id сохраняется с момента выполнения доп. действия с первой записью, а потом она остаётся или исчезает после выполнения доп. действия с последней записью? Если второй случай, тогда ничего не надо изобретать и можно не контролировать эту переменную, а просто использовать её при каждом нажатии кнопки "Доп. действие".
#4
Отправлено 08 Февраль 2016 - 17:24
А ссылка на тему где? Форум существует с 2009 года, с тех пор очень много могло изменится, причем кардинально. Например, я не вижу объявления переменной $nakl_id глобальной. Если код старый, он может и не работать, хотя сам алгоритм актуален. Лучше искать в наиболее свежих темах.
#5
Отправлено 09 Февраль 2016 - 09:16
CbCoder (08 Февраль 2016 - 17:24) писал:
А ссылка на тему где? Форум существует с 2009 года, с тех пор очень много могло изменится, причем кардинально. Например, я не вижу объявления переменной $nakl_id глобальной. Если код старый, он может и не работать, хотя сам алгоритм актуален. Лучше искать в наиболее свежих темах.
Поискал по разным словосочетаниям, я больше на эту тему полезного ничего не нашёл. Алгоритм и объявление переменной глобальной я понимаю, но как мне отследить изменение этой глобальной переменной? Если я выделю несколько записей, то, теоретически, при выполнении доп. действия с последней записью я должен сбросить переменную с номером счета, чтобы в следующий раз, при новой порции заявок создать новую накладную. Или я что-то неправильно говорю?
#6
Отправлено 09 Февраль 2016 - 09:27
Да, неправильно говорите. Любые переменные уничтожаются после работы скрипта, так что в конце сбрасывать ничего не надо, само пропадет. Создание же переменной в коде выше проверяется. По идее все что вам нужно - это добавить глобализацию $nakl_id, в 2011 году видимо еще не было ограничения области видимости в вычислениях, сейчас оно точно есть.
#7
Отправлено 09 Февраль 2016 - 09:39
CbCoder (09 Февраль 2016 - 09:27) писал:
Да, неправильно говорите. Любые переменные уничтожаются после работы скрипта, так что в конце сбрасывать ничего не надо, само пропадет. Создание же переменной в коде выше проверяется. По идее все что вам нужно - это добавить глобализацию $nakl_id, в 2011 году видимо еще не было ограничения области видимости в вычислениях, сейчас оно точно есть.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных