Помогите создать модуль сразу с несколькими материалами (информация переноситься из Access)

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

Аватар пользователя Alex_2005z Alex_2005z 23 июля 2011 в 21:38

Здраствуйте.
Помогите пожалуйста!
В Друпале я новичок. Есть моя база данных в Access, около 40 таблиц связанных между собой, в некоторых таблицах больше 1000 записей.
Необходимо построить сайт на основе этих таблиц.
Я выбрал Друпал 6.х, так как по нем больше документации. В Mysql я таблицы перенёс.
В файле.install таблицы прописал, shema их видит (что есть такие, и что они подключены к моему модулю), в файле .module в hook_node_info я прописал, появилось около 40 типов материалов (один тип материала на одну таблицу).
Подскажите, как связать типы материалов из таблицами (в первую очередь вывести данные таблиц на страницы сайта, а потом организовать их добавление, редактирование, удаление).
В справочных материалах, на форумах описано как создавать один материал на основе 1 таблицы, но у меня несколько взаимосвязанных таблиц :=(
Подскажите, какой порядок моих действий, какие хуки, модули использовать и как (несколько материалов, таблиц)
Жду помощи. Заранее спасибо

Комментарии

Аватар пользователя Alex_2005z Alex_2005z 23 июля 2011 в 22:22

RxB wrote:
Незнание SQL это беда, да

SQL немного знаю, по крайней мере необходимые запросы составлю, но где их вставлять? в каком хуке? как указать,что при этом типе материала необходимо использовать такой запрос, а при этом такой (все типы материалов, таблицы в одном модуле). Для подключения Вьюшки сказано указать базовую таблицу - КАКУЮ? Или можно указывать только связи между моими таблицами. Конечно можно все написать самому с нуля (сначала хотел), но хочется воспользоваться возможностями друпал - так как ограничен во времени...

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 23 июля 2011 в 22:49

"Alex_2005z" wrote:
SQL немного знаю, по крайней мере необходимые запросы составлю, но где их вставлять? в каком хуке? как указать,что при этом типе материала необходимо использовать такой запрос, а при этом такой (все типы материалов, таблицы в одном модуле). Для подключения Вьюшки сказано указать базовую таблицу - КАКУЮ? Или можно указывать только связи между моими таблицами. Конечно можно все написать самому с нуля (сначала хотел), но хочется воспользоваться возможностями друпал - так как ограничен во времени...

"Alex_2005z" wrote:
В справочных материалах, на форумах описано как создавать один материал на основе 1 таблицы, но у меня несколько взаимосвязанных таблиц :=(

всё точно так же.
Нет никаких хуков для материалов с двумя таблицами, тремя и даже четырьмя

Аватар пользователя Alex_2005z Alex_2005z 23 июля 2011 в 23:12

RxB wrote:
всё точно так же.
Нет никаких хуков для материалов с двумя таблицами, тремя и даже четырьмя

Например : http://xandeadx.ru/blog/drupal/223. Как мне описать здесь формы при нескольких таблицах (типах материалов)
* Форма добавления/редактирования альбома
*/
function album_form(&$form_state, $album = null)
{
$form['title'] = array(
'#title' => 'Название',
'#description' => 'Название альбома',
'#type' => 'textfield',
'#default_value' => $album ? $album->title : '',
'#required' => true,
);

$form['year'] = array(
'#title' => 'Год',
'#description' => 'Год выхода альбома',
'#type' => 'textfield',
'#default_value' => $album ? $album->year : '',
'#required' => true,
'#size' => 5,
);

$form['submit'] = array(
'#type' => 'submit',
'#value' => $album ? 'Сохранить' : 'Добавить',
);

if ($album)
{
$form['aid'] = array(
'#type' => 'value',
'#value' => $album->aid,
);
}

return $form;
}

/**
* Добавление/сохранение альбома
*/
function album_form_submit($form, &$form_state)
{
$album = array(
'title' => $form_state['values']['title'],
'year' => $form_state['values']['year'],
);

// сохранение
if (isset($form_state['values']['aid']))
{
$album['aid'] = $form_state['values']['aid'];
drupal_write_record('albums', $album, 'aid');
drupal_set_message('Альбом сохранён');
}
// добавление
else
{
drupal_write_record('albums', $album);
drupal_set_message('Альбом добавлен');
}

drupal_goto('album');
}