Ver Mensaje Individual
  #9 (permalink)  
Antiguo 15/03/2013, 06:09
rodrigo193
 
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