Foros del Web » Programando para Internet » PHP »

cambiar color segun fecha

Estas en el tema de cambiar color segun fecha en el foro de PHP en Foros del Web. hola amigos: como puedo cambiar el color de una fila de una tabla segun la fecha del registro almacenado en mi BD. en mi BD ...
  #1 (permalink)  
Antiguo 25/09/2004, 10:07
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 21 años
Puntos: 0
Exclamación cambiar color segun fecha

hola amigos:

como puedo cambiar el color de una fila de una tabla segun la fecha del registro almacenado en mi BD.

en mi BD almaceno el dia, mes, año por separado con la funcion date("d"), lo que necesito hacer que segun la fecha almacenada por registro me cambie el color de la celda:

- de 24 horas color verde
+ de 24 horas color naranjo
+ de 48 horas color rojo.

Código PHP:
echo "<tr bgcolor=\"$color_hora\">\n"
bueno antes de esto realizo una consulta y un while para mostrar los registros de la BD. en eso no hay ploblema

espero me me entiendan mi problema... bueno desde ya muchas gracias.
__________________
Practicando se Aprede
:-) :-)
  #2 (permalink)  
Antiguo 25/09/2004, 10:23
 
Fecha de Ingreso: septiembre-2004
Mensajes: 49
Antigüedad: 19 años, 7 meses
Puntos: 0
No se mucho de PHP pero me parece que es más facil aunque ya tengas la BD hacerlo en Javascript.
CHAU
  #3 (permalink)  
Antiguo 26/09/2004, 11:04
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 21 años
Puntos: 0
y como? si me puedes ayudar
__________________
Practicando se Aprede
:-) :-)
  #4 (permalink)  
Antiguo 26/09/2004, 17:28
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Ehmm viejo... coloca la estructura de la tabla y parte del código que inserta la fecha en la Base de datos.
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #5 (permalink)  
Antiguo 26/09/2004, 17:45
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 21 años
Puntos: 0
Pregunta

asi inserto los datos a la BD
Código PHP:
$dia=date("d");
$mes=date("m");
$ano=date("y");
$hora=date("H:i");

mysql_query("INSERT  INTO  ordenes (`norden`, `observacion`, `dia_ingreso`, `mes_ingreso`, `ano_ingreso`, `hora_ingreso`, `usuario_ingreso`) 
norden= 32155478 campo int en la BD
observacion = xx ect campo varchar en la BD
dia_ingreso=26 ($dia) campo int en la BD
mes_ingreso=09 ($mes) campo int en la BD
ano_ingreso=04 ($ano) campo int en la BD
hora_ingreso= 20:00 ($hora) campo varchar en la BD

y el procedimiento que realizo para mostrar los datos en una tabla es

Código PHP:
echo "<table>";    
      
while(
$row mysql_fetch_array($result)){ 

    
    echo 
"<tr bgcolor=\"$color_hora\">\n";
    echo 
"<td><input style=\"font-size:11px;\" type=\"checkbox\" name=\"check_orden[]\"  value=\"$row[norden]\" id=\"check_$i\" onclick=\"contar(this.form)\"></td> \n";  
    echo 
"<td><font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\"><center>$row[norden]</center></font></td>\n"
    echo 
"<td><font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\"><center>$row[dia_ingreso]-$row[mes_ingreso] $row[hora_ingreso] hrs</center></font></td>\n";
    echo 
"<td width=\"187\"><font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\">$row[observacion]</font></td> \n"
    echo 
"</tr>\n\n"
                
}

echo 
"</table>"
espero que te ayuden estos datos amigo..
__________________
Practicando se Aprede
:-) :-)
  #6 (permalink)  
Antiguo 26/09/2004, 18:01
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Viejito...

Lo que deseas hacer es cambiar el color de la celda dependiendo del tiempo que haya pasado después del registro. Hay una función muy util de PHP que te va a simplificar la vida. Esa función se llama time(). time() te devuelve la hora actual como número de segundos transcurridos desde las 00:00:00 del 1 de enero de 1970 GMT (Unix Epoch).

Entonces... haz lo siguiente: crea un campo nuevo en tu base de datos llamado "tiempo". Cuando hagas tu consulta SQL... me refiero al INSERT INTO ordenes bla bla bla... insertarás en el campo "tiempo" la función time(). Más o menos asi:

