Foros del Web » Programando para Internet » PHP »

guardar la fecha en la base de dato

Estas en el tema de guardar la fecha en la base de dato en el foro de PHP en Foros del Web. una pregunta yo tengo una tabla con su campo y su fecha que la coloque como date a la hora de enviar la fecha via ...
  #1 (permalink)  
Antiguo 02/05/2011, 17:35
Avatar de angel2010  
Fecha de Ingreso: julio-2010
Ubicación: monagas
Mensajes: 131
Antigüedad: 13 años, 9 meses
Puntos: 2
guardar la fecha en la base de dato

una pregunta yo tengo una tabla con su campo y su fecha que la coloque como date

a la hora de enviar la fecha via post viene de esta forma 04-05-2011 y no se guarda para que pueda guardarse tiene que venir 2011-05-04 como puede resolver este pequeño problema
  #2 (permalink)  
Antiguo 02/05/2011, 20:02
Avatar de bocho0610  
Fecha de Ingreso: enero-2010
Ubicación: <? echo "Santiago, Chile"; ?>
Mensajes: 341
Antigüedad: 14 años, 3 meses
Puntos: 26
Respuesta: guardar la fecha en la base de dato

De porsi guardalo en la bd con formato "DATE" no se puede, cuando haces tu consulta desde php se le da el formato querido con "DATE_FORMAT" (me parece).

yo para no colgarme mucho con esto simplemente lo hago "VARCHAR" y lo registro con el formato bueno.
__________________
Sigueme en Twitter!
Septimoarte.cl <-- Un mundo en cine.
  #3 (permalink)  
Antiguo 02/05/2011, 23:15
Avatar de Sotelio  
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Chile
Mensajes: 68
Antigüedad: 12 años, 11 meses
Puntos: 21
Respuesta: guardar la fecha en la base de dato

Hola

Pues dejar el campo como tipo "varchar" es una mala decisión.

Para almacenar la fecha simplemente se debe modificar el formato. Una forma de hacerlo es utilizando la función substr() que permite sacar ciertos caracteres desde un string.

Y otra forma de hacerlo, que sería una correcta es usando el objeto datetime y el método createfromformat:

Código PHP:
Ver original
  1. <?php
  2. // mi fecha
  3. $miFecha = "12/10/1492";
  4.  
  5. // lo que se hace es crear una fecha especificando el formato que tiene.
  6. $fecha = DateTime::createFromFormat('d/m/Y',  $miFecha);
  7.  
  8. // y luego la mostramos según el formato que queramos.
  9. echo $fecha->format('Y-m-d');
  10. ?>

El único detalle o problema es que esta función está disponible desde php5.3
http://cl.php.net/manual/es/datetime.createfromformat.php

Sotelio
  #4 (permalink)  
Antiguo 03/05/2011, 00:01
(Desactivado)
 
Fecha de Ingreso: abril-2011
Mensajes: 153
Antigüedad: 13 años
Puntos: 236
Respuesta: guardar la fecha en la base de dato

Hola buen día!
Parece que el único problema es que está al revés, hay que invertir la fecha, es decir, de 04-05-2011 a 04-05-2011.
Aquí te dejo una forma de hacerlo:
Código PHP:
<?php
$fecha
=explode("-","04-05-2011");// convertimos el string a un array
$fecha=array_reverse($fecha);// invertimos cada elemento del array
$fecha=implode("-",$fecha);// volvemos a convertirlo en string separado por "-"
echo $fecha;// probamos su funcionamiento
?>
El compañero de arriba también tiene una buena solución y es cierto que es mala decisión de usar un varchar como date ya que cuándo quieras obtener datos más específicos como el nombre del mes o el nombre del día de la semana, no podrás de manera sencilla hacerlo con un varchar. Saludos!
Saludos!

Última edición por angelfcm; 03/05/2011 a las 00:06
  #5 (permalink)  
