theme table display
http://alvinalexander.com/drupal/drupal-7-form-theme-table-module-example<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
* form.
*/
function add_notification_features_form($form, &$form_state) {
$n_fid = arg(3);
if (arg(2) == 'edit' && is_numeric($n_fid) && ($n_fid > 0)) {
$query = db_select('notification_features', 'nf');
$query->fields('nf', array('nf_id', 'nf_name', 'nf_description', 'min_version', 'created'))
->condition('nf_id', $n_fid);
$stored_data = $query->execute()->fetchAll();
$form['nf_id'] = array(
'#type' => 'hidden',
'#default_value' => $stored_data[0]->nf_id,
);
}
$form['nf_name'] = array(
'#type' => 'textfield',
'#title' => t('Name'),
'#size' => 60,
'#required' => TRUE,
'#default_value' => isset($stored_data[0]->nf_name) ? $stored_data[0]->nf_name : '',
);
$form['nf_description'] = array(
'#type' => 'textarea',
'#title' => t('Description'),
'#attributes' => array('maxlength' => 180),
'#required' => TRUE,
'#default_value' => isset($stored_data[0]->nf_description) ? $stored_data[0]->nf_description : '',
);
$form['min_version'] = array(
'#type' => 'textfield',
'#title' => t('Min Version'),
'#size' => 6,
'#element_validate' => array('element_validate_number'),
'#required' => TRUE,
'#default_value' => isset($stored_data[0]->min_version) ? $stored_data[0]->min_version : '',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Save Feature',
);
$form['show_all'] = array(
'#type' => 'markup',
'#markup' => list_all_notification_features(),
);
return $form;
}
function add_notification_features_form_submit($form, &$form_state) {
if (isset($form_state['values']['nf_id']) && !empty($form_state['values']['nf_id'])) {
update_notification_features($form_state['values']['nf_id'], $form_state['values']['nf_name'], $form_state['values']['nf_description'], $form_state['values']['min_version']);
}
else {
insert_notification_features($form_state['values']['nf_name'], $form_state['values']['nf_description'], $form_state['values']['min_version']);
}
}
function list_all_notification_features() {
$header = array(
array('data' => '#', 'field' => 'nf_id','sort' => 'DESC'),
array('data' => 'Name', 'field' => 'nf_name'),
array('data' => 'Description', 'field' => 'nf_description'),
array('data' => 'Min Version', 'field' => 'min_version'),
array('data' => 'Created', 'field' => 'created'),
);
$query = db_select('notification_features', 'nf')->extend('PagerDefault')->extend('TableSort');
$query->fields('nf', array('nf_id', 'nf_name', 'nf_description', 'min_version', 'created'))
->orderByHeader($header)
->limit(3);
$stored_data = $query->execute();
$rows = array();
foreach ($stored_data as $row) {
$rows[] = array(
l($row->nf_id, 'admin/add-notification-features/edit/' . $row->nf_id),
l($row->nf_name, 'admin/add-notification-features/edit/' . $row->nf_id),
$row->nf_description,
$row->min_version,
$row->created
);
}
$output = theme('table', array('header' => $header,
'rows' => $rows));
# add the pager
$output .= theme('pager');
return $output;
}
function insert_notification_features($nf_name, $nf_description, $min_version) {
db_insert('notification_features')
->fields(array(
'nf_name' => $nf_name,
'nf_description' => $nf_description,
'min_version' => $min_version,
'created' => time(),
))
->execute();
}
function update_notification_features($nf_id, $nf_name, $nf_description, $min_version) {
db_update('notification_features')
->fields(array(
'nf_name' => $nf_name,
'nf_description' => $nf_description,
'min_version' => $min_version,
'created' => time(),
))
->condition('nf_id', $nf_id, '=')
->execute();
}