Skip to content

Como trabajar con fechas de php y mysql, sencillo

enero 20, 2011

Si estas peleando, con tu código tratando de solucionar un error a la hora de insertar información de fecha(s) en una base de datos de mysql con php y resulta que son diferentes los formatos y eso te genera un error, pues tienes que leer este artículo para que aprendas como trabajar con fechas de php y mysql, sencillo.

Por ejemplo, si tienes un formulario en HTML que solicita una fecha al usuario en formato día-mes-año y al ser enviada por el método POST e interpretada así por el código PHP, marca un error al intentar insertarla en la base de datos o bien inserta un dato erróneo.

O en las ocasiones que requieres obtener la fecha mediante la función DATE(),  para guardar la última actualización realizada  a ese registro o bien mostrar la fecha obtenida de una consulta a una base de datos, pero no en el formato año – mes – dia como lo devuelve la consulta si no que mostrarla en el formato día – mes – año que es el mas común.

Bueno, para estos casos y otros tantos, la solución es bastante sencilla gracias a la función explode() . Voy a explicarte con un ejemplo:

Primero: la base de datos sobre la que voy a trabajar el ejemplo se llama “pruebas” y contiene una tabla llamada “fechas” con los campos id, nombre y fecha.

Segundo: ahora vamos a generar un archivo HTML, que se va a encargar de mandar llamar el código ya sea para insertar o mostrar datos de la tabla fechas (esto para ver como solucionar el problema de las fechas en ambos casos) y lo llamaremos “index.php”. El código es el siguiente:

<html>

<title>https://programarenphp.wordpress.com</title&gt;

<body>

<form name=”form” method=”post” action=”procesa.php”>

Nombre:<input type=”text” name=”nombre” /><br />

Fecha (formato dia-mes-a&ntilde;o):<input type=”text” name=”fecha” /><br />

<input type=”submit” value=”insertar” name=”seleccion” />

<input type=”submit” value=”mostrar” name=”seleccion”/>

</form>

</body>

</html>

Tercero: ahora vamos a poner el script del que se va a encargar de insertar y mostrar los datos de fecha con el formato necesario, en un archivo que llamaremos “procesa.php” . Veamos el código:
<?php

 $con = mysql_connect(“localhost”,”root”,”pass”);

 //para comprobar que no haya errores

 if (! $con){die (“ERROR AL CONECTAR CON MYSQL: “.mysql_error());}

 $bd = mysql_select_db(“pruebas”,$con);

 //para comprobar que no haya errores

 if(! $bd ){die (“ERROR AL CONECTAR CON LA BD: “.mysql_error());}

 //////////////////////////////////////////////////////////////////

 if ($_POST[‘seleccion’] == ‘insertar’){ //comprobamos si se le dio click a insertar

 //en la variable fecha se guarda un arreglo donde

 //$fecha[0] tiene el dia $fecha[1] el mes y $fecha[0] el año 

 $fecha = explode(“-“,$_POST[‘fecha’]);

 $sql = “INSERT INTO fechas VALUES (”,'”.$_POST[‘nombre’].”‘,'”.$fecha[2].”-“.$fecha[1].”-“.$fecha[0].”‘);”;

 $result = mysql_query ($sql);

if (! $result ) echo “error al insertar datos “.mysql_error();

else echo “datos insertados correctamente<br /><a href=’index.html’>Volver</a>”;

 }else{

                 $result = mysql_query(“SELECT * FROM fechas”,$con);

                 while ($campo = mysql_fetch_row($result)){

                                $fecha = explode(“-“,$campo[2]);//usamos explode para dividir fecha en un array con 3 elementos

                                echo “<br />”.$campo[1].”–>”.$fecha[2].”/”.$fecha[1].”/”.$fecha[0];

                 }

                 echo “<a href=’index.html’>Volver</a>”;

 }

 ?>

La función explode toma la cadena y la divide en un arreglo cuyos elementos son definidos por un delimitador en este ejemplo esa función la hace el “- (guión medio)“. Puedes descargar este ejemplo dándole click aquí.

Como siempre esperando que sea de utilidad este artículo, te invito a que me dejes tus comentarios, tu dudas, tus frustraciones de este extraordinario lenguaje de programacion en php.

Atte, tu amigo
Salvador López

Anuncios

From → bases de datos, Tips

7 comentarios
  1. carlos hinrichsen permalink

    no seria mala idea que se viera ACTUALIZAR las fechas con los famosos js emergentes, si es para cargar fechas y no puedo modificar una vez insertado, para que lujo nada mas….eso seria muy interezante

  2. willy permalink

    tengo un problema que no logro solucionar, estoy tratando de hacer una consulta por fechas me pidieron ingresar x un calendario (d-m-y), pero mi BD esta en Y-m-d no logro hacer esa consulta, por favor si me pudieran ayudar.

  3. Edith permalink

    muy bien la explicacion, nosotros estamos programando en PHP tenemos un problema en la fecha, queremos que se registre el dia, mes, año…. pero solo nos aparece el año al momento de cargar la pagina web y en la tabla de el servidor PHPMYADMIN nos aparece igual , no sabemos como hacerlo

  4. muller permalink

    muy bueno pero a eso tambien tengo que agregarle la conexion con la bas e de datos?….todo esto va en una pagina especifica.php o hay que crear 3 paginas.php.

    • Pues si necesitas aplicarlo como lo explico si necesitarías un archivo mas donde guardes las configuraciones de conexión, aunque si es aplicar el formato de la fecha lo único que debes ver bien es como utilizar la función (explode).

  5. Felix Piñate permalink

    Salvador,

    Excelente la explicación, solo faltaría para que este completa, la validación de la fecha, tal como no permitir días mayores a 31, ver si el año es bisiesto y cosas por el estilo.

    • Muy buena observación muchas gracias, estaré trabajando en ello para poder explicarlo de forma sencilla y como dices el trabajo iniciado quede mas completo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: