Necesito una guía para elaborar una vista donde muestre tabla en un modulo que estoy creando.

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
yemore's picture

Necesito listar la información que tengo almacenada en la base de datos, la cual había entrado con anterioridad. Además de ello permitir la opción de editar y eliminar en cada una de las filas. Lo otro es que el caso de que tenga que listar muchos elementos pueda paginarlos. Podría alguien, hacer el favor de indicarme un tutorial o las funciones que necesito para conseguir esto. Seria algo como esto:

| Provincias |

| La Habana | Editar | Eliminar

| Matanzas | Editar | Eliminar

| Pinar del Río | Editar | Eliminar

| Artemisa | Editar | Eliminar

| Mayabeque | Editar | Eliminar

| Cienfuegos | Editar | Eliminar

| … | … | …

1  <<  <1 2 3...>  >> 8

Comments

Hola Yemore Aquí una guía

-enzo-'s picture

Hola Yemore

Aquí una guía parcial de lo que preguntas http://www.7sabores.com/blog/crear-tablas-modulos-personalizados-drupal-7

enzo - Eduardo Garcia

Gracias pero no es eso lo que

yemore's picture

Gracias pero no es eso lo que necesito, no me supe explicar bien disculpa. Ya yo tengo las tablas creadas en la base de datos, con la información almacenada. Lo que necesito es mostrar esa información a manera de tabla. Una vista en la que muestre una tabla con la información almacenada.

Theme table

hatuhay's picture

Espero esto te sirva:

<?php
function league_event_type_admin_list() {
 
$event_types = league_event_load_event_types('all');
 
$header = array(t('ID'), t('Type'), t('Label'), t('Points'), t('Icon'), t('Edit'));
 
$rows = array();
  foreach (
$event_types as $event_type) {
   
$rows[] = array(
     
$event_type->id,
     
$event_type->type,
     
$event_type->label,
     
$event_type->points,
     
$event_type->class_icon,
     
l('Edit', 'admin/league/settings/tables/league_event_type/edit/' . $event_type->id
   
));
  }
  return
theme('table', array(
   
'header' => $header,
   
'rows' => $rows,
   
'attributes' => array('class' => array('league-event-type-admin-list'))
  ));
}
?>

Views

hatuhay's picture

También puedes integrar tu tabla a views, más trabajo pero mejor resultado: http://drupal.stackexchange.com/questions/36912/using-views-with-a-custo...

¿Por lo que ví en tu

daneelcm's picture

¿Por lo que ví en tu solicitud quieres hacer una paginación? Si solo necesitas mostrar los datos con el uso de theme_table resuelves como te demuestra @hatuhay arriba (puedes ver más opciones aquí: https://api.drupal.org/api/drupal/includes!theme.inc/function/theme_table/7), pero si además quieres hacerlo con una paginación ya son otros 5 pesos.

Aqui te muestro un ejemplo de una tabla con paginación y ordenamiento en las columnas por si te sirve:

<?php
  $header
= array(
   
'artcode' => array('data' => t('Articulo'), 'field' => 'v.artcode', 'sort' => 'asc'),
   
'descart' => array('data' => t('Descripcion Art.'), 'field' => 'i.description'),
   
'magcode' => array('data' => t('Codigo Alm.'), 'field' => 'v.magcode'),
   
'descalm' => array('data' => t('Descripcion Alm.'), 'field' => 'm.naam'),
   
'maglok' => array('data' => t('Localizacion'), 'field' => 'v.maglok'),
  );

 
$query = db_select('voorrd', 'v');
 
$query->join('items', 'i', 'v.artcode = i.ItemCode');
 
$query->join('magaz', 'm', 'v.magcode = m.magcode');
 
$query->condition('v.maglok', '', 'IS NOT NULL');
 
$query->fields('v', array('artcode', 'magcode', 'maglok'));
 
$query->fields('i', array('description'));
 
$query->fields('m', array('naam'));
 
$query = $query->extend('TableSort')
        ->
extend('PagerDefault');
 
$query->limit(20)
        ->
orderByHeader($header);
 
$rs = $query->execute();

 
$row = array();
 
$arts = $alms = array('' => '');
  foreach (
$rs as $item) {
   
$row[$item->artcode . '-' . $item->magcode] = array(
     
'artcode' => $item->artcode,
     
'descart' => $item->description,
     
'magcode' => $item->magcode,
     
'descalm' => $item->naam,
     
'maglok' => $item->maglok,
    );
  }
?>

Chicos mil gracias

yemore's picture

Chicos mil gracias, me he demorado en contestar porque no tenía acceso, pero al fin lo conseguí.

function municipio_listar(){
$header = array('Municipio', 'Edición', 'Eliminación');

$query = db_select('municipio', 'nom_municipio')
        ->fields('nom_municipio')
        ->extend ('PagerDefault')
        ->limit(10)
        ->execute()
        ->fetchAll();     

foreach ($query as $try){
    $rows[] = array(
        $try->nom_municipio,
        l('Editar','/recursos_humanos/provincia/editar/'.$try->id_municipio),
        l('Eliminar','/recursos_humanos/provincia/Eliminar/'.$try->id_municipio),
    );
}

$build ['table'] = array(
    '#theme' => 'table',
    '#header' => $header,
    '#rows' => $rows,
);

$build ['pager'] = array(
    '#theme' => 'pager',
);

return $build;

}

Otra cosita

yemore's picture

Déjenme preguntarle otra cosita sobre la creación de tablas para mostrar datos. Con theme() puedo crear tablas simples, por lo que entendí en la página de Drupal. Pero si quisiera hacer algo más complejo como esto:

XXX
XXX XXX XXX
xxxx xxxx xxxx xxxx xxxx xxxx
xxxx xxxx xxxx xxxx xxxx xxxx