Foros del Web » Programando para Internet » PHP »

Fatal error en ejecucion. Ayuda!

Estas en el tema de Fatal error en ejecucion. Ayuda! en el foro de PHP en Foros del Web. Hola a tod@s: Tengo un problema utilizando una función me salta el siguiente error: Fatal error: Cannot redeclare dif() (previously declared in C:\wamp\www\alfredo\fichaje_desarrollo\restahoras. php:2) in ...
  #1 (permalink)  
Antiguo 15/12/2008, 10:24
 
Fecha de Ingreso: junio-2008
Mensajes: 56
Antigüedad: 15 años, 10 meses
Puntos: 1
Fatal error en ejecucion. Ayuda!

Hola a tod@s:

Tengo un problema utilizando una función me salta el siguiente error:

Fatal error: Cannot redeclare dif() (previously declared in C:\wamp\www\alfredo\fichaje_desarrollo\restahoras. php:2) in C:\wamp\www\alfredo\fichaje_desarrollo\restahoras. php on line 7

La función la tengo en una pagina llamada restahoras.php, es una funcion que dada 2 horas diferentes calcula su resta:

restahoras.php:

Cita:
<?php
function dif($h1,$h2){
$h=((strtotime($h1)-strtotime($h2)))/3600;
$m=intval((($h)-intval($h))*60);
$s=intval((((($h)-intval($h))*60)-$m)*60);
return (intval($h)<10?'0'.intval($h):intval($h)).':'.($m< 10?'0'.$m:$m).':'.($s<10?'0'.$s:$s);
}
?>
En la misma aplicación la estoy utilizando en otro tipo de consultas y funciona perfectamente, no sale ningún error ni nada, pero en el trabajo que estoy haciendo, invocándo la función de la misma manera me salta este error.

meses_usuarios.php:

Cita:
include("restahoras.php");
$array_horas = array ();

$cont = 1;

for($cont; $cont <= $dias_mes; $cont++){

$hora_entrada = $array_dias[$cont]["Entrada"]["hora"];
$hora_salida = $array_dias[$cont]["Salida"]["hora"];

$array_horas[$cont]["total"] = dif($hora_salida,$hora_entrada);
}
Donde $array_dias es un array donde tengo las horas de entrada y de salida, y en array_horas lo que quiero hacer es almacenar esas horas y restarlas.

Haber si alguien me puede echar una mano. Muchas Gracias.
  #2 (permalink)  
Antiguo 15/12/2008, 10:28
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Fatal error en ejecucion. Ayuda!

Lo que se puede apreciar es que estas declarando la función dos veces, es posible que incluyas en una página ese archivo y que este lo incluyas en la principal, esto provoca que lo incluyes dos veces. Revisate bien eso.

O puede ser que lo tienes dentro de un bucle.

Saludos y suerte
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 15/12/2008, 10:28
Avatar de Snd234  
Fecha de Ingreso: mayo-2007
Ubicación: Frente al PC
Mensajes: 413
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: Fatal error en ejecucion. Ayuda!

El error no te dice nada sobre algún problema de sintaxis, el error esta en que estas incluyendo tu archivo mas de una vez, por lo que estas creando 2 funciones con el mismo nombre, lo que no se puede. Una solución, seria incluir los archivos con la función include_once en vez de include y ve que ocurre.
__________________
KIBIT.cl
  #4 (permalink)  
Antiguo 15/12/2008, 10:28
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Fatal error en ejecucion. Ayuda!

Pues el error sale porque estas tratando de REDECLARAR la funcion dif(). Revisa tu codigo y asegurate de que no la estes declarando en alguna otra parte.
  #5 (permalink)  
Antiguo 15/12/2008, 10:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Fatal error en ejecucion. Ayuda!

Eso te indica que la funcion ya fue previamente declarada, revisa eso, que la funcion no exista antes de declararla.

Saludos.
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 18:33.