Código PHP:
mysql_query("INSERT  INTO  ordenes ('norden','observacion','dia_ingreso', 'mes_ingreso','ano_ingreso','hora_ingreso','usuario_ingreso','tiempo') VALUES ('algo','algo','algo','algo','algo','algo','algo',time()) 
Entonces... calculas en segundos lo siguiente:

24 horas = 86400 segundos
48 horas = 172800 segundos

Haces ifs asi:

Código PHP:
$actual time();
$calc=$actual-$row['tiempo'];
if(
$calc<86400){
  
$color "verde";
}
if(
$calc>86400 && $calc<172800){
  
$color "naranja";
}
if(
$calc>172800){
  
$color "rojo";

Básicamente es eso. Tu verás si lo haces con IFs o con operadores ternarios. Todo depende de tu criterio. Un saludo.
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #7 (permalink)  
Antiguo 26/09/2004, 18:25
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Afinando un poco... guardar la fecha y hora en campos separados, aunque en un principio parezca que te simplifica las cosas, te está haciendo perder la oportunidad de utilizar un montón de funciones de fecha y hora que ya vienen con mysql.

En lugar de utilizar un campo para el día, otro para el mes, otro para el año, y otro para la hora... utiliza un sólo campo llamado "fecha_ingreso" (por ejemplo) que sea de tipo DATETIME.
Cuando hagas el insert bastará con que utilices la función NOW() de mysql que automáticamente pondrá la fecha (y ya no tienes que calcularla desde PHP). O sea tu insert tendría esta forma:
Código PHP:
$sql "INSERT  INTO  ordenes (norden, observacion, fecha_ingreso, usuario_ingreso) VALUES ('algo','algo', NOW(),'algo'); 
Así tendrás sólo 4 campos que manejar.

Ahora... para leer los datos puedes hacer una mezcla de PHP y Mysql. Algo como lo que te dice Takitei... pero desde Mysql. Con la función UNIX_TIMESTAMP()
Código PHP:
$sql ="SELECT UNIX_TIMESTAMP(fecha_ingreso) AS tiempo,* FROM tabla WHERE...."
Y la forma de utilizarla sería igual que lo que pone Takitei

De lectura obligatoria, la sección correspondiente en el manual de Mysql.
http://dev.mysql.com/doc/mysql/en/Da...functions.html
Ahí encontrarás las funciones NOW(), UNIX_TIMESTAMP() que he utilizado acá.

Saludos
  #8 (permalink)  
Antiguo 26/09/2004, 20:59
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Exacto... eso me pareció bien raro que manejara la fecha de forma independiente. Sin embargo como te dice jpinedo usando la función now() te simplificas muchísimo la vida, de verdad que si.

Además... el método que él te propone de usar el UNIX_TIMESTAMP() es mucho más rápido.... el asunto es que yo no lo conocía.

Lee bien y saca una buena solución eficiente a tu problema. Un saludo!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #9 (permalink)  
Antiguo 27/09/2004, 12:18
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 21 años
Puntos: 0
bueno amigos gracias a todos por su ayuda..

dejare algo en claro, el motivo de que utilizo la fecha en campos separados en la bd es para mas tarde realizar estadisticas de sistema. ya que tendre ke implementar calendarios y filtros de fecha.

__________________
Practicando se Aprede
:-) :-)
  #10 (permalink)  
Antiguo 28/09/2004, 21:56
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Cita:
Iniciado por necu
(...) el motivo de que utilizo la fecha en campos separados en la bd es para mas tarde realizar estadisticas de sistema. ya que tendre ke implementar calendarios y filtros de fecha.
necu:
Los motivos siempre son: estadísticas o formato... pero si leiste el enlace que te puse al manual de Mysql, hay varias funciones que te ayudan a hacer todo eso con los campos DATE o DATETIME... puedes extraer el día, el mes el año, la hora, los minutos, los segundos... sumar, restar fechas (sin esforzarte desde PHP)... darle un formato determinado (dd/mm/yyyy, etc), obtener el Unix_Timestamp, y un montón de cosas más...
Lee el enlace al manual de mysql que te puse

Saludos
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:55.