[РЕШЕНО] [Помогите разобраться] Модуль вывода данных из БД Друпал7

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

Аватар пользователя surname surname 11 марта 2013 в 22:32

Всем привет! Помогите разобраться, как вывести данные из БД в таблице по кнопке. Создал форму, обработчик к кнопке(вывод из БД в таблице), но не пойму как вывести эту таблицу на той же странице.
Сильно не ругайте, я начинающий (студент Smile )
Вот код:

<?php
function aj_menu() {
$items = array();
$items['aj/form'] = array(
'title' => 'Table ID new AJ',
'page callback' => 'drupal_get_form',
'page arguments'=> array('aj_form'),
'description' => 'add & view id',
'access callback'=> TRUE,
);

return $items;
}
function aj_form($form, &$form_state) {

$form['add_id'] = array(
'#type' => 'textfield',
'#title' => 'Add id',
'#description' => 'Enter a new id',

);

$form['add_submit'] = array(
'#type' => 'submit',
'#value' => 'Send',
'#submit'=>array('aj_form_submit'),
);
$form['view_submit'] = array(
'#type' => 'submit',
'#value' => 'View',
'#submit'=>array('aj_submit_view'),
);

return $form;

}
//Добавление слова в базу
function aj_form_submit($form, &$form_state) {
//dpm('000');
$text = $form_state['values']['add_id'];
$id = db_insert('tableidaj')->fields(array(
'id' => $text,))->execute();

drupal_set_message('Идентификатор добавлен');
}
//Вывести
function aj_submit_view(){

$q=array();
$q = db_select('tableidaj','t');
$q->fields('t', array('nid','id'));
$res=$q->execute()->fetchAll();
//Таблица
$header = array('Number', 'ID');
$rows = array();
foreach ($res as $node) {
$rows[] = array($node->nid, $node->id);
}

$output = theme('table', array('header' => $header, 'rows' => $rows));
//dpm($output);

return $output;
}

Комментарии

Аватар пользователя greenmother@drupal.org greenmother@dru... 12 марта 2013 в 11:01

form_submit ничего не выводит, он обрабатывает результат отправки формы.
если нужно выводить на ту же страницу с формой, нужно к самой форме в aj_form добавить что-то вроде:

$form['#suffix'] = theme('table', ...);

Аватар пользователя greenmother@drupal.org greenmother@dru... 12 марта 2013 в 11:14

А, вам нужно чтобы только по кнопке View открывалось. Тогда нужно как-то запоминать, что была нажата View (т.к. страница, которая открывается после обработки формы, об этом ничего не знает). Например, устанавливать в aj_submit_view: $_SESSION['aj_view_table'] = 1;

А потом уже добавляем таблицу к форме в aj_form:
<?php
if ($_SESSION['aj_view_table'] == 1) {
// сначала формируем $header и $rows, потом:
$form['mytable'] = array(
'#theme' => 'table',
'#header' => $header,
'#rows' => $rows,
'#empty' => t('No results.')
);
unset($_SESSION['aj_view_table']);
}
?>