Está en la página 1de 3

Jugando con Drupal: datos externos

20.Mar.2007 ~ 12 Comentarios ~ 5492 Lecturas Es posible que no siempre Drupal cumpla nuestras expectativas y queramos almacenar datos extra en una estructura distinta a la que viene de casa. Un ejemplo prctico sera un formulario de inscripciones. Supongamos que a la hora de organizar un evento (una competicin, una carrera, una manifestacin) necesitamos tener un listado de gente inscrita con cierta informacin extra (edad, grupo en el que se correr, peso...). Imagino que, como siempre, habr mil formas de resolver el problema, vamos por la ms simple: Lo primero ser crear un formulario con los datos requeridos, pongamos como ejemplo una competicin de Rallye, donde queremos saber como mnimo Nombre, Coche y Grupo del inscrito para la prueba:
<?php // Creacin de nuestro formulario function test_form() { $form['piloto'] = array( '#type' => 'textfield', '#title' => t('Piloto'), '#size' => 30, '#maxlength' => 64, '#description' => t('Nombre completo del participante'), '#required' => TRUE, ); $form['coche'] = array( '#type' => 'textfield', '#title' => t('Coche'), '#size' => 30, '#maxlength' => 64, '#description' => t('Coche con el que participar'), '#required' => TRUE, ); $form['grupo'] = array( '#type' => 'select', '#title' => t('Grupo'), '#default_value' => variable_get('timer', 259200), '#options' => array ( '' => t('Seleccione grupo'), 'grupoa' => t('Grupo A'), 'grupob' => t('Grupo B'), 'grupoc' => t('Grupo C'), ), '#description' => t('Seleccione el grupo'), '#required' => TRUE, ); $form['club'] = array( '#type' => 'textfield', '#title' => t('Club'),

);

'#size' => 30, '#maxlength' => 64, '#description' => t('Club'), '#required' => TRUE,

$form['hidden'] = array('#type' => 'value', '#value' => 'is_it_here'); $form['submit'] = array('#type' => 'submit', '#value' => t('Inscribirse')); return $form; } // Llamamos al render del formulario function test_page() { return drupal_get_form('test_form'); } $out = test_page(); echo $out; // Guardamos en tabla 'mis_inscritos' function test_form_submit($form_id, $form_values) { db_query("INSERT INTO mis_inscritos VALUES ('','$form_values[piloto]','$form_values[coche]','$form_values[grupo]','$ form_values[club]')"); drupal_set_message(t('Su inscripcin se ha completado satisfactoriamente.')); } ?>

Usamos la API de Drupal para crear los formularios y guardamos el envo en la tabla mis_inscritos que tiene un esquema sencillo (id, piloto, coche, grupo, club). La ejecucin es correcta y comprobamos que los datos se guardan satisfactoriamente. Una vez hemos acabado el nodo del formulario, crearemos otro nodo para el listado de inscritos. Ser una pgina con contenido PHP y una conexin normal -siguiendo la API de Drupal- a base de datos, exponiendo los registros en una tabla:
<?php $result=db_query("SELECT * FROM mis_inscritos"); echo "<table><tr> <td>Piloto</td> <td>Coche</td> <td>Grupo</td> <td>Club</td></tr>"; while ($data = db_fetch_array($result)) { echo "<tr> <td>$data[piloto]</td> <td>$data[coche]</td> <td>$data[grupo]</td> <td>$data[club]</td></tr>"; } echo "</table>"; ?>

Seguro que ni es la mejor forma de maquetarlos ni la ms ptima, pero solo pretende ser un ejemplo de almacenamiento y listado de datos externos en Drupal. Como siempre, mejoras son bienvenidas.

También podría gustarte