Foros del Web » Programando para Internet » PHP »

dudas como crear algo en php

Estas en el tema de dudas como crear algo en php en el foro de PHP en Foros del Web. el titulo no describe mucho es por la simple razón que no se como nombrarlo xd lo que pasa es que estoy haciendo unos reportes ...
  #1 (permalink)  
Antiguo 14/03/2013, 13:06
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Pregunta dudas como crear algo en php

el titulo no describe mucho es por la simple razón que no se como nombrarlo xd

lo que pasa es que estoy haciendo unos reportes que tienen un tiempo asignado
con colores los marca en la búsqueda.

rojo si no cumplen
verde si lo cumplen

estos reportes tienen etapa por ejemplo pre-diagnostico tiene como tiempo máximo 30 minutos, después diagnostico tiene como tiempo 60 minutos y así.

y lo estoy realizando pero pero marca rojo o verde después que se ingreso la etapa siguiente.

y lo quiero hacer es que aparezca el color rojo automáticamente cuando no se cumpla el tiempo no esperando que se ingrese el otro registro para marcar si se cumplió o no en el tiempo designado.


disculpen si no me entienden estaré atento para responder sus dudas, códigos no se si colocar les dado que no hace exactamente lo que les menciones.


muchas gracias de ante mano agradecería demasiado su ayuda.
  #2 (permalink)  
Antiguo 14/03/2013, 13:11
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: dudas como crear algo en php

la verdad es que no entendí nada
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 14/03/2013, 13:18
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: dudas como crear algo en php

Cita:
Iniciado por maycolalvarez Ver Mensaje
la verdad es que no entendí nada
te entiendo xd

por lo menos yo entiendo lo que dice por que se de que se trata el problema

pero no se como explicárselos bien a ustedes :/


yo creo que en términos simples quiero que el reporte marque rojo(como no cumplido)

cuando ya paso el tiempo que le asigne
  #4 (permalink)  
Antiguo 14/03/2013, 13:22
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: dudas como crear algo en php

recapitulemos, quieres un reporte que analice en función de fechas y que en determinada condición las marque como rojo (no cumplida)

analiza el problema, eso consiste en separar pequeñas partes, como por ejemplo resuelve primero el reporte en sí, que se muestre

luego de que logras lo esencial, una tabla que muestre los registros, evalúa contra qué vas a comparar cada registro para determinar si se cumple o no, evalua las entradas de datos ¿quien los provee?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 14/03/2013, 13:27
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: dudas como crear algo en php

Cita:
Iniciado por maycolalvarez Ver Mensaje
recapitulemos, quieres un reporte que analice en función de fechas y que en determinada condición las marque como rojo (no cumplida)

analiza el problema, eso consiste en separar pequeñas partes, como por ejemplo resuelve primero el reporte en sí, que se muestre

luego de que logras lo esencial, una tabla que muestre los registros, evalúa contra qué vas a comparar cada registro para determinar si se cumple o no, evalua las entradas de datos ¿quien los provee?
eso eso eso gracias :)

mira el reporte ya lo tengo funcionando y muestra los registros, ya tengo el calculo de los datos de cada etapa por ejemplo un registro tiene 5 etapas y cada una con su tiempo. logro mostrar los tiempos y casi cumplió o no su tiempo con los colores rojo y verde.

pero esos colores los muestra al ya pasar de una etapa otra por ejemplo tengo un registro en pre-diagnostico que tiene como tiempo base 30 minutos para cumplirse y ingreso el otro estado de diagnostico al día siguiente y recién al ingresar eso me marca a rojo.

lo que quiero es que al pasar esos 30 minutos al tiro pase el registro a rojo, no al esperar que se ingrese la otra etapa para saber.


gracias.
  #6 (permalink)  
Antiguo 14/03/2013, 13:38
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: dudas como crear algo en php

mmm, ¿necesitas eso en caliente?, es decir, según lo que veo necesitas marcar el registro en rojo cuando pasen los 30 minutos, independientemente de que le preceda otro.

me temo que necesitas un cronjob
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #7 (permalink)  
Antiguo 14/03/2013, 13:46
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: dudas como crear algo en php

Cita:
Iniciado por maycolalvarez Ver Mensaje
mmm, ¿necesitas eso en caliente?, es decir, según lo que veo necesitas marcar el registro en rojo cuando pasen los 30 minutos, independientemente de que le preceda otro.

me temo que necesitas un cronjob
si y no
si necesito marcarlo en rojo si no cumple ese tiempo
y no el otro que lo precede también tiene su tiempo para cumplirse y dependerá de ese tiempo si también lo marca rojo o verde.


aparte me pillaste con eso del cronjob es lo mismo que crontab? si es así no se ocuparlo :/


muchas gracias por las respuestas
  #8 (permalink)  
Antiguo 14/03/2013, 15:51
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: dudas como crear algo en php

Deberías postear el código del bucle donde, dado un registro, procesas las etapas, y asignas colores.
  #9 (permalink)  
Antiguo 15/03/2013, 06:09
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: dudas como crear algo en php

aca va el codigo espero que lo entiendan

esta el la funcion para calcular la hora, ademas de los tiempos de cada etapa antes mencionada
calculo.php
Código PHP:
Ver original
  1. function str2ts( $time ) {
  2.         $atime = explode(':', $time);
  3.         return mktime((int)$atime[0], (int)$atime[1], (int)$atime[2]);
  4.     }
  5.  
  6.     function ts_time_diff( $ts_after, $ts_before ) {
  7.         global $pers;
  8.         if( !isset($pers) )
  9.             $pers = array(array(60, ':%2d hrs'), array(60, ':%2d'), array(24, '%d'),'%d dias ');
  10.         $str_diff = '';
  11.         $ts_diff = $ts_after - $ts_before;
  12.         if( $bln_neg = $ts_diff < 0 )
  13.             $ts_diff *= -1;
  14.         for( $i = 0; $i < count($pers) - 1; $i ++ ) {
  15.             $str_diff = sprintf($pers[$i][1], $ts_diff % $pers[$i][0]). $str_diff;
  16.             $ts_diff = (int)$ts_diff / $pers[$i][0];
  17.         }
  18.         $str_diff = sprintf($pers[$i], $ts_diff). $str_diff;
  19.         return ($bln_neg ? '-' : ''). $str_diff;
  20.     }
  21.  
  22.     function buscaHora($codigo,$folio,$hora,$fecha,$r=false){
  23.         include_once 'mySQLData.php';
  24.  
  25.         $info2      =   array();
  26.         $info2[0]   =   'Pre-Diagnostico';
  27.         $info2[1]   =   'Diagnostico';
  28.         $info2[2]   =   'Desarrollo';
  29.         $info2[3]   =   'Solucion';
  30.         $info2[4]   =   'Cierre-Folio';
  31.  
  32.         $min        =   array();
  33.         $min[0]     =   30;
  34.         $min[1]     =   60;
  35.         $min[2]     =   120;
  36.         $min[3]     =   180;
  37.         $min[4]     =   210;
  38.  
  39.         $key        =   0;
  40.  
  41.         foreach ($info2 as $k => $v) {
  42.             if($v == $codigo)
  43.                 $key = $k;
  44.         }
  45.  
  46.         if($key>0){
  47.             $key--;
  48.             $base = new mySQLData();
  49.             $sql = "SELECT hora,fecha FROM registro WHERE folio = '{$folio}' AND codigo_estado = '{$info2[$key]}' ";
  50.             $result = $base->consulta($sql);
  51.             $arreglo = mysql_fetch_assoc($result);
  52.             if($fecha == $arreglo['fecha']){
  53.                 if($r){
  54.                     return ( str2ts($hora)-str2ts($arreglo['hora']) )/60 > $min[$key+1] ? 1:0;
  55.                 }
  56.                 else{
  57.                     if(ts_time_diff( str2ts($hora),str2ts($arreglo['hora']))!='0')
  58.                         echo ts_time_diff( str2ts($hora),str2ts($arreglo['hora']) );
  59.                     else
  60.                         return 0;
  61.                 }
  62.             }
  63.             else{
  64.                 if($r)
  65.                     return 1;
  66.                 else
  67.                     echo '1 día o más de diferencia';
  68.             }
  69.  
  70.         }
  71.         else{
  72.             return 'Sin tiempo';
  73.         }
  74.     }
  75. ?>


estracto del reporte donde muestro el tiempo que se demoro y el codigo de los colores que los trae de un css
Código PHP:
Ver original
  1. <?php if( isset( $rs )) {
  2.         $tfolio = 0;
  3.         include_once 'calculo.php';
  4.  
  5.  
  6.  
  7.    while ($row=mysql_fetch_object($rs)):
  8.  
  9.     if(isset($_POST['ncmp']) && $_POST['ncmp'] == 'si'){
  10.  
  11.         if(buscaHora($row->codigo_estado, $row->folio, $row->hora,$row->fecha,true)!=0){
  12.             if( $tfolio != $row->folio) {
  13.                 $tfolio = $row->folio;
  14.  
  15.            ?>
  16.           <tr class="<?=buscaHora($row->codigo_estado, $row->folio, $row->hora,$row->fecha,true)==0?'success':'error';?>" >
  17.     <td><a target="_blank" onClick="window.open(this.href, this.target, 'width=800,height=450, scrollbars=yes'); return false ;" style="text-decoration: none" href="ver.php?folio=<?php echo $row->folio ?>" title=""><?php echo $row->folio; ?></a></td>
  18.     <td><?php echo $row->nombre_empresa; ?></td>
  19.     <td><?php echo $row->responsable;?></td>
  20.     <td><?php echo $row->mesa; ?></td>
  21.     <td><?php echo $row->codigo_estado; ?></td>
  22.     <td><?php echo $row->fecha; ?><br /> <?php echo $row->hora;?></td>
  23.       <td><?php echo buscaHora($row->codigo_estado, $row->folio, $row->hora,$row->fecha); ?></td>
  24.           </tr>
  25.           <?php }
  26.         }
  27.     }
  28.     else{
  29.         if( $tfolio != $row->folio) {
  30.             $tfolio = $row->folio;
  31.  
  32.        ?>
  33.       <tr class="<?=buscaHora($row->codigo_estado, $row->folio, $row->hora,$row->fecha,true)==0?'success':'error';?>" >
  34.         <td><a target="_blank" onClick="window.open(this.href, this.target, 'width=800,height=450, scrollbars=yes'); return false ;" style="text-decoration: none" href="ver.php?folio=<?php echo $row->folio ?>" title=""><?php echo $row->folio; ?></a></td>
  35.         <td><?php echo $row->nombre_empresa; ?></td>
  36.         <td><?php echo $row->responsable;?></td>
  37.         <td><?php echo $row->mesa; ?></td>
  38.         <td><?php echo $row->codigo_estado; ?></td>
  39.         <td><?php echo $row->fecha; ?> <?php echo $row->hora;?></td>
  40.         <td><?php echo buscaHora($row->codigo_estado, $row->folio, $row->hora,$row->fecha); ?></td>
  41.       </tr>
  42.         <?php } ?>
  43.     <?php } ?>
  44.   <?php endwhile; }?>

css de los colores
Código PHP:
Ver original
  1. <style type="text/css">
  2. <!-- colores de los reportes rojo y verde-->
  3.  
  4. .error{
  5.     background-color: #dd0000;
  6. }
  7. .success{
  8.     background-color: #00bb00;
  9. }
  10. .error td, .error a, .success td, .success a{
  11.     color: white;
  12. }
  13. </style>

eso seria lo que ocupo para mostar los tiempos y asignarles el color segun se retrasa o no el estado.

si no lo entienden :( basicamente lo que hace la funcion llamada calculo.php hace el calculo de los tiempos y en el reporte los traigo y muestro cada tiempo y la etapa segun va rojo o verde.

pero ese calculo lo realiza despues de ingresar la otra etapa y resta las horas, lo que quiero hacer es mostar automaticamente rojo si no cumplieron en el tiempo, no esperar el otro estado para realizar el calculo



muchas gracias por las respuestas espero que me entiendan :)

Última edición por rodrigo193; 15/03/2013 a las 06:14
  #10 (permalink)  
Antiguo 15/03/2013, 12:48
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: dudas como crear algo en php

alguna solución? necesito solucionar este problema urgente :c


agradecería demasiado su ayuda
  #11 (permalink)  
Antiguo 15/03/2013, 15:52
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: dudas como crear algo en php

Cita:
pero esos colores los muestra al ya pasar de una etapa otra por ejemplo tengo un registro en pre-diagnostico que tiene como tiempo base 30 minutos para cumplirse y ingreso el otro estado de diagnostico al día siguiente y recién al ingresar eso me marca a rojo.
Y eso es porque pre-diagnostico es el elemento 0 de los arrays que utilizas en la función buscaHora.Pero, en esa función, sólo procesas cuando el elemento es > 0:
Código PHP:
Ver original
  1. ....
  2.  foreach ($info2 as $k => $v) {
  3.             if($v == $codigo)
  4.                 $key = $k;
  5.         }
  6.  
  7.         if($key>0){
  8.         .....
  9.         }
  10.         else{
  11.             return 'Sin tiempo'; // <---- Esta función devuelve 1/0 o "Sin tiempo??"
  12.             // En cualquier caso, si devuelves "Sin tiempo", por el modo en el que
  13.             // haces el test en el html, va a salir siempre en rojo.
  14.         }
  #12 (permalink)  
Antiguo 15/03/2013, 20:34
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: dudas como crear algo en php

pre-diagnostico le tengo siempre "sin tiempo" cuando todavía esta en esa etapa(en teoria siempre esta en verde xd) dado que no estoy calculando los tiempos al instantes, pero ya registrando el diagnostico y paso los 30 min quiere decir que la etapa anterior es la que se demoro

por eso quiero que calculo los tiempos al instantes para no tener que esperar el ingreso de la otra etapa y ver si cumplio el tiempo o no
  #13 (permalink)  
Antiguo 15/03/2013, 20:35
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: dudas como crear algo en php

pre-diagnostico le tengo siempre "sin tiempo" cuando todavía esta en esa etapa(en teoria siempre esta en verde xd) dado que no estoy calculando los tiempos al instantes, pero ya registrando el diagnostico y paso los 30 min quiere decir que la etapa anterior es la que se demoro

por eso quiero que calculo los tiempos al instantes para no tener que esperar el ingreso de la otra etapa y ver si cumplio el tiempo o no

ups lo siento no se por q se repitio la respuesta

Etiquetas: dudas, registro
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 19:48.