Foros del Web » Programando para Internet » PHP »

problema con funciones y arrays

Estas en el tema de problema con funciones y arrays en el foro de PHP en Foros del Web. buenas, he hecho un script que recoge unas fechas de una base de datos y obtiene las horas transcurridas desde el momento actual hasta dicha ...
  #1 (permalink)  
Antiguo 08/02/2006, 04:25
 
Fecha de Ingreso: noviembre-2005
Mensajes: 139
Antigüedad: 12 años
Puntos: 0
problema con funciones y arrays

buenas,
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]");
}
?>
gracias

Última edición por apuenco; 08/02/2006 a las 05:11
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 16:30.