jQuery datepicker, php, mysql y las fechas en formato español

Veamos cómo trabajar con datepicker, php y la base de datos mysql para facilitar a nuestros usuarios insertar fechas en los formularios y a nosotros almacenarlos en la base de datos.

Veamos un caso particular a la hora de programar con jquery ui. El componente DatePicker nos proporciona una manera muy visual y eficiente de insertar fechas en nuestros formularios. Pero como muchos veteranos de la programación sabrán, hay un problema:

Las fechas en programación siguen el formato inglés: YYYY-mm-dd (2012-12-03). Aquí en España, y en muchos otros paises, las fechas son en formato dd-mm-YYYY (03-12-2012). Así pues, debemos permitir al usuario insertar el formato español y almacenarlo en formato inglés. Al recuperar los datos, debemos leerlos en inglés y mostrarlos al usuario en formato españo.

Añadir registros

Inicialmente debemos insertar el textbox que contendrá el desplegable del calendario

<input id="fecha" class="text ui-widget-content ui-corner-all" type="text" name="fecha" />

Ahora le toca el turno al JavaScript

/* Con jquery UI asignamos al textbox el datepicker para que salga el calendario */
$( "#fecha" ).datepicker({
defaultDate: "+1w",
numberOfMonths: 1,
dateFormat: 'dd-mm-yy',
});

Como podemos ver, el formato de la fecha cuando seleccionemos el día, será: 01-07-2012. Y este formato, Mysql no lo admite. Entonces, cómo hacemos para almacenar la fecha que nos viene en formato español, y debemos almacenarlo en formato inglés ? Con el siguiente código:

$fechaformatoingles= date('Y-m-d', strtotime($_POST['fecha'])));

Con la función strtotime, convertimos la fecha en formato timestamp. Posteriormente con la función date convertimos el timestamp anterior al formato deseado. En ese momento ya tenemos la fecha en formato inglés y que acepta Mysql

Mostrar los datos

Tenemos los datos almacenados en formato inglés: ‘2012-07-02’. Y queremos mostrarlos en formato español. Lo haremos con la función DATE_FORMAT de mysql.

SELECT DATE_FORMAT(fecha, '%d-%m-%Y') AS mifecha WHERE ID=1

Esto nos devolverá un registro con el campo ‘mifecha’ que contendrá la fecha en formato español. Atención al parámetro formato de DATE_FORMAT. La %Y indica que el año debe ser con cuatro dígitos. Si lo pones en minúscula, el año será de dos dígitos.

Bien, no voy a entrar en el código php para las consultas. Solo pretendo mostrar cómo trabajar con las fechas en español y los objetos datepicker de jquery.

Videotutorial DatePicker

Espero que este ejemplo os facilite un poco más la vida a la hora de trabajar con datepicker, php, mysql y las fechas.


Más información