Foros del Web » Programando para Internet » PHP »

Recibir por metodo POST fecha.

Estas en el tema de Recibir por metodo POST fecha. en el foro de PHP en Foros del Web. Hola chicos, les cuento que es raro lo que me pasa, estoy recibiendo de un form un input llamado fecha1 y adentro tiene el valor ...
  #1 (permalink)  
Antiguo 04/10/2011, 11:54
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 10 años, 10 meses
Puntos: 89
Recibir por metodo POST fecha.

Hola chicos,

les cuento que es raro lo que me pasa, estoy recibiendo de un form un input llamado fecha1 y adentro tiene el valor en este formato: dd/mm/aaaa

para procesarlo tengo que invertir el formato a aaaa/mm/dd.

el problema viene al recibir estas fechas 01/mm/aaaa - 09/mm/aaaa

espero explicarme con este codigo:

Código PHP:
$fecha1    =    $_POST['fecha1'];
echo 
$fecha1;

// ó

echo $_POST['fecha1']; 
imprime ejemplo:

si el intup tiene 05/10/2011.

imprime:

Código:
5/10/2011
alprocesarlo
Código PHP:
$fecha1 explode('/',$_POST['fecha1']);
$fecha2 $fecha1[2].$fecha1[1].$fecha1[0];

echo 
date('Ymd'strtotime($fecha2)); 
Tira cualquier fecha.....


Necesito que conserve el '0' del dia.
__________________
Mono programando!
twitter.com/eguimariano
  #2 (permalink)  
Antiguo 04/10/2011, 12:01
Avatar de blakmetall  
Fecha de Ingreso: diciembre-2010
Ubicación: Jalisco
Mensajes: 181
Antigüedad: 9 años
Puntos: 18
Respuesta: Recibir por metodo POST fecha.

Amigo intenta esto:

TU CODIGO:
Código PHP:
$fecha1 explode('/',$_POST['fecha1']);
$fecha2 $fecha1[2].$fecha1[1].$fecha1[0];

echo 
date('Ymd'strtotime($fecha2)); 
EL QUE PROPONGO
Código PHP:
$fecha1 explode('/',$_POST['fecha1']);
$fecha2 $fecha1[2] . "-" $fecha1[1] . "-" $fecha1[0];

echo 
date('Ymd'strtotime($fecha2)); 
  #3 (permalink)  
Antiguo 04/10/2011, 12:12
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 12 años, 4 meses
Puntos: 194
Respuesta: Recibir por metodo POST fecha.

Código PHP:
$isodate sprintf("%04d-%02d-%02d"$fecha1[2], $fecha1[1], $fecha1[0]); 
http://ar2.php.net/manual/es/function.sprintf.php
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #4 (permalink)  
Antiguo 04/10/2011, 12:17
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 8 años, 4 meses
Puntos: 793
Respuesta: Recibir por metodo POST fecha.

Sigo sin entender para que usan explode si date hace el trabajo

Código PHP:
Ver original
  1. <?php
  2. echo date('Y/m/d', strtotime($_POST['fecha1']));
Me pueden explicar?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 04/10/2011, 12:37
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 12 años, 4 meses
Puntos: 194
Respuesta: Recibir por metodo POST fecha.

Cita:
Iniciado por andresdzphp Ver Mensaje
Sigo sin entender para que usan explode si date hace el trabajo

Código PHP:
Ver original
  1. <?php
  2. echo date('Y/m/d', strtotime($_POST['fecha1']));
Me pueden explicar?
Simplemente porque aveces uno se embrolla en el código de otro sin ver que hay mejores soluciones :p
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #6 (permalink)  
Antiguo 04/10/2011, 14:45
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 10 años, 10 meses
Puntos: 89
Respuesta: Recibir por metodo POST fecha.

No por que soy un despistado, en realidad ninguna sugerencia es la que necesito.
resulta que el form enviaba sin '0' el dia o mes y por eso con
Código PHP:
echo date('Y/m/d'strtotime($_POST['fecha1'])); 
me devolvia cualquier fecha.

Gracias a todos!!!!!! por las molestias.

La solucion:
recibo:

fecha1=3/9/2011

devuelvo:

$fecha2=20110903
Código PHP:
if(isset($_GET['fecha1']))
{
$fecha1    =    explode('/',$_GET['fecha1']);
if(
strlen($fecha1[0])<2)
{
    
$dia='0'.$fecha1[0];
}else{
    
$dia=$fecha1[0];
}
if(
strlen($fecha1[1])<2)
{
    
$mes='0'.$fecha1[1];
}else{
    
$mes=$fecha1[1];
}
$fecha2    =    $fecha1[2].$mes.$dia;

__________________
Mono programando!
twitter.com/eguimariano
  #7 (permalink)  
Antiguo 04/10/2011, 15:00
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 11 años, 3 meses
Puntos: 87
Respuesta: Recibir por metodo POST fecha.

El problema no es el '0', si no el formato en el que esta la fecha. Si se fijan lo que dice el manual:

Cita:
Nota:

Las fechas en los formatos m/d/y o d-m-y no son ambiguas al observar el separador entre los distintos componentes: si el separador es una barra (/), se asume el formato americano m/d/y; mientras que si el separador es un guión (-) o un punto (.), se asume el formato europeo d-m-y.
Algo así funcionaría:

Código PHP:
Ver original
  1. $fecha = str_replace('/', '-', $_POST['fecha1']);
  2. echo date("Ymd", strtotime($fecha));

Saludos
  #8 (permalink)  
Antiguo 04/10/2011, 15:10
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 8 años, 4 meses
Puntos: 793
Respuesta: Recibir por metodo POST fecha.

Para hacer eso es mucho mejor usar DateTime::createFromFormat para evitar este tipo de problemas:

Código PHP:
Ver original
  1. <?php
  2. $fecha = DateTime::createFromFormat('j/n/Y', '3/9/2011');
  3. echo $fecha->format('Ymd');
Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 04/10/2011 a las 15:22 Razón: Otra solución

Etiquetas: metodo, post, recibir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:01.