Foros del Web » Programando para Internet » PHP »

duda de como revertir la fecha a guardar

Estas en el tema de duda de como revertir la fecha a guardar en el foro de PHP en Foros del Web. Hola es que tengo un sistema de registro ya echo pero con la fecha así año mes dia 2011-07-15 y quiero colocarla así dia mes ...
  #1 (permalink)  
Antiguo 06/07/2011, 12:41
(Desactivado)
 
Fecha de Ingreso: septiembre-2010
Mensajes: 498
Antigüedad: 14 años, 2 meses
Puntos: 5
duda de como revertir la fecha a guardar

Hola es que tengo un sistema de registro ya echo pero con la fecha así

año mes dia
2011-07-15

y quiero colocarla así

dia mes año
15-07-2011

y este es el código a guardar que estoy usando


Código PHP:
Ver original
  1. <?
  2.         function guardar()
  3.         {
  4.             $fecha = date("Y-m-d");
  5.             $enunmes = explode ( "-", $fecha );
  6.             $sumaunmes = mktime ( 0, 0, 0, date( $enunmes[1]+ 1), date($enunmes[2]), date($enunmes[0]) );
  7.             $vencimiento = date ("Y-m-d", $sumaunmes);
  8.             $creador = $this->creador ? $this->creador : $_SESSION["id_usuario"];
  9.             $query = "INSERT INTO usuarios (nombre,usuario,contrasena,correo,maxconnections,profiles,comentarios,fecha_inicio,fecha_vencimiento,creador,posicion,enabled,mapexclude,debug)
  10.                       VALUES('{$this->nombre}',
  11.                              '{$this->usuario}',
  12.                              '{$this->contrasena}',
  13.                              '{$this->correo}',
  14.                              '{$this->maxconnections}',
  15.                              '{$this->profiles}',
  16.                              '{$this->comentarios}',
  17.                              '{$fecha}',                             
  18.                              '{$vencimiento}',
  19.                              {$creador},1,'false','false','true')";
  20.             $result = mysql_query( $query );
  21.             if( $result )
  22.             {              
  23.                 // creditos altas
  24.                 $this->tipo = 'creditos_altas';
  25.                 $this->c = $_SESSION["creditos_altas"]-1;
  26.                 $this->actualizar_creditos();
  27.                
  28.                 // enviar mensaje
  29.                 $_SESSION["msj"]["clase"] = 'msj_exito';
  30.                 $_SESSION["msj"]["texto"] = 'El usuario se ha creado correctamente.';
  31.                 echo "<script type=\"text/javascript\">window.location='?mod=usuarios'</script>";
  32.             }
  33.         }
  34. ?>
  #2 (permalink)  
Antiguo 06/07/2011, 12:45
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: duda de como revertir la fecha a guardar

$fecha = date("d-m-Y");

Pero depende de como es el campo en tu base de datos
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Última edición por jotaincubus; 06/07/2011 a las 12:45 Razón: Mas informacion.
  #3 (permalink)  
Antiguo 06/07/2011, 12:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: duda de como revertir la fecha a guardar

¿Puedo preguntar el tipo de columna donde almacenas la fecha?

Por que vamos, si la columna es del tipo DATETIME/DATE no es posible cambiar dicho formato al momento de almacenar en la BD, si lo cambias simplemente no funciona.

La idea sería cambiar el formato al momento de mostrarlo en el script, no al guardarlo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 06/07/2011, 12:55
(Desactivado)
 
Fecha de Ingreso: septiembre-2010
Mensajes: 498
Antigüedad: 14 años, 2 meses
Puntos: 5
Respuesta: duda de como revertir la fecha a guardar

los campos son date ya me esta funcionando pero guardando la fecha de otra manera

ya trate de hacerlo como $fecha = date("d-m-Y");

y no me da resultado
  #5 (permalink)  
Antiguo 06/07/2011, 12:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: duda de como revertir la fecha a guardar

Cita:
Iniciado por privatefta Ver Mensaje
los campos son date ya me esta funcionando pero guardando la fecha de otra manera

ya trate de hacerlo como $fecha = date("d-m-Y");

