Foros del Web » Programando para Internet » PHP »

Dudas con fechas php y sql

Estas en el tema de Dudas con fechas php y sql en el foro de PHP en Foros del Web. Hola a todos, antes he pasado un post a Mysql pero se ve que el tema tira más por aquí. Me han resuelto una duda ...
  #1 (permalink)  
Antiguo 14/10/2008, 08:16
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 7 meses
Puntos: 12
Dudas con fechas php y sql

Hola a todos, antes he pasado un post a Mysql pero se ve que el tema tira más por aquí. Me han resuelto una duda que tenía pero queda otra que también es importante y al no poder implementar código php supongo que éste será el foro idóneo. La duda surge de sumar siete días a una fecha e implementarlo en un campo timestamp.

Tengo dos campos de fechas, uno automático (fecha) que pone la fecha en la inserción y otro que tengo que programar. De un tutorial he cogido un código que me viene bien para sacar días restantes, de diferencia... el problema es que no manejo muy bien php y mucho menos sql. El código:

Código PHP:
<?php
$result
=mysql_query("select *, UNIX_TIMESTAMP(fecha) AS fecha,UNIX_TIMESTAMP(fecha_pro) AS fecha_pro from tabla order by id desc",$link);  
$row=mysql_fetch_array($result);
while(
$row mysql_fetch_array($result)) { 
$mia=$row["fecha"];
$fechuna=strtotime("+7 days"$mia);
$resultado=mysql_query("UPDATE tabla SET fecha_pro=$fechuna",$link);
}
?>
Las cifras deben ser correctas porque:
Código PHP:
<?
echo (($fechuna-$mia)/86400)."<br>"
?>
da 7 de valor, sin embargo cuando meto el update me pone la misma fecha en todos los campos (una del año 2000 sin demasiado sentido) así que fallo en algo y no logro verlo.

Gracias y un saludo
__________________
Chanante!

Última edición por sirguy; 14/10/2008 a las 08:26 Razón: fallo
  #2 (permalink)  
Antiguo 14/10/2008, 08:21
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Dudas con fechas php y sql

haber solo veo lo siguiente:

quitale el * al select, es decir asi:
$result=mysql_query("select UNIX_TIMESTAMP(fecha) AS fecha,UNIX_TIMESTAMP(fecha_pro) AS fecha_pro from tabla order by id desc",$link);

y segundo, si actualiza a todos y tu no lo deseas asi, es por que te falta agregarle a tu update un where, para que solo lo actualize a cierto registro dependiendo de una condicion.

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #3 (permalink)  
Antiguo 14/10/2008, 08:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Dudas con fechas php y sql

Hola sirguy,

Efectivamente te va a poner la misma fecha en todos los campos, y esto es porque en tu UPDATE te falta la condición de WHERE del campo que quieres actualizar, sin tu poner la clausula WHERE va a actualizar TODOS los datos de esa tabla.

Saludos.
  #4 (permalink)  
Antiguo 14/10/2008, 08:29
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Dudas con fechas php y sql

o eso ya lo dije ps... no se dbe de valer repetir respuestas iguales en un mismo post o al menos no seguidas.... jaja.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #5 (permalink)  
Antiguo 14/10/2008, 08:30
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 7 meses
Puntos: 12
Respuesta: Dudas con fechas php y sql

Gracias por la respuesta pero no me aclaras nada:

Quitar o poner el * en la primera consulta es intrascendente ya que esa parte del código funciona sin problemas.

No he puesto el where para no poner más código del necesario (en relidad pongo uno), el problema no es que todos se actualicen sino que se actualicen mal y todos con el mismo valor teniendo en cuenta que fecha adopta distintos valores el update debería insertar distinto valores no sólo uno... creo.

Un saludo y gracias por la rapidez
__________________
Chanante!
  #6 (permalink)  
Antiguo 14/10/2008, 08:43
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 7 meses
Puntos: 12
Respuesta: Dudas con fechas php y sql