Antiguo 03/05/2011, 00:10
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 18 años, 4 meses
Puntos: 87
Respuesta: guardar la fecha en la base de dato

Solo use la funcion date() y strtotime de esta forma:

Código PHP:
Ver original
  1. $fecha = "04-05-2011";
  2. $fechaSQL = date( 'Y-m-d',strtotime($fecha ));

Eso es todo. Cabe recalcar que es debido a que esta separado con guiones (-) y no con slashs (/) que utiliza el formato europeo (d-m-a) en vez del americano (m/d/a)

Usarlo campos de tipo varchar en la base de datos es una muy muy mala idea, ya que para hacer consultas SQL entre rango de fechas o cosas por el estilo se le van a hacer mucho mas difíciles.
  #6 (permalink)  
Antiguo 03/05/2011, 19:42
Avatar de angel2010  
Fecha de Ingreso: julio-2010
Ubicación: monagas
Mensajes: 131
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: guardar la fecha en la base de dato

una pregunta como por ejemplo si fuera dos registro se hiciera de esta manera
Código PHP:
Ver original
  1. sql="insert into registro values '".strip_tags($_POST["nombre"])."','".date( 'Y-m-d',strtotime strip_tags($_POST["fecha"]))."'";

no creo que sea haci
  #7 (permalink)  
Antiguo 03/05/2011, 20:01
Avatar de fekaa11  
Fecha de Ingreso: abril-2011
Ubicación: Córdoba / Argentina
Mensajes: 115
Antigüedad: 13 años
Puntos: 34
Respuesta: guardar la fecha en la base de dato

No estás seleccionando los campos a los cuales quiere agregar los valores.

Mira, un Insert INTO basico se hace de esta manera:

Insert INTO mitabla (micampo1,micampo2) VALUES (valor1,valor2);

Saludos
__________________
Pedir perdón es de hombres inteligentes. Perdonar es de sabios.
  #8 (permalink)  
Antiguo 03/05/2011, 20:09
Avatar de angel2010  
Fecha de Ingreso: julio-2010
Ubicación: monagas
Mensajes: 131
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: guardar la fecha en la base de dato

Cita:
no amigo cuando tu campo lleva la misma secuencia de tu reguistro no es necesario nombrar los campo de la tabla si en tu formulario estan diperso si hay que nombrarlo o mejor dicho lo que viene via POST o GET
si yo lo se pero yo estoy haciendolo cuando viene via pos strip_tags me ahorro unos paso y es mas seguro yo lo que quiero si puedo combertir la fecha para guardala como lo explique en la parte de arriba que no se mucho de como combertir la fecha


estuve viendo el codigo

$fecha = "04-05-2011";
$fechaSQL = date( 'Y-m-d',strtotime($fecha ));

y no entiendo como puedo aplicar este codigo no se si es que de clara la variable esa variable lo tranforma que es $fechasql=date............)); y depues de eso colocarla en insert into values ($fechasql,.....) es haci creo yo

Última edición por angel2010; 03/05/2011 a las 20:21
  #9 (permalink)  
Antiguo 03/05/2011, 20:22
Avatar de fekaa11  
Fecha de Ingreso: abril-2011
Ubicación: Córdoba / Argentina
Mensajes: 115
Antigüedad: 13 años
Puntos: 34
Respuesta: guardar la fecha en la base de dato

Si, es así como dices. Sería algo así:
Código PHP:
Ver original
  1. $fecha = "04-05-2011";
  2. $fechaSQL = date("Y-m-d",strtotime($fecha));
  3. $consulta = "Insert INTO mitabla (campo1_fecha) VALUES ($fechaSQL)";
  4. mysql_query($consulta) or die("Error al insertar la fecha en la DB: <br>" . mysql_error());

Date lo que hace es interpretar la estructura de la fecha pasada en su primer parámetro (Y de Year, m de month, y d de day). strtotime lo que hace es convertir una cadena a formato Fecha. Entonces le aplica la función anterior a esta cadena (que ya no es cadena, ahora es fecha).

Si no entiendes la parte de Insert INTO mitabla .... yo diría que te pongas a leer sobre MYSQL, y ya que estás combinalo con PHP asi aprendes las dos cosas de una.

Saludos
__________________
Pedir perdón es de hombres inteligentes. Perdonar es de sabios.
  #10 (permalink)  
Antiguo 03/05/2011, 20:24
(Desactivado)
 
Fecha de Ingreso: abril-2011
Mensajes: 153
Antigüedad: 13 años
Puntos: 236
Respuesta: guardar la fecha en la base de dato

Hola,
Checa la diferencia:
Este es el tuyo
Código:
sql="insert into registro values '".strip_tags($_POST["nombre"])."','".date( 'Y-m-d',strtotime strip_tags($_POST["fecha"]))."'";
Este es el mío
Código:
sql="insert into registro values('".strip_tags($_POST["nombre"])."','".date( 'Y-m-d',strtotime(strip_tags($_POST["fecha"])))."')";
Es cierto que debes poner las columnas dónde meterás los registros, es decir:
Código:
insert into registro(columna1, columna2, etc.)....
Pero si vas a llenar todas las columnas no es necesario hacerlo.
Por ejemplo:
BIEN
Código:
insert into registro values("pancho","hoy");
MAL
Código:
insert into registro values("pancho");
BIEN
Código:
insert into registro(nombre) values("pancho");
  #11 (permalink)  
Antiguo 03/05/2011, 20:27
Avatar de angel2010  
Fecha de Ingreso: julio-2010
Ubicación: monagas
Mensajes: 131
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: guardar la fecha en la base de dato

Cita:
graca por aclararme la duda y sobre lo de insert int ya vi clase de eso demas y lo que quice decir arriba era un ejemplo tambien me se udate set pero este no lo utiliso mucho ni se si lo escribi vien jejejeje en el mundo estamo para aprender cosa nuevas no crees que pasen buenas noche y gracais por su pasencia y por explicarme sobre mi dudas
  #12 (permalink)  
Antiguo 03/05/2011, 20:27
Avatar de fekaa11  
Fecha de Ingreso: abril-2011
Ubicación: Córdoba / Argentina
Mensajes: 115
Antigüedad: 13 años
Puntos: 34
Respuesta: guardar la fecha en la base de dato

Eso es lo que yo quería aclararle, pero no se si tiene que rellenar todos los campos o no, ya que no lo especificó en ningun lugar del tema y no hay que pasar por alto esos detalles.
__________________
Pedir perdón es de hombres inteligentes. Perdonar es de sabios.
  #13 (permalink)  
Antiguo 03/05/2011, 20:30
Avatar de angel2010  
Fecha de Ingreso: julio-2010
Ubicación: monagas
Mensajes: 131
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: guardar la fecha en la base de dato

lo del la fecha es haci
como dice el seria en ese caso haci

Código PHP:
Ver original
  1. $fecha1 = date("Y-m-d",strtotime($fecha));
  2.  
  3.  
  4. sql="insert into registro values ('".strip_tags($_POST["nombre"])."', '$fecha1'")";

si no le gusta el strip_tags lo pueden hacer row tambien jejeje

Cita:
acabo de ver lo que coloco el pana arriba tiene toda la rason () me faltaron lo parentesis son pequeñas cosa que se le pasan a uno jejeje tambien lo hice para ver si estaban pilas

Última edición por angel2010; 03/05/2011 a las 20:36
  #14 (permalink)  
Antiguo 03/05/2011, 20:55
 
Fecha de Ingreso: febrero-2011
Ubicación: Capital federal
Mensajes: 16
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: guardar la fecha en la base de dato

podes modificar el formato con el cual almacena la BD o cambiar el formato antes de guardar.

list($dia,$mes,$anio)=explode("-",$fecha);
$fecha= $anio."-".$mes."-".$dia;

Etiquetas: dato, fecha
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 01:14.