jueves, 12 de diciembre de 2013

Web form con html5, php, jQuery, archivos adjuntos y MySQL como RDBMS

Para que un formulario html permita la carga de archivos adjuntos debe tener seteado el siguiente atributo:

<form method="post" action="cargar.php" enctype="multipart/form-data">

Html5 brinda, entre muchas otras innovaciones, la posibilidad de agregar controles de contenido del tipo number que permiten fijar valores iniciales, mínimos y máximos, e intervalos de salto:



Si se necesita utilizar una lista desplegable que permita la selección de varios ítems de manera simultánea, se debe agregar el atributo multiple="multiple" e indicar que el resultado de la selección estará compuesto por un arreglo de elementos:

<select name="partes[]" multiple="multiple">


Para que el archivo cargar.php pueda procesar estos valores correctamente, se le debe indicar que separe los elementos provenientes del formulario con un separador a nuestra elección. En el caso siguiente se muestra el uso de la coma-espacio para cumplir esta función:

join(', ', $_POST['partes'])

Resultando en:
Cabeza, Cuello, Hombro

(Se puede asignar el resultado de esa función a una variable que posteriormente será la que se utilice para la consulta SQL).

Para evitar errores al ingresar fechas y horas, se puede utilizar el excelente plugin de jQuery escrito por Trent Richardson (distribuido bajo licencia GPL). El siguiente ejemplo utiliza la función datetimepicker para desplegar un calendario con fecha y hora, o con almanaque solamente, cuando un control con id datetime o class datepicker recibe foco, respectivamente (debe colocarse dentro de los tags de head):


Ejemplo de calendario con fecha y hora

Ejemplo de calendario con fecha únicamente

El formato de la fecha puede preformatearse mediante Javascript en el lado del cliente (ver ejemplo anterior) o hacerse posteriormente en el lado del servidor utilizando PHP utilizando las funciones date y strtotime (string to time):
$fecha_accion1 = date("Y-m-d H:i:s", strtotime($_POST['fecha_accion1']));

No hay comentarios:

Publicar un comentario