Foros del Web » Programando para Internet » PHP »

donde esta el error??? (supongo que en DATEDIFF de mysql)

Estas en el tema de donde esta el error??? (supongo que en DATEDIFF de mysql) en el foro de PHP en Foros del Web. hola la ide es esta, tengo que calcular la diferencia en dias entre la fecha actual y la fecha almacenada en fecha_baja. y al resultado ...
  #1 (permalink)  
Antiguo 30/03/2006, 08:45
Avatar de JAK^  
Fecha de Ingreso: octubre-2005
Ubicación: ^^CaMiNiTo Al CoSTaDo DeL
Mensajes: 850
Antigüedad: 12 años, 1 mes
Puntos: 4
donde esta el error??? (supongo que en DATEDIFF de mysql)

hola la ide es esta, tengo que calcular la diferencia en dias entre la fecha actual y la fecha almacenada en fecha_baja. y al resultado guardarlo en dias_a_pub que es un campo de mi db. este calculo debo hacerlo para todo los usuarios registrados. no se que esta mal porfa revicen este codigo y diganme su opinion, es php.

$result = mysql_query("select * from usuarios", $coneccion);
while ($myrow=mysql_fetch_array($result)) {
$res=mysql_query("select DATEDIFF(CURDATE(),$myrow[fecha_baja]) as $dias",$coneccion);
echo $myrow[$dias];
$result2 = mysql_query("update usuarios set dias_a_pub = '$dias'", $coneccion);
if (!mysql_error()) {
echo "bien ";
}else { echo "mal ".mysql_error();}

}

lo que obtengo es las salidas que dicen "bien", pero el campo dias_a_pub y la variable $dias quedan vacias. por lo que supongo que el error esta en DATEDIFF muchas gracias espero su respuesta.

saludos
  #2 (permalink)  
Antiguo 30/03/2006, 09:46
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 12 años, 8 meses
Puntos: 2
intenta con
Código PHP:
$sql='update usuarios set dias_pub=DATEDIFF(CURDATE(),fecha_baja)'
para ver.
  #3 (permalink)  
Antiguo 30/03/2006, 12:30
Avatar de JAK^  
Fecha de Ingreso: octubre-2005
Ubicación: ^^CaMiNiTo Al CoSTaDo DeL
Mensajes: 850
Antigüedad: 12 años, 1 mes
Puntos: 4
Desacuerdo nop tampoco

hola probe y ahora esta peor jejeje me da este error

mal You have an error in your SQL syntax near '(CURDATE(),fecha_baja)' at line 1

saludos
  #4 (permalink)  
Antiguo 30/03/2006, 13:02
Avatar de JorgitoAlfajor  
Fecha de Ingreso: enero-2006
Mensajes: 152
Antigüedad: 11 años, 11 meses
Puntos: 1
Como te lo dijo Vaalegk tendría que funcionar. Lo podés hacer todo con una sola consulta. Cambia todo el código que publicaste por esto, a ver si funciona:

Código PHP:
<?
mysql_query
("UPDATE usuarios SET dias_a_pub =DATEDIFF(CURDATE(),fecha_baja)",$conexion);
if (!
mysql_error()) {
echo 
"bien ";
}
else 

echo 
"mal ".mysql_error();
}
?>
Espero que te funcione.
Saludos.
__________________
¿Se me entiende la letra?
  #5 (permalink)  
Antiguo 30/03/2006, 13:04
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 11 años, 9 meses
Puntos: 0
esto esta mal :

"select DATEDIFF(CURDATE(),$myrow[fecha_baja]) as $dias"

si pones "as $dias" , no significa ke ke va a guardar el dato en la variable dias sino ke va a retornar la el dato en la columna con un alias ke tenga el valor de $dias , pero como $dias esta vacio tu consulta keda asi :

"select DATEDIFF(CURDATE(),$myrow[fecha_baja]) as"

correccion :
<?
$res=mysql_query("select DATEDIFF(CURDATE(),$myrow[fecha_baja]) as dias",$coneccion);
echo $myrow['dias'];
$dias=$myrow['dias'];
$result2 = mysql_query("update usuarios set dias_a_pub = '$dias'",$coneccion);
?>

saludos
__________________
Share what you know...learn what you don't :si:
  #6 (permalink)  
Antiguo 30/03/2006, 13:54
Avatar de JAK^  
Fecha de Ingreso: octubre-2005
Ubicación: ^^CaMiNiTo Al CoSTaDo DeL
Mensajes: 850
Antigüedad: 12 años, 1 mes
Puntos: 4
muchas gracias a todos por su atencion. el problem era (y no me peguen jajaj) que mi version de mysql no soporta datediff() asike lo solucione haciendo

Cita:
$sql="update usuarios set dias_a_pub=TO_DAYS(fecha_baja)-TO_DAYS(CURDATE())";
lo publico por si alguna pudiera tener el mismo problem
mucas gracias por todo
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 03:13.