Foros del Web » Programando para Internet » PHP »

error: Cannot use a scalar value as an array

Estas en el tema de error: Cannot use a scalar value as an array en el foro de PHP en Foros del Web. buenas! Cannot use a scalar value as an array. esto lo arroja cuando intento calcular las horas trabajadas extraidas de una BD Código PHP:   ...
  #1 (permalink)  
Antiguo 04/11/2009, 09:44
Avatar de sinai21  
Fecha de Ingreso: octubre-2009
Mensajes: 89
Antigüedad: 14 años, 5 meses
Puntos: 0
Exclamación error: Cannot use a scalar value as an array

buenas!

Cannot use a scalar value as an array. esto lo arroja cuando intento calcular las horas trabajadas extraidas de una BD

Código PHP:
 for($i=0$i<=$row=mysql_fetch_array($result_horas); $i++){
   
$acumuladorH=0;    
   
$acumuladorM=0;        
    
$separar[1]=explode(':',$row['h_entrada']); 
    
$separar[2]=explode(':',$row['h_salida']); 

$total_minutos_trasncurridos[1] = ($separar[1][0]*60)+$separar[1][1]; 
$total_minutos_trasncurridos[2] = ($separar[2][0]*60)+$separar[2][1]; 
$total_minutos_trasncurridos $total_minutos_trasncurridos[1] - $total_minutos_trasncurridos[2]; 

if(
$total_minutos_trasncurridos<=59
    echo(
':'.$total_minutos_trasncurridos.' Minutos'); 
elseif(
$total_minutos_trasncurridos>59){ 
    
$HORA_TRANSCURRIDA round($total_minutos_trasncurridos/60); 
    
$acumulador=$acumulador+$HORA_TRANSCURRIDA;
     
$acumulador++;    
if(
$HORA_TRANSCURRIDA<=9)
     
$HORA_TRANSCURRIDA='0'.$HORA_TRANSCURRIDA
    
$MINUITOS_TRANSCURRIDOS $total_minutos_trasncurridos%60
       
$acumuladorM=$acumuladorM+$MINUITOS_TRANSCURRIDOS
        
$acumuladorM++;  
if(
$MINUITOS_TRANSCURRIDOS<=9
    
$MINUITOS_TRANSCURRIDOS='0'.$MINUITOS_TRANSCURRIDOS
echo ( 
$acumulador.':'$acumuladorM.' Horas'); 


}  


}
//llave del FOR 
cuando le paso en la consulta el rango de fechas:

20 MINUTOS
13:30 - 13:50

me muestralos minutos de las horas traidas de la BD.

PERO cuando traigo varias horas de la consulta a la BD por fechas:

13:30 - 13:50

12:30 - 13:50

14:30 - 15:50


me da el error antes escrito!

no se como hacer para que me de el total de horas trabajadas, fecha por fecha y luego mostrar el total de todas esas horas.


AGRADECERIA EN EL alma su ayuda. GRACIAS
  #2 (permalink)  
Antiguo 04/11/2009, 09:51
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: error: Cannot use a scalar value as an array

en que línea te da el error?, además el ciclo for está malo, eso siempre te devolverá un array o false, usa mejor while
  #3 (permalink)  
Antiguo 04/11/2009, 10:02
Avatar de sinai21  
Fecha de Ingreso: octubre-2009
Mensajes: 89
Antigüedad: 14 años, 5 meses
Puntos: 0
Exclamación Respuesta: error: Cannot use a scalar value as an array

amigo asi me da lo siguiente:

horas entrada - horas salida

:-18 Minutos
16:16:00 - 16:34:00


Warning: Cannot use a scalar value as an array in C:\xampp\htdocs\p_s_contraloria\horas_trabajadas.p hp on line 45

Warning: Cannot use a scalar value as an array in C:\xampp\htdocs\p_s_contraloria\horas_trabajadas.p hp on line 46
:0 Minutos
13:20:00 - 14:21:00


Warning: Cannot use a scalar value as an array in C:\xampp\htdocs\p_s_contraloria\horas_trabajadas.p hp on line 45

Warning: Cannot use a scalar value as an array in C:\xampp\htdocs\p_s_contraloria\horas_trabajadas.p hp on line 46
:0 Minutos
10:05:00 - 10:43:00



las lineas del error son estas:

45 $total_minutos_trasncurridos[1] = ($separar[1][0]*60)+$separar[1][1];
46 $total_minutos_trasncurridos[2] = ($separar[2][0]*60)+$separar[2][1];



SOLO me da los minutos en la primera hora.

gracias a quien pueda ayudar!
  #4 (permalink)  
Antiguo 04/11/2009, 15:15
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: error: Cannot use a scalar value as an array

creo que el problema es el ciclo, no se, trata de correrlo en frió puede ser que no finalice cuando el puntero llegue a EOF y por ende explode no te devuelva un array (porque el $row esté vacío)

por eso es mejor usarlo así: al fin y al cabo no veo que uses el contador $i

while($row=mysql_fetch_array($result_horas)){
...
}
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 10:54.