Использовать базу данных? Либо как то ещё?

Главные вкладки

Аватар пользователя shlop shlop 11 декабря 2017 в 15:34

Здравствуйте, подскажите пожалуйста. Вот у меня есть webform которую заполняют определенные роли(пользователи). Исходя из этих данных пользователи могут формировать отчёт в PDF, а сам отчёт - это некие таблицы, и значения в этих таблицах формируются (рассчитываются) исходят из значений результатов webform. И так как некоторые значения в этих таблицах(отчётах) рандомные, то стоит задача, сохранять эти значения. Что бы при последующем обращении к отчёту все значения были те же, что и первый раз.

Собственно сама логика такая: есть два пункта меню "Новая поверка" - это где webform и "Мои поверки" - это где список отправленных webform пользователя. Пользователь зашел в "Новую поверку" заполнил форму, нажал кнопку отправить, у него посчитались все значения для всех таблиц которые в отчёте PDF и записались в БД. Затем он зашел в "Мои поверки" нашел свою отправку, нажал по ссылке "сформировать PDF" и в самом уже PDF получил посчитанные значения из БД. И они собственно вставились в нужные места

сам PDF - это модуль,собственно что делает модуль - это только создает страницу и на этой странице открывает PDF файл

<?php
function genpdf_menu() {
    
$items = array();
    
$items['pdfgen'] = array(
    
'title' => 'Заголовок страницы',
    
'page callback' => 'functpdf',
    
'type' => MENU_NORMAL_ITEM,
    
'access callback' => TRUE,
    );
    return 
$items;
    }
?>

Изначально было по другому - так как пункт меню "Мои поверки" это представление(Views) я в нём делал поле "Отправленные формы: Ссылка Прочитать" и называл эту ссылку - "Сформировать PDF", по нажатию на эту ссылку переходил на страницу (webform-submission.tpl.php) где из массива $renderable получил отправленные поля webform и записывал их в сессию, а потом в этом файле создавал ссылку
<a href="/pdfgen" target="_blank">Создать отчёт PDF</a> и потом из сессии, на странице модуля (pdfgen) их получал и вставлял в нужные места, и считал. Но проблема в том, что это нигде не сохраняется, и при повторном обращении некоторые значения были уже другие. Из за рандома.

Вот сам вопрос в том: что база данных это то ли решение? Либо можно как то по другому?

А если база данных то подскажите пожалуйста, вот допустим пользователь заполнил webform в пункте "Новая поверка", после нажатия на кнопку отправить, посчитались все значения нужные для отчёта, и записались в БД. Пользователь зашел в "Мои поверки" нашел свою отправленную webform и как вот теперь сформировать PDF? Добавить такую же ссылку как и раньше, которая будет вести на страницу модуля (PDF) ? А как потом в модуле получать данных из БД? Соответствующие выбранной отправке.
Были мысли по поводу выборки из базы данных. Но тут есть одна сложность в том что в этом PDF отчёте, 5 таблиц куда должны записываться значения, соответственно нужно 5 таблиц в БД. Допустим, вот пользователь сделал отправку webform, с ID 001, расчёты все записываются в базу данных тоже с ID 001 и как нибудь делать выборку по ID . Подскажите пожалуйста, каким образом можно сделать, или другой вариант какой нибудь выборки из БД соответствующих данных
Заранее благодарен за Ваш ответ!

Комментарии

Аватар пользователя bumble bumble 11 декабря 2017 в 15:59

shlop wrote:

переходил на страницу (webform-submission.tpl.php) где из массива $renderable получил отправленные поля webform и записывал их в сессию, а потом в этом файле создавал ссылку .. и потом из сессии, на странице модуля (pdfgen) их получал и вставлял в нужные места, и считал

Неправильный бутерброд...
Нельзя так делать - в шаблонах не должно быть логики.

shlop wrote:

база данных это то ли решение?

То.

shlop wrote:

сложность в том что в этом PDF отчёте, 5 таблиц куда должны записываться значения, соответственно нужно 5 таблиц в БД. Допустим, вот пользователь сделал отправку webform, с ID 001, расчёты все записываются в базу данных тоже с ID 001 и как нибудь делать выборку по ID

Читайте про ДЖОИНЫ (JOIN) в SQL.