Otra vez, he pensado que seguro que sabeís bastante más que yo así que he puesto esto:

Código PHP:
$result=mysql_query("select UNIX_TIMESTAMP(fecha) AS fecha,UNIX_TIMESTAMP(fecha_pro) AS fecha_pro from tabla order by id desc",$link);
$row=mysql_fetch_array($result);
while(
$row mysql_fetch_array($result)) { 
$mia=$row["fecha"];
$fechuna=strtotime("+7 days"$mia);
$id=$row["id"];
$resultadum=mysql_query("UPDATE tabla SET fecha_pro=$fechuna where id=$id",$link); 
Y no ni caso, me pone fechas del 2000. Aunque sea una tontería llevo toda la mañana, es increíble.

Un saludo
__________________
Chanante!
  #7 (permalink)  
Antiguo 14/10/2008, 08:51
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Dudas con fechas php y sql

Que tal sirguy, que tipo de dato es el campo fecha en tu BD? DATE o DATETIME?, ahora, si deseas agregarle 7 dias a la fecha que rescatas de tu BD solo has esto, ahora no veo logica en utilizar unix_timestamp, cual es el proposito? si para eso utlizas la función strtotime(), ahora en tu primer post hablas de restar dias donde y como lo implementas?

Código PHP:
$result mysql_query("select fecha, fecha_pro from tabla order by id desc",$link); 
$row mysql_fetch_array($result); 
while(
$row mysql_fetch_array($result)) {  
$mia $row['fecha']; 
$can_dias 7;
$fechuna date("Y-m-d"strtotime("$mia + $can_dias days"));  
$id $row['id']; 
$resultadum mysql_query("UPDATE tabla SET fecha_pro = '$fechuna' where id=$id",$link); 

Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"

Última edición por Carlojas; 14/10/2008 a las 09:04
  #8 (permalink)  
Antiguo 14/10/2008, 08:54
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Dudas con fechas php y sql

mira amigo, la solucion la veo asi de simple:

Código PHP:
<?php
$result
=mysql_query("select UNIX_TIMESTAMP(fecha) AS fecha,UNIX_TIMESTAMP(fecha_pro) AS fecha_pro from tabla order by id desc",$link);  
$row=mysql_fetch_array($result);
while(
$row mysql_fetch_array($result)) { 
  
$mia=$row["fecha"];
  
$fechunastrtotime("$mia +7 days");//le aumentas 7 dias a la fecha
  
$fechuna=date("d-m-Y",$fechuna);//vuelves a convertir la variable a formato fecha
  
$resultado=mysql_query("UPDATE tabla SET fecha_pro=$fechuna",$link);
}
?>
solo que si ya no sale, es el tipo de campo en el que guardas la fecha y los problemas con el strtotime.... suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #9 (permalink)  
Antiguo 14/10/2008, 09:10
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 7 meses
Puntos: 12
Respuesta: Dudas con fechas php y sql

Muchas gracias, estás para ponerte una estatua, pero sigue igual, y los valores están bien!!, poniendo esto dentro del while:

echo $id."-".$mia."-".$fechuna."<br>";

El php me muestra:

315-1222173523-1222778323
311-1222169290-1222774090
310-1222168470-1222773270
309-1222167629-1222772429
302-1222111896-1222716696
300-1222108379-1222713179
296-1222092782-1222697582
295-1222089589-1222694389
...

Si cogemos cualquier valor de $mia y los dividimos entre 86400(segxdía) y luego por 365 marca 38,xxxx que es el resultado correcto, coge bien el id, coge bien la fecha y suma bien los 7 días.

Sin embargo me inserta una fecha del 2000 cada muchos registro y el resto los deja a 0.

Yo ya estoy deseperado.

PD:

Si pongo:

$resultadum=mysql_query("UPDATE repor SET fecha_pro=fecha where id=$id",$link);

Me pone bien la fecha así que será tema de formato.

Un saludo
__________________
Chanante!

Última edición por sirguy; 14/10/2008 a las 09:22 Razón: Meter PD
  #10 (permalink)  
Antiguo 14/10/2008, 09:26
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: Dudas con fechas php y sql

Cita:
Iniciado por Carlojas Ver Mensaje
Que tal sirguy, que tipo de dato es el campo fecha en tu BD? DATE o DATETIME?, ahora, si deseas agregarle 7 dias a la fecha que rescatas de tu BD solo has esto, ahora no veo logica en utilizar unix_timestamp, cual es el proposito? si para eso utlizas la función strtotime(), ahora en tu primer post hablas de restar dias donde y como lo implementas?

Código PHP:
$result mysql_query("select fecha, fecha_pro from tabla order by id desc",$link); 
$row mysql_fetch_array($result); 
while(
$row mysql_fetch_array($result)) {  
$mia $row['fecha']; 
$can_dias 7;
$fechuna date("Y-m-d"strtotime("$mia + $can_dias days"));  
$id $row['id']; 
$resultadum mysql_query("UPDATE tabla SET fecha_pro = '$fechuna' where id=$id",$link);


Saludos.
Carlojas ya te dio la repuesta, por eso cito su post, pero permite poner unos comentarios. En MySQL las fechas son tratas como si fueran una cadena para leerlas fácilmente, MySQL realiza la conversión al tipo de dato adecuado de forma implícita. Por eso Carlojas ha puesto en el código fecha_pro = '$fechuna'. Ahora la fechas deben tener el formato Año-Mes-día (eje. 2008-10-14) a como se cita $fechuna = date("Y-m-d", strtotime("$mia + $can_dias days"));.

Espero que con esto ya le encuentre solución a tu problema.

Saludos,
__________________
Leer es Saber, REEL.
Mi Blog
  #11 (permalink)  
Antiguo 14/10/2008, 09:35
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 7 meses
Puntos: 12
Respuesta: Dudas con fechas php y sql

Cita:
Iniciado por sirguy Ver Mensaje
Hola a todos, antes he pasado un post a Mysql pero se ve que el tema tira más por aquí. Me han resuelto una duda que tenía pero queda otra que también es importante y al no poder implementar código php supongo que éste será el foro idóneo. La duda surge de sumar siete días a una fecha e implementarlo en un campo timestamp.
Gracias de nuevo, pero ahora me cito yo, he dicho que es un campo timestamp. Y mi php es éste:

Código PHP:
$result=mysql_query("select * UNIX_TIMESTAMP(fecha_pro) AS fecha_pro from tabla order by id desc",$link);
$row=mysql_fetch_array($result);
while(
$row mysql_fetch_array($result)){ 
$mia=$row["fecha_pro"];
$fechuna=strtotime("+7 days"$mia);
$id=$row["id"];
echo 
$id."-".$mia."-".$fechuna."<br>";
$resultadum=mysql_query("UPDATE tabla SET fecha_pro=fecha where id=$id",$link); 
De la manera que ha dicho carlojas evidentemente no me coge el id, uso esa programación porque no doy para más, probando con date() no me ha funcionado.

Si compruebas las cifras son correctas, en fin no sé que más decir.
__________________
Chanante!
  #12 (permalink)  
Antiguo 14/10/2008, 09:46
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Dudas con fechas php y sql

Vuelvo a lo mismo sirguy, no entinedo porque en tu consulta conviertes el campo a un TIMESTAMP si estas implementado la función strtotime() a ese mismo campo, si determinada función hace eso exactamente, lee la documentación de la función, ahora tomando en cuenta lo que dices en el primer post, sumar dias a la fecha y pasarlo a un TIMESTAMP, haces el procedimiento que te publique y a ese resultado le aplicas la función strtotime() y listo lo conviertes en un TIMESTAMP



Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #13 (permalink)  
Antiguo 14/10/2008, 09:54
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: Dudas con fechas php y sql

Cita:
Iniciado por sirguy Ver Mensaje
Gracias de nuevo, pero ahora me cito yo, he dicho que es un campo timestamp. Y mi php es éste:
.....
De la manera que ha dicho carlojas evidentemente no me coge el id, uso esa programación porque no doy para más, probando con date() no me ha funcionado.

....
Te noto algo estresado, relájate y lee con calma

Ahora hay muchas formas de resolver esto, puedes usar una sentencia UPDATE por ejemplo:

Código:
UPDATE tabla
SET fecha_pro = DATE_ADD(fecha_pro, INTERVAL 7 DAY)
Asi no tienes que hacer el ciclo en PHP.

Saludos,
__________________
Leer es Saber, REEL.
Mi Blog

Última edición por reel; 14/10/2008 a las 10:04
  #14 (permalink)  
Antiguo 14/10/2008, 09:59
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 7 meses
Puntos: 12
Respuesta: Dudas con fechas php y sql

Gracias una vez más, siento las molestias pero estoy ya espeso y creo que no nos entendemos, concretamente yo no tengo claro nada. Yo no había usado fechas en php hasta hace un par de días que encontré este tutorial:

www.tecnorama.org/document.php?id_doc=66

En base a él he adaptado ese script, que me permite coger una fecha y sumarle x días, en el momento en que me salgo del tutorial para mí es estar en Marte.

Repito lo de antes, como doy por seguro que sabeís más que yo voy a intentar rehacer todo tal y como explicas. En todo caso lo hago mañana que ya no puedo más y estoy seguro que ya teneís ganas de acabar con esto (y darme un sopapo tambíen), y como seguro que necesitaré de nuevo vuestra ayuda nos daré un descanso a todos.

Gracias por todo a todos y mañana os pongo al día.

Perdón a todos, Reel tiene razón al decir que estoy estresado y desde luego ninguno de vosotros tiene la culpa ya que me habeís intentado ayudar, si pasaís por Mallorca os pago las cañas.
__________________
Chanante!

Última edición por sirguy; 14/10/2008 a las 10:02 Razón: Disculpad
  #15 (permalink)  
Antiguo 14/10/2008, 10:11
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Dudas con fechas php y sql

De los errores se aprende es muy cierto pero si podemos evirtalos mucho mejor te invito a que te documentes muy bien con las funciones que PHP utiliza para trabajar fechas y horas Date/Time Functions Suerte




Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #16 (permalink)  
Antiguo 14/10/2008, 13:55
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Dudas con fechas php y sql

Usas SQL SERVER o MYSQL ? , esos problemas de resultados rescatados por php desde una bd sql server son asi, hasta ahora no encuentro la manera de mostrar el formato correcto de las fechas como uno quiere por que se tiene que configurar el servidor de bd (sql server), sobre su formato de fecha.....
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #17 (permalink)  
Antiguo 15/10/2008, 04:25
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 7 meses
Puntos: 12
Respuesta: Dudas con fechas php y sql

Hola a todos ya estoy de nuevo y de mejor humor, he probado los consejos que me disteis y todo funciona a la perfección. Mantengo lo de las cañas y os doy las gracias de nuevo a todos por vuestra ayuda y paciencia.

Un saludo
__________________
Chanante!
  #18 (permalink)  
Antiguo 15/10/2008, 06:52
Avatar de DjFaramir  
Fecha de Ingreso: febrero-2003
Ubicación: La Plata, Buenos Aires, Argentina
Mensajes: 131
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Dudas con fechas php y sql

Cita:
Iniciado por sirguy Ver Mensaje
De la manera que ha dicho carlojas evidentemente no me coge el id, uso esa programación porque no doy para más, probando con date() no me ha funcionado.

Si compruebas las cifras son correctas, en fin no sé que más decir.
El problema aqui no era el codigo de carlojas, sino que al remover el * te has olvidado de agregar id a la lista de valores que devuelve el query, por eso nunca te lo daba
__________________
See you... y Tolkien... mucho Tolkien...
  #19 (permalink)  
Antiguo 15/10/2008, 09:18
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Dudas con fechas php y sql

Que bueno que lo solucionaste



Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
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 22:18.