[Programación] Sistema de pre-inscripción a eventos y jornadas
Arino Omar
programacion@lugro.org.ar
Thu, 15 Dec 2005 17:14:27 -0300
Hola amigos. No el proyecto no está muerto!!!!!!!
Después de las discusiones que se generaron en la lista en los días anteriores me puse a trabajar en la idea para poder esbozar la primer versión 0.1 de nuestro proyecto y como me cuesta explicar un poco lo que tengo en mente, decido mostrarlo con los hechos.
Hasta el momento tengo 2 archivos.
El primero es un archivo de configuración que se almacena en una subcarpeta llamada config.form
En esta carpeta encontramos un archivo llamado config.inc.txt
Este archivo esta en texto plano y tiene este formato: Cada línea representa un campo del formulario en orden de aparición, cada línea tiene 6 elementos separados por punto y como con la siguiente información
Nombre_del_campo;Titulo_del_campo;Valor_por_defecto;Expresión_regular_validación;Indicador_de_obligatorio;Largo_maximo
Este es un ejemplo que utilicé para la prueba:
apellido;Apellido;ingresa tu apellido;.+;true;20
nombre;Nombre;;.+;true;40
email;E-Mail;;.+@.+\..+;true;30
direccion;Dirección;;.+;false;60
cp;C.P.;;^[0-9]{4};false;4
localidad;Localidad;;.+;false;20
El segundo archivo es el script propiamente dicho. Por ahora arma el formulario y valida los datos. Todavía no graba nada.
El código comentado del mismo es el siguiente:
-----------------------------------------------------------------------
<?PHP
/*----------------------------------------------*/
/* Sistema de registración de asistentes y/o */
/* conferencistas, invitados, etc. a jornadas */
/* y/o eventos varios */
/*----------------------------------------------*/
/* Desarrolado y distribuido bajo licencia GPL */
/* 2005 por Omar Arino y miembros del grupo de */
/* usuario linux de Rosario (LUGRO) */
/* www.lugro.org.ar */
/* arinoo@sinectis.com.ar */
/* Versión 0.1.20051215 */
/*----------------------------------------------*/
/*----------------------------------------------*/
/* Función para mostrar el contenido del array. */
/* Parámetro de entrad un array */
/*----------------------------------------------*/
function MuestraArray($array)
{
print ("<pre>");
print_r ($array);
print ("</pre>");
}
/*----------------------------------------------*/
/* Inicio del script */
/* Leo el archivo de configuración del formu- */
/* lario. Este archivo posee 6 elementos separa-*/
/* dos por ";" */
/* 1 => nombre del campo */
/* 2 => Texto para identificar el campo */
/* 3 => valor por defecto */
/* 4 => expresión regular para validación */
/* 5 => informa si el campo es obligatorio(T/F) */
/* 6 => informa el largo maximo en caract. */
/* */
/* El archivo se almacena en el directorio: */
/* config.form y el nombre del archivo a leer es*/
/* config.inc.txt */
/* este archivo es de texto plano y cada elemen-*/
/* to está separado por punto y coma (;) */
/*----------------------------------------------*/
// Leo el archivo y lo almaceno en el array $campos
// cada entrada en este array es un campo para el
// formulario
$campos = file("config.form/config.inc.txt");
// verifico que este script alla recibido por el
// metodo post la variable "accition"
// esta variable indica que tipo de proceso debe
// realizarse.
// si no existe se muestra el formulario.
if (!$_POST['acction'])
{
/* Inicio la construcción del formulario con los*/
/* valores que contiene el archivo de config. */
// Inicializo el formulario
print ("<FORM ACTION=$_SERVER[PHP_SELF] METHOD=POST>\n");
// Inicializo la tabla
print("<TABLE BORDER = 1 ALIGN = CENTER CELLPADDING=1 CELLSPACING=0>");
// Cuento la cantidad de campos que va a tener
// el formulario y hago un bucle para cada elemento.
for ($n=0; $n <count($campos); $n++)
{
// cada elemento de configuración del campo lo almaceno
// en el array $elemento
$elementos=explode(";",$campos[$n]);
// Muesto la identificación del campo
print ("<TR>\n<TD>".$elementos[1].": ");
print ("</TD>\n<TD>");
// Armo el campo para ingresar el elemento pre definido
print("<INPUT TYPE=\"TEXT\" NAME=\"formulario[".$elementos[0]."]\"");
// Muestro el valor por defecto
print(" Value=\"".$elementos[2]."\"");
// Seteo el valor maximo de caracteres
print(" Maxlength=\"".$elementos[5]."\"");
// Seteo el largo maximo del campo en el formulario
print(" Size=\"".$elementos[5]."\"");
print(">");
print("</TD>\n</TR>\n");
}
// Creo un campo escondido con el valor para acction
print ("<TR><TD><INPUT TYPE=HIDDEN NAME=acction VALUE=verifica> </TD>\n");
// Agrego los botones para el formulario
print ("<TD ALIGN=RIGHT><INPUT TYPE=SUBMIT VALUE=Enviar><INPUT TYPE=RESET VALUE=Borrar></TD>\n</TR>\n");
print("</table>\n"); // cierro la tabla
print ("</FORM>\n"); // cierro el formulario
} else {
/* Inicio la validación de los dataos con los */
/* valores que contiene el archivo de config. */
// si existe la variable acction
// Llamo a la función MuestraArray con el array
// formulario que es recibido por el método Post
MuestraArray($_POST['formulario']);
// almaceno los valore recibidos por el método POST
// en una variable local
$formulario = $_POST['formulario'];
// Inicializo una tabla
print("<TABLE BORDER = 1 ALIGN = CENTER CELLPADDING=1 CELLSPACING=0>");
// Cuento la cantidad de campos que va a tener
// el formulario y hago un bucle para cada elemento.
for ($n=0; $n <count($campos); $n++)
{
// cada elemento de configuración del campo lo almaceno
// en el array $elemento
$elementos=explode(";",$campos[$n]);
// valido los datos ingresados contra la expresión regular
$valida = ereg($elementos[3], $formulario[$elementos[0]]);
if ($valida) {
print ("<TR>\n");
} else {
// en el caso de que no valide se marca de otro color
// la fila de la tabla
print ("<TR bgcolor = red>\n");
}
print ("<TD bgcolor = white>".$elementos[1].": ");
print ("</TD>\n<TD bgcolor = white>");
print("<INPUT TYPE=TEXT NAME=formulario[".$elementos[0]."]");
print(" Value=\"".$formulario[$elementos[0]]."\"");
// print("Maxlength=".$elementos[5]);
print("Size=".$elementos[5]);
if ($valida) {
// en el caso de que si valide se marca el campo del
// formulario como de solo lectura.
print(" Readonly>");
} else {
// se muestra un mensaje para que se reingrese el valor
print("> <b>Por favor ingrese un valor</b>");
}
print("</TD>\n</TR>\n");
}
print("</table><br>\n");
// Hipervinculo que lleva al inicio del script.
print ("<a href=".$_SERVER['SCRIPT_NAME'].">Volver</a>");
}
?>
--------------------------------------------------------------
Bueno, espero opiniones y mejoras de mis colaboradores, además me interesaría tener sus datos para poder agregarlos entre los desarrolladores y no llamarlos "miembros del lugro" ;)
Omar Arino