he hecho un script que recoge unas fechas de una base de datos y obtiene las horas transcurridas desde el momento actual hasta dicha fecha.(funcona, comprobado con print).Pero llevo un rato comoiendome la cabeza y no consigo ver el fallo....
Lo que hago es mandar la diferencia de horas a una funcion que me suma 1 a la posicion [diferencia-1] de un array. de esta manera si han transcurrido dos horas me sumara 1 a la posicion 1 del array, si han transcurrido 24 horas me sumara 1 a la posicion 23 del array...el problema es que cada vez que llamo a funcion no me devuelve lo que quiero,sino que me devuelve el array vacio...no se si porque la llamo mal o porque le paso mal los datos (y me los pisa o algo).
os dejo aqui la funcion y el script:
Código PHP:
<?php
function resta($num,$array)
{
if($num > 0){
$array[$num-1]=$array[$num-1]+1;
}
elseif($num<=0){
switch ($num):
case "0":
$array[23]=$array[23]+1;
break;
case "-1":
$array[22]=$array[22]+1;
break;
case "-2":
$array[21]=$array[21]+1;
break;
case "-3":
$array[20]=$array[20]+1;
break;
case "-4":
$array[19]=$array[19]+1;
break;
case "-5":
$array[18]=$array[18]+1;
break;
case "-6":
$array[17]=$array[17]+1;
break;
case "-7":
$array[16]=$array[16]+1;
break;
case "-8":
$array[15]=$array[15]+1;
break;
case "-9":
$array[14]=$array[14]+1;
break;
case "-10":
$array[13]=$array[13]+1;
break;
case "-11":
$array[12]=$array[12]+1;
break;
case "-12":
$array[11]=$array[11]+1;
break;
case "-13":
$array[10]=$array[10]+1;
break;
case "-14":
$array[9]=$array[9]+1;
break;
case "-15":
$array[8]=$array[8]+1;
break;
case "-16":
$array[7]=$array[7]+1;
break;
case "-17":
$array[6]=$array[6]+1;
break;
case "-18":
$array[5]=$array[5]+1;
break;
case "-19":
$array[4]=$array[4]+1;
break;
case "-20":
$array[3]=$array[3]+1;
break;
case "-21":
$array[2]=$array[2]+1;
break;
case "-22":
$array[1]=$array[1]+1;
break;
case "-23":
$array[0]=$array[0]+1;
break;
endswitch;
}
return $array;
}
$link =mysql_connect($host, $user, $password);
mysql_select_db($nombreBD,$link);
$ult_hora = "SELECT * FROM llamadas WHERE iniciollamada > DATE_SUB(NOW(), INTERVAL 1 day)";
$sol=array();
for ($i=0;$i<=23;$i++) {
$sol[$i]=0;
}
$sol2=array();
for ($i=0;$i<=23;$i++) {
$sol2[$i]=0;
}
$sol3=array();
for ($i=0;$i<=23;$i++) {
$sol3[$i]=0;
}
$fechaahora=date("d/m/Y | H:i:s");
$hora_act=substr($fechaahora,13,2);
$busq = mysql_query($ult_hora);
if(mysql_num_rows($busq)!=0){
while($row = mysql_fetch_array($busq)){
$principio=$row['iniciollamada'];
$fin=$row['desconexionllamada'];
$horaini=substr($principio,11,2);
$horafin=substr($fin,11,2);
$dif_ini=$hora_act-$horaini;
$dif_fin=$hora_act-$horafin;
//print("$principio, $horaini<br>");
//print("$fin, $horafin<br>"); con estos tres prints compruebo que funciona
//print("$dif_ini,$dif_fin<br>");
$sol2=resta($dif_pri,$sol2);//aqui esta el fallo!!!
$sol3=resta($dif_fin,$sol3);
}
}
for ($i=0;$i<=23;$i++) {
$sol[i]=$sol2[i]+$sol3[i];
print("$sol[$i]");
}
?>