Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/08/2015, 03:17
Avatar de Jvgaas7
Jvgaas7
 
Fecha de Ingreso: julio-2015
Mensajes: 40
Antigüedad: 9 años, 4 meses
Puntos: 1
Información Aporte fechas en PHP (Recoger y mostrar)

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!

Última edición por Jvgaas7; 13/08/2015 a las 03:45