Jugando con Drupal: datos externos
Lo primero será crear un formulario con los datos requeridos, pongamos como ejemplo una competición de Rallye, donde queremos saber como mínimo Nombre, Coche y Grupo del inscrito para la prueba:
<?php // Creación 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 inscripción se ha completado satisfactoriamente.')); } ?>Usamos la API de Drupal para crear los formularios y guardamos el envío en la tabla mis_inscritos que tiene un esquema sencillo (id, piloto, coche, grupo, club). La ejecución 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 página con contenido PHP y una conexión 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 más óptima, pero solo pretende ser un ejemplo de almacenamiento y listado de datos externos en Drupal. Como siempre, mejoras son bienvenidas.
Comentarios
He encontrado esta web buscando otra movida, pero me ha gustado mucho y la añado a mis bookmarks...
Muchas Gracias
muchas gracias
user warning: Table 'jcom_drpl1.mis_inscritos' doesn't exist query: SELECT * FROM mis_inscritos in /home/jcom/public_html/web/includes/database.mysql.inc on line 172.
y dp cuando pongo los datos en la primera y pongo "inscribirse":
user warning: Table 'jcom_drpl1.mis_inscritos' doesn't exist query: INSERT INTO mis_inscritos VALUES ('','juanca','nakar','grupoa','dds') in /home/jcom/public_html/web/includes/database.mysql.inc on line 172.
quizás me puedes ayudar con eso, ya que me sería util, uso drupal 51 gracias de antemano.
db_query("INSERT INTO mis_inscritos VALUES ('','$form_values[piloto]','$form_values[coche]','$form_values[grupo]','$form_values[club]')");
Debe ser:
db_query("INSERT INTO mis_inscritos VALUES (null,'$form_values[piloto]','$form_values[coche]','$form_values[grupo]','$form_values[club]')");
Y todo salio perfecto me registra en la tabla y luego hago un listado me sale ok.
Pero como podria hacer para poder eliminar y modificar un registro, seleccionando cualquiera de la tabla listada.
Saludos
Saludos
Gracias
Saludos ^^
Estoy intentando seguir el tutorial y mi gran duda es:
donde tengo que poner estos archivos, me explico, yo creo dos archivos php con el contenido que pones arriba, pero
donde tengo que dejar fisicamente estos archivos para poder ejecutarlos con drupal.
Soy nuevo y estoy perdido en el tema.
Gracias.
user warning: Table 'intr.mis_inscritos' doesn't exist query: INSERT INTO mis_inscritos VALUES ('','juanca','nakar','grupoa','dds') in /home/intr/public_html/web/includes/database.mysql.inc on line 172.
agradecería mucho la ayuda, vi un comentario del alguien que le pasó algo semejante pero no hay respuesta...
ahh no me sale ninugun error a mi parecer el $form_values[piloto] no tiene valor utilizo el drupal 6.13