hola buenas tardes tengo un problemilla en un codigo de calculo entre 2 horas
lo que pasa es que si calcula bien pero cuando pasa mas de un día no los cuenta
los datos de las horas los trae de registros en la base de datos dependiendo de los diferentes estados (1,2,3,4,5)

ejemplo de resultado: 0 dias 0: 6:43 hrs
y cuando pasa mas de un dias quedaría haci: 0 dias 0: 6:43 hrs
no sale de 0 los días solo quiero que cuente los días también


<?php


function resta($inicio, $fin){
$dif=date("H:i:s", strtotime("00:00:00") + strtotime($fin) - strtotime($inicio) );
return $dif;
}

function str2ts( $time ) {
$atime = explode(':', $time);
return mktime((int)$atime[0], (int)$atime[1], (int)$atime[2]);
}

function ts_time_diff( $ts_after, $ts_before ) {
global $pers;
if( !isset($pers) )
$pers = array(array(60, ':%2d hrs'), array(60, ':%2d'), array(24, '%d'),'%d dias ');
$str_diff = '';
$ts_diff = $ts_after - $ts_before;
if( $bln_neg = $ts_diff < 0 )
$ts_diff *= -1;
for( $i = 0; $i < count($pers) - 1; $i ++ ) {
$str_diff = sprintf($pers[$i][1], $ts_diff % $pers[$i][0]). $str_diff;
$ts_diff = (int)$ts_diff / $pers[$i][0];
}
$str_diff = sprintf($pers[$i], $ts_diff). $str_diff;
return ($bln_neg ? '' : ''). $str_diff;
}

function buscaHora($codigo,$folio,$hora,$r=false){
include_once 'mySQLData.php';

$info2 = array();
$info2[0] = '1';
$info2[1] = '2';
$info2[2] = '3';
$info2[3] = '4';
$info2[4] = '5';

$min = array();
$min[0] = 30;
$min[1] = 60;
$min[2] = 120;
$min[3] = 180;
$min[4] = 210;

$key = 0;

foreach ($info2 as $k => $v) {
if($v == $codigo)
$key = $k;
}

if($key>0){
$key--;
$base = new mySQLData();
$sql = "SELECT hora FROM tabla WHERE id = '{$id}' AND codigo = '{$info2[$key]}' ";
$result = $base->consulta($sql);
$arreglo = mysql_fetch_assoc($result);
if($r){
return ( str2ts($hora)-str2ts($arreglo['hora']) )/60 > $min[$key+1] ? 1:0;
}
else{
if(ts_time_diff( str2ts($hora),str2ts($arreglo['hora']))!='0')
echo ts_time_diff( str2ts($hora),str2ts($arreglo['hora']) );
else
return 0;
}
}
else{
return 0;
}
}
?>

el problema es que ese código no calcula la fecha por en de no muestra los días que pasaron y por eso siempre queda en 0.
en la base de datos también guardo la fecha pero no se como unirla al código para que reste y diga ohh paso 1 día 6: 9: 1 hrs.

saludos y gracias