Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Fechas en PHP con posible formato incorrecto

Estas en el tema de Fechas en PHP con posible formato incorrecto en el foro de PHP en Foros del Web. creo que es un problema en mi PHP: envió la fecha a la base de datos pero esta no se guarda ¿la estoy mandando mal ...
  #1 (permalink)  
Antiguo 01/05/2014, 22:37
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Fechas en PHP con posible formato incorrecto

creo que es un problema en mi PHP: envió la fecha a la base de datos pero esta no se guarda ¿la estoy mandando mal desde PHP? gracias

Código:
$fecha = "2014-13-12"; se guarda en la en MYSQL cómo 0000-00-00
Lo uso para pasar la fecha de español a ingles
Código PHP:
implode("-"array_reverse(explode("-"$fecha))) 
Código PHP:
        public function insertarNoticia($titulo$noticia$fecha) {
            
$fecha implode("-"array_reverse(explode("-"$fecha)));
            
$this->_db->prepare(
                
"INSERT INTO noticias VALUES (null, :titulo, :noticia, :fecha)"
            
)->execute(array(':titulo' => $titulo':noticia' => $noticia':fecha' => $fecha));
        }

        public function 
editarNoticia($id$titulo$noticia$fecha)    {
            
$id = (int) $id;
            
$fecha implode("-"array_reverse(explode("-"$fecha)));
            
$this->_db->prepare(
                
"UPDATE noticias SET titulo = :titulo, noticia = :noticia, fecha = :fecha WHERE id = :id"
            
)->execute(array(':id' => $id':titulo' => $titulo':noticia' => $noticia':fecha' => $fecha));
        } 
  #2 (permalink)  
Antiguo 01/05/2014, 22:50
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Fechas en PHP con posible formato incorrecto

Tengo entendido que el formato estándar para las fechas en MySQL es el de Año-Mes-Día, ya sea 14-01-25 o 2014-01-25, por lo que creo que sería mejor que guardes la fecha con dicho formato y solamente cuando vayas a mostrar la fecha en tu aplicación, le des el formato que deseas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 02/05/2014, 00:03
 
Fecha de Ingreso: junio-2013
Ubicación: En cualquier parte de mi casa
Mensajes: 139
Antigüedad: 10 años, 10 meses
Puntos: 14
Respuesta: Fechas en PHP con posible formato incorrecto

Esa fecha $fecha = "2014-13-12"; debe corresponder al formato AAAA-MM-DD y el mes 13 No existe! por lo que te recomiendo la funcion Checkday de PHP para que valides si la fecha que indicas es verdadera o falsa Ejemplo si colocas 2014-02-29 te dira que es falsa porque este año en febrero no fueron 29 dias sino 28!
  #4 (permalink)  
Antiguo 02/05/2014, 08:23
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: Fechas en PHP con posible formato incorrecto

me equivoqué al poner esa fecha de ejemplo
Código PHP:
$fecha "2014-12-31"
para el <input> cojo de la lectura de la base de datos la fecha en español
Código:
DATE_FORMAT(fecha,'%d-%m-%Y') AS fecha
en el <input> la muestro en español

antes de guardar la fecha en la base de datos la vuelvo a "yyyy-mm-dd"
Código PHP:
$fecha implode("-"array_reverse(explode("-"$fecha))); 
he prodado
Código PHP:
echo $fecha 
y devuelve
Cita:
"2014-12-23"
con lo cual parece que puede estar enviándose bien a la base de datos, a no ser claro esta que deba hacerle algún tipo de filtro en php

