Si todavía no encuentras como solucionar el error que te da  al tratar de insertar fechas obtenidas  con el código php en la base datos, porque el formato es distinto, continúa leyendo este articulo para que veas que en php con mysql el manejo de fechas es más fácil de lo que crees.

Este error  es común  cuando necesitas obtener de un formulario la fecha ingresada por el usuario en formato dia-mes-año y esta fecha debe ser interpretada con algún script de PHP para luego insertarla en la base de datos, si tratamos de insertarla así como viene nos va a dar un error ya que en la base de datos las fechas cortas se guardan en el formato año-mes-día.


Otro uso común  donde se requiere el uso de  fechas, es cuando necesitas obtener mediante la función DATE()  de php la fecha actual para guardar la última actualización realizada a ese registro o bien necesitas mostrar la fecha obtenida de una consulta a una base de datos, pero en el formato de día-mes-año.

Ejemplos de cuando es necesario manipular fechas hay muchos pero para estos casos y otros tantos mas la solución es bastante sencilla gracias a la función EXPLODE(). Déjame explicarte con un ejemplo:

Lo primero que tienes que tener es la base de datos sobre la que vas a trabajar este ejemplo; la base de llama “pruebas” y contiene una tabla llamada “fechas” con los campos id, nombre y fecha (puedes descargar de aquí el código sql y luego importarlo a tu phpmyadmin).

Ahora como segundo paso vas a escribir el archivo HTML, encargado de insertar o bien mostrar los datos de la tabla “fechas” y lo llamas “index.php”. Este es el código para este archivo:

<html>

<title>http://AprendeAprogramarEnPHPya.com/blog/</title>

<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>

Ya para terminar como tercer paso vas a poner el script que se va a encargar de insertar y mostrar los datos de fecha con el formato necesario, en un archivo que tiene que nombrar “procesa.php” . Este es el código:

<?php

//conectas con tu base de datos acuérdate de cambiar por tus datos

$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[2] 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>”;

}

?>

Te explico: 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í.

Recuerda que el principal guía de mis artículos eres tú, y mi objetivo es que aprendas a programar en php lo mas fácil y rápido que se pueda, así que no dudes en dejarme tu comentario, dime que es lo que más se te dificulta para ayudarte o bien que te gustaría encontrar en estos artículos.

Atte:
Salvador López – Profesor de Programación