Buenos días a todos. En esta ocasión os traigo una pequeña guía para aquellos que se están iniciando en PHP.
Hace poco tuve un problema con la inserción y recogida de fechas en PHP. ¿Qué era lo que quería?
1º Que el usuario insertara la fecha en formato europeo pero la BD la recogiese en formato americano (date en MySQL)
2º Al recoger las fechas de la BD, se me volviesen a mostrar en formato Europeo y en aquellas que la función strtotime diese 01-01-1970, debido al día de creación relacionado con unix, me devolviese 0000-00-00 u otro cualquier valor que yo quisiese. ¡OJO! lo que yo quería es que todas las fechas por debajo de 1970 me mostrase ¡LO MISMO! en caso de necesitar ver fechas inferiores deberéis de buscar, aquí eso no se explica.
Puestos en situación, ¡Empecemos!
Para insertar una fecha vamos a usar el imput HTML5
date. Date tiene un pequeño calendario en el que el usuario puede o bien elegir las fechas de manera visual o integrarlas de manera visual.
Código PHP:
<input type="date" Class="form-control" name="" step="1" min="0000-00-00" value="">
Con esto el usuario ingresará en formato Europeo pero cuando se hagla insercción aparecerá en americano.
Lo malo de esta forma es que en Mozilla no funciona a día de hoy, solo chrome. En breves Mozila lo permitirá así que con calma.
Ahora vamos a mostrarlo.
Este código se me ocurrio debido a las necesidades. Copio y pego con comentarios.
Código PHP:
if($nombre=$_GET["nombre"]){
$query = "select * from usuarios where nombre = '$nombre' "; // Esta linea hace la consulta
/* $result = mysqli_query($conexion, $query); */
}
$result = mysqli_query($conexion, $query);
while ($registro = mysqli_fetch_array($result)){
//Guardamos en una variable la fecha de la columna de la BD
$fechaRegistroBD = $registro['fecha_registro'];
//en otra variable convertimos a formato europer con strtotime
$fechaRegistroMOD=date("d-m-Y",strtotime($fechaRegistroBD));
//Si la fecha guardada en la BD es 0000-00-00 que no me pinte nada. (Esto podemos cambiarlo)
//Con esto evitamos que nos salga el bug de unix 1970
if($fechaRegistroBD=== '0000-00-00'){
$fechaRegistroMOD = "'';}
//Mostramos los datos ya modificados
echo "
<tr>
<td width='150'>".$fechaRegistro."</td>
<td width='150'>".$registro['nombre']."</td>
</tr> ";
}
Y eso es todo. A la hora de mostrar podemos mostra ordenados perfectamente por formato europeo.
¡Eso es todo! si teneis alguna duda preguntar!