he comprobado que la consulta SQL de php funciona perfectamente forzando en la consulta una fecha manualmente
Código PHP:
        public function insertarNoticia($titulo$noticia$fecha="2014-12-31") {
            
$fecha implode("-"array_reverse(explode("-"$fecha)));
            
$this->_db->prepare(
                
"INSERT INTO noticias VALUES (null, :titulo, :noticia, :fecha)"
            
)->execute(array(':titulo' => $titulo':noticia' => $noticia':fecha' => $fecha));
            
//print_r($this->_db->prepare->execute);exit;
        

tambien he comprobado la recepcion de $fecha
Código PHP:
        public function insertarNoticia($titulo$noticia$fecha) {
            
$fecha implode("-"array_reverse(explode("-"$fecha)));
 echo 
$fecha;exit; //Devuelve -> 2014-04-15
            
$this->_db->prepare(
                
"INSERT INTO noticias VALUES (null, :titulo, :noticia, :fecha)"
            
)->execute(array(':titulo' => $titulo':noticia' => $noticia':fecha' => $fecha));
            
//print_r($this->_db->prepare->execute);exit;
        

  #5 (permalink)  
Antiguo 02/05/2014, 08:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Fechas en PHP con posible formato incorrecto

¿Y has verificado si la base está devolviendo algún error en la ejecución del INSERT?
Porque no veo en ese código que estés validando la respuesta de la base.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 02/05/2014, 08:33
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: Fechas en PHP con posible formato incorrecto

he respondido muy rapido

Cita:
Warning: Missing argument 3 for noticiaModel::insertarNoticia(), called in C:\xampp\htdocs\whitenova\controllers\noticiaContr oller.php on line 53 and defined in C:\xampp\htdocs\whitenova\models\noticiaModel.php on line 19

Notice: Undefined variable: fecha in C:\xampp\htdocs\whitenova\models\noticiaModel.php on line 20
parece que no recibo la fecha por $_POST

la BD no devuelve ningún error aparentemente, hace los INSERT e UPDATES
  #7 (permalink)  
Antiguo 02/05/2014, 08:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Fechas en PHP con posible formato incorrecto

Postea el código del script donde llamas a la función insertarNoticia(), ya que parece que estuvieses enviando dos argumentos y no los tres (eso, más allá de que estés "forzando", como dices).

Cita:
la BD no devuelve ningún error aparentemente, hace los INSERT e UPDATES
¿Y en qué parte de qué sript estás verificando eso?. Porque no se ve en lo que nos has msotrado...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 02/05/2014, 08:54
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: Fechas en PHP con posible formato incorrecto

gracias, veamos

me faltaba
Código:
$this->getNoticiaParam('fecha'),
ahora estoy buscando porque en vez de devolverme una fecha me esta devolviendo el contenido del <textarea>

Código HTML:
 <form method="post">
		<input type="hidden" name="guardar" value="1">
		<div class="input-group">
			<input class="form-control" style="width:80%;" name="titulo" placeholder="Titulo" value="<?=isset($this->datos['titulo'])?$this->datos['titulo']:null?>">
			<input type="text" class="form-control" name="fecha" placeholder="Fecha" style="width:20%;" id="datepicker" value="<?=isset($this->datos['fecha'])?$this->datos['fecha']:null?>">
			<span class="input-group-btn">
				<input type="submit" class="btn btn-primary" value="Guardar">
			</span>
		</div><!-- /input-group -->
		<br>
		<textarea id="default" class="form-control" name="noticia">
			<?=isset($this->datos['noticia'])?$this->datos['noticia']:null?>
		</textarea>
	</form> 
Código PHP:
        public function nueva() {
            
//Session::acceso(array('admin', true)); // Nivel mínimo permitido sin acceso admin
            
Session::acceso('admin'); // Nivel mínimo permitido
            //Session::accesoEstricto('admin'); // Nivel único permitido

            
$this->_view->titulo 'Añadir Noticia';

            if (
$this->getInt('guardar') == 1) {
                
$this->_view->datos $_POST;

                if (!
$this->getTexto('titulo')) {
                    
$this->_view->_error 'Debe introducir el titulo de la noticia';
                    
$this->_view->renderizar($this->_view->metodo$this->_view->controlador);
                    exit;
                }

                if (!
$this->getTexto('fecha')) {
                    
$this->_view->_error 'Debe introducir la fecha de la noticia';
                    
$this->_view->renderizar($this->_view->metodo$this->_view->controlador);
                    exit;
                }

                
//if (!$this->getTexto($this->_objRequest->getControlador())) {
                
if (!$this->getTexto($this->_objRequest->getControlador(), false)) {//false permite añadir html
                    
$this->_view->_error 'Debe introducir la noticia';
                    
$this->_view->renderizar($this->_view->metodo$this->_view->controlador);
                    exit;
                }

                
$this->_noticia->insertarNoticia(
                    
$this->getNoticiaParam('titulo'),
                    
$this->getNoticiaParam('fecha'),
                    
$this->getNoticiaParam($this->_objRequest->getControlador())
                );

                
$this->redireccionar($this->_objRequest->getControlador());
            }
            
$this->_view->renderizar($this->_view->metodo$this->_view->controlador);
        } 
Código PHP:
        public function insertarNoticia($titulo$noticia$fecha) {
            echo
$fecha implode("-"array_reverse(explode("-"$fecha)));exit;
            
$this->_db->prepare(
                
"INSERT INTO noticias VALUES (null, :titulo, :noticia, :fecha)"
            
)->execute(array(':titulo' => $titulo':noticia' => $noticia':fecha' => $fecha));
        } 
  #9 (permalink)  
Antiguo 02/05/2014, 09:12
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: Fechas en PHP con posible formato incorrecto

ya estoy cerca, sigo buscando

Debuelve la fecha
Código PHP:
echo $this->getTexto('fecha');exit;

                
//if (!$this->getTexto($this->_objRequest->getControlador())) {
                
if (!$this->getTexto($this->_objRequest->getControlador(), false)) {//false permite añadir html
                    
$this->_view->_error 'Debe introducir la noticia';
                    
$this->_view->renderizar($this->_view->metodo$this->_view->controlador);
                    exit;
                }

                
$this->_noticia->insertarNoticia(
                    
$this->getNoticiaParam('titulo'),
                    
$this->getNoticiaParam('fecha'),
                    
$this->getNoticiaParam($this->_objRequest->getControlador())
                ); 
Devuelve la noticia en lugar de la fecha
Código PHP:
        public function insertarNoticia($titulo$noticia$fecha) {
            echo
$fecha implode("-"array_reverse(explode("-"$fecha)));exit;
            
$this->_db->prepare(
                
"INSERT INTO noticias VALUES (null, :titulo, :noticia, :fecha)"
            
)->execute(array(':titulo' => $titulo':noticia' => $noticia':fecha' => $fecha));
        } 
  #10 (permalink)  
Antiguo 02/05/2014, 09:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Fechas en PHP con posible formato incorrecto

¿Te has dado cuenta que esto:
Código PHP:
Ver original
  1. $this->_noticia->insertarNoticia(
  2.                     $this->getNoticiaParam('titulo'),
  3.                     $this->getNoticiaParam('fecha'),
  4.                     $this->getNoticiaParam($this->_objRequest->getControlador())
  5.                 );
No coincide con el orden y tipo de los parámetros de esto?:
Código PHP:
Ver original
  1. public function insertarNoticia($titulo, $noticia, $fecha) {
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 02/05/2014, 09:22
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: Fechas en PHP con posible formato incorrecto

Descuidos de novato , muchas gracias por la ayuda, ya funciona

Etiquetas: fecha, formato, incorrecto, mysql, posible
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 19:14.