y no me da resultado
Me pregunto si leíste completo mi comentario:
Cita:
Iniciado por pateketrueke Ver Mensaje
[..] Por que vamos, si la columna es del tipo DATETIME/DATE no es posible cambiar dicho formato al momento de almacenar en la BD, si lo cambias simplemente no funciona. [...]
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 06/07/2011, 12:59
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: duda de como revertir la fecha a guardar

Por lo que te dice Pateke, no es posible porque tenes ese campo DATE y MySql maneja el campo date en formato Y-m-d

Lo puede pasar a varchar o algo así para que pueda guardar en formato d-m-Y pero eso ya es decisión del desarrollador.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #7 (permalink)  
Antiguo 06/07/2011, 13:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: duda de como revertir la fecha a guardar

De hecho, la solución inteligente es esta:
Cita:
Iniciado por pateketrueke Ver Mensaje
[...] La idea sería cambiar el formato al momento de mostrarlo en el script, no al guardarlo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 06/07/2011, 13:04
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 16 años, 3 meses
Puntos: 87
Respuesta: duda de como revertir la fecha a guardar

Como ya dijo pateketrueke, puedes cambiar el formato de la fecha al momento de mostrarla:

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

Saludos.
  #9 (permalink)  
Antiguo 06/07/2011, 13:09
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 6 meses
Puntos: 394
Respuesta: duda de como revertir la fecha a guardar

Me siento como que poco inteligente.... O.o
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #10 (permalink)  
Antiguo 06/07/2011, 13:10
(Desactivado)
 
Fecha de Ingreso: septiembre-2010
Mensajes: 498
Antigüedad: 14 años, 2 meses
Puntos: 5
Respuesta: duda de como revertir la fecha a guardar

Cita:
Iniciado por jotaincubus Ver Mensaje
Por lo que te dice Pateke, no es posible porque tenes ese campo DATE y MySql maneja el campo date en formato Y-m-d

Lo puede pasar a varchar o algo así para que pueda guardar en formato d-m-Y pero eso ya es decisión del desarrollador.
ok gracias ahora si me funciono lo cambie a varchar y lo logro al guardarlo ahora tengo una pregunta como puedo agregar toda las fecha ya guardada de los usuario registrado como puedo modificar la fecha para invertirla.

ejemplo todas las fechas estaba en forma date

2011-02-15

y ahora al cambiar a varchar
15-02-2011

como arreglo las otras fechas ya que estaban colocadas
  #11 (permalink)  
Antiguo 06/07/2011, 13:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: duda de como revertir la fecha a guardar

privatefta, no hagas cosas malas que parezcan buenas.

Quizá tienes ventaja visual al momento de guardar las fechas en un varchar, en el formato que deseas, pero sin duda eso arruina el concepto de una columna que almacena la fecha.

Pues ya no podrás hacer consultas con este tipo de columna, pues has creado una aberración.

La solución, de verdad, era simplemente mostrar la fecha modificada al momento de visualizarla en tus scripts y de ninguna manera es inteligente cambiar la columna por varchar solo por cuestiones estéticas.

Creo que de verdad necesitas un curso de diseño de base de datos, pues hacer este tipo de cambios basado en caprichos es verdaderamente absurdo.

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 06/07/2011, 13:38
(Desactivado)
 
Fecha de Ingreso: septiembre-2010
Mensajes: 498
Antigüedad: 14 años, 2 meses
Puntos: 5
Respuesta: duda de como revertir la fecha a guardar

ok mucha gracias por tu consejo pero es la única forma que me funcione mi sistema como lo quiero hacer
  #13 (permalink)  
Antiguo 06/07/2011, 13:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: duda de como revertir la fecha a guardar

Cita:
Iniciado por privatefta Ver Mensaje
ok mucha gracias por tu consejo pero es la única forma que me funcione mi sistema como lo quiero hacer
A ver, vamos con calma, ¿exactamente tu problema es el formato de la fecha al visualizarla?

¿O existe alguna otra razón de peso, que no sea de estética, para introducir la fecha en dicho formato?

Sería bueno que argumentes las necesidades que tienes al respecto, por que si no vas a terminar haciendo un sistema difícil de escalar, ya que el tipo de columna para fechas está diseñado para eso precisamente.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 06/07/2011, 21:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: duda de como revertir la fecha a guardar


privatefta: Deberías razonarlo de este modo: Si se diseñaron tipos de dato DATE, DATETIME y TIME específicamente para manejar valores de tiempo, y todas las bases de datos del mundo, incluyendo las bancarias los usan forzosamente debe ser el mejor modo de guardar esos datos. Sino fuese así, todos usarían VARCHAR. ¿No te parece?
Hay razones fundamentales por las que se almacenan así y no como lo has hecho tu (mal) al cambiar un dato perfectamente defindo como DATE por un parche mal pensado en VARCHAR.
Las fechas no se almacenan como caracteres, como tampoco se hace con los números. Se almacenan en sus tipos porque en realidad no se guardan las cifras sino su representación en binario. Por eso un DATETIME usa sólo 8 bytes mientras que la misma fecha, en caracteres necesitará 19 bytes.
Por lo demás, pateketrueke ya te lo ha dicho: Es mucho más sencillo obtener la fecha en su formato ddmm/aaaa simplemente en la consulta (con DATE_FORMAT()), que resolver los problemas que ahora te causará hacer consultas por fechas en tu base, ya que debes considerar que las consultas que hagas no interpretaran lo que guardas como fechas, sino como cadenas de texto, y cuando quieras ordenar, agrupar o seleccionar por rangos, deberás hacer conversiones que solamente te complicarán la vida, y si están mal hechas serán NULL.
O sea: No hagas eso. Pon las columnas como estaban antes y usa las funciones necesarias al momentos de los INSERT para que la fecha entre como "aaaa-mm-dd". Las consultas serán más sencillas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 07/07/2011, 00:06
(Desactivado)
 
Fecha de Ingreso: septiembre-2010
Mensajes: 498
Antigüedad: 14 años, 2 meses
Puntos: 5
Respuesta: duda de como revertir la fecha a guardar

Cita:
Iniciado por gnzsoloyo Ver Mensaje

privatefta: Deberías razonarlo de este modo: Si se diseñaron tipos de dato DATE, DATETIME y TIME específicamente para manejar valores de tiempo, y todas las bases de datos del mundo, incluyendo las bancarias los usan forzosamente debe ser el mejor modo de guardar esos datos. Sino fuese así, todos usarían VARCHAR. ¿No te parece?
Hay razones fundamentales por las que se almacenan así y no como lo has hecho tu (mal) al cambiar un dato perfectamente defindo como DATE por un parche mal pensado en VARCHAR.
Las fechas no se almacenan como caracteres, como tampoco se hace con los números. Se almacenan en sus tipos porque en realidad no se guardan las cifras sino su representación en binario. Por eso un DATETIME usa sólo 8 bytes mientras que la misma fecha, en caracteres necesitará 19 bytes.
Por lo demás, pateketrueke ya te lo ha dicho: Es mucho más sencillo obtener la fecha en su formato ddmm/aaaa simplemente en la consulta (con DATE_FORMAT()), que resolver los problemas que ahora te causará hacer consultas por fechas en tu base, ya que debes considerar que las consultas que hagas no interpretaran lo que guardas como fechas, sino como cadenas de texto, y cuando quieras ordenar, agrupar o seleccionar por rangos, deberás hacer conversiones que solamente te complicarán la vida, y si están mal hechas serán NULL.
O sea: No hagas eso. Pon las columnas como estaban antes y usa las funciones necesarias al momentos de los INSERT para que la fecha entre como "aaaa-mm-dd". Las consultas serán más sencillas.

Ok muchas gracias asi lo are pero podría print en un archivo xml la fecha como quiero ya que en el código no se puede cambiar
  #16 (permalink)  
Antiguo 07/07/2011, 04:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: duda de como revertir la fecha a guardar

Cita:
Ok muchas gracias asi lo are pero podría print en un archivo xml la fecha como quiero ya que en el código no se puede cambiar
Por supuesto que si. ¡Eso es lo que te hemos estado diciendo desde el principio!
Lo que haces (como te hemos dicho varias veces) es que para eso usas la función DATE_FORMAT() de MySQL:
Código MySQL:
Ver original
  1. SELECT DATE_FORMAT(campofecha, '%d/%m/%Y') fecha
  2. FROM tabla;
Así MySQL te devuelve la fecha como cadena con formato español.
Tan simple como eso...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #17 (permalink)  
Antiguo 08/07/2011, 23:57
(Desactivado)
 
Fecha de Ingreso: septiembre-2010
Mensajes: 498
Antigüedad: 14 años, 2 meses
Puntos: 5
Respuesta: duda de como revertir la fecha a guardar

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Por supuesto que si. ¡Eso es lo que te hemos estado diciendo desde el principio!
Lo que haces (como te hemos dicho varias veces) es que para eso usas la función DATE_FORMAT() de MySQL:
Código MySQL:
Ver original
  1. SELECT DATE_FORMAT(campofecha, '%d/%m/%Y') fecha
  2. FROM tabla;
Así MySQL te devuelve la fecha como cadena con formato español.
Tan simple como eso...
no pude entender tu contestacion
  #18 (permalink)  
Antiguo 09/07/2011, 00:13
(Desactivado)
 
Fecha de Ingreso: septiembre-2010
Mensajes: 498
Antigüedad: 14 años, 2 meses
Puntos: 5
Respuesta: duda de como revertir la fecha a guardar

Ok mira como quiero hacerlo


Código PHP:
Ver original
  1. <?php
  2.  
  3. $dbhost = "localhost";
  4. $dbname = "sdma";
  5. $dbuser = "ssq";
  6. $dbpass = "csdq";
  7. $charset = "utf-8";
  8.  
  9. $conn = @mysql_connect($dbhost,$dbuser,$dbpass) or die ("ERROR! No connection to database!");
  10. mysql_select_db($dbname, $conn);
  11. $sql = mysql_query("SELECT DATE_FORMAT(FechaInicio,FechaAlta, '%d/%m/%Y') FROM usuarios u, plataforma p WHERE u.IDPlataforma=p.IDPlataforma AND u.Baja='0' ORDER BY u.IDUsuario ASC");
  12.        
  13. header("Content-type: text/xml; charset=".$charset);
  14. print("<xml-user-manager ver=\"1.0\">\n");
  15. while($line=mysql_fetch_array($sql)) {
  16.     if ($_Suspender == "1") {
  17.         $status = "1";
  18.         $_EnabledCambios = "false";
  19.     } else {
  20.         $status = "0";
  21.         $_EnabledCambios = "true";
  22.     }
  23.     if ($_Baja == "1") {
  24.         $status = "1";
  25.         $_EnabledCambios = "false";
  26.     } else {
  27.         $status = "0";
  28.         $_EnabledCambios = "true";
  29.     }
  30.     if ($line["Clave"] == "") {
  31.         $name = "";
  32.     } else {
  33.         $name = "name=\"".$line["Clave"]."\" ";
  34.     }
  35.    
  36.     if ($line["Password"] == "") {
  37.         $password = "";
  38.     } else {
  39.         $password = "password=\"".$line["Password"]."\" ";
  40.     }
  41.    
  42.     if ($line["Usuario"] == "") {
  43.         $displayname = "";
  44.     } else {
  45.         $displayname= "display-name=\"".$line["Usuario"]."\" ";
  46.     }
  47.    
  48.     if ($line["IDPlataforma"] == "") {
  49.         $profiles = "";
  50.     } else {
  51.         $profiles = "profiles=\"".$line["Descripcion"]."\" ";
  52.     }
  53.    
  54.     if ($line["Suspender"] == "") {
  55.         $enabled = "";
  56.     } else {
  57.         $enabled = "enabled=\"".$_EnabledCambios."\" ";
  58.     }
  59.    
  60.     if ($line["FechaInicio"] == "") {
  61.         $FechaInicio = "";
  62.     } else {
  63.         $FechaInicio = "start-date=\"".$line["FechaInicio"]."\" ";
  64.     }
  65.    
  66.     if ($line["FechaFin"] == "") {
  67.         $FechaFin = "";
  68.     } else {
  69.         $FechaFin = "expire-date=\"".$line["FechaFin"]."\" ";
  70.     }
  71.    
  72.     print("<user ".$name.$password.$displayname.$FechaInicio.$FechaFin.$profiles.$enabled."/>\n");
  73. }
  74. print("</xml-user-manager>");
  75. mysql_close($conn);
  76. ?>

Etiquetas: fecha, mysql, revertir
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 13:06.