Foros del Web » Programando para Internet » PHP »

problema con funcion

Estas en el tema de problema con funcion en el foro de PHP en Foros del Web. Hola gente, es una de mis primeras funciones... Y tengo un problema: Si saco esta linea no anda el script: $file_folder = 'archivos'; Y se ...
  #1 (permalink)  
Antiguo 06/03/2010, 18:01
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 10 meses
Puntos: 0
problema con funcion

Hola gente, es una de mis primeras funciones... Y tengo un problema:

Si saco esta linea no anda el script: $file_folder = 'archivos';

Y se supone que con esa linea no tendria que ir porque esta la linea function mostrar($file_folder,$color_claro,$color_oscuro,$c olor).

Cual es el problema?

Código PHP:
function listar_archivos($c,$d){
global 
$file_folder;
$c=time() - filemtime($file_folder.'/'.$c);  
$d=time() - filemtime($file_folder.'/'.$d);  
if(
$c==$d) {  
return 
0;
}
return (
$c $d) ? -1;
}

function 
mostrar($file_folder,$color_claro,$color_oscuro,$color){
$fs = array();
$dir opendir($file_folder);
while (
$file_name readdir ($dir)) {
$fs[]=$file_name;
}
usort($fs,"listar_archivos");
foreach(
$fs as $file_name){
if (
$file_name != "." && $file_name != "..") {
$count=$count++;
if(
$color=="$color_oscuro"){
$color="$color_claro";
}else{
$color="$color_oscuro";
}
echo 
"<b style=background-color:$color>$file_name</b><br>";}
}
closedir ($dir);
}
//-------------------------------------------------
$file_folder 'archivos';
mostrar('archivos','#FFFFFF','#CCCCCC',$color_claro); 
  #2 (permalink)  
Antiguo 06/03/2010, 19:47
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: problema con funcion

Alguna ayuda?
  #3 (permalink)  
Antiguo 06/03/2010, 19:55
Avatar de Mahishasura  
Fecha de Ingreso: enero-2010
Ubicación: En las profundidades del cosmos
Mensajes: 58
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: problema con funcion

Código PHP:
Ver original
  1. function listar_archivos($file_folder,$c,$d){
  2. $c=time() - filemtime($file_folder.'/'.$c);  
  3. $d=time() - filemtime($file_folder.'/'.$d);  
  4. if($c==$d) {  
  5. return 0;
  6. }
  7. return ($c < $d) ? -1 : 1;
  8. }
Fíjate los cambios que hice, con eso al borrar la línea que dices no deberías tener problemas.
Avisa por favor si funcionó, ya que no lo probé.
Saludos
  #4 (permalink)  
Antiguo 06/03/2010, 19:58
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: problema con funcion

Debes visualizar las funciones por separado, a pesar de que está llamando una función dentro de otra función. Lo que está ocurriendo es que la función listar_archivos se ejecuta individual de la función mostrar. La función listar_archivos está buscando una variable fuera de si misma y no la encuentra si le quitas esa línea. Ya que los parámetros que le pases a mostrar son visibles solamente para sí misma y no para la función listar_archivos, que como te dije, se ejecuta por separado, a pesar de que la llamaste dentro de esa función.

Y por favor espera a que se te responda, da un periodo por lo menos de 24 horas. Acuérdate que esto es un foro, no un chat, que te puedan responder a los minutos de colocar la pregunta. Da un periodo razonable para volver a pedir la ayuda.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 06/03/2010, 23:20
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: problema con funcion

No me funciona cambiando esas lineas.

Que puedo cambiar en el codigo para que funcione?

Gracias abimaelrc pero no se como cambiar lo que me explicas xD.

Perdon por el doble post, lo necesitaba urgente.
  #6 (permalink)  
Antiguo 07/03/2010, 15:37
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: problema con funcion

me canse de buscar y no encontre una solucion.
  #7 (permalink)  
Antiguo 07/03/2010, 17:20
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: problema con funcion

Para poder lograrlo como tu deseas, la mejor forma es usando POO (Programación orientada a objetos). Si deseas lograrlo de la forma como lo estas haciendo, necesitas declarar la variable fuera de las funciones para que ambas funciones puedan leerlas y así no escribas varias veces el valor en diferentes variables. Vas a tener que separar esa variable y colocarla fuera de las dos funciones.
Código PHP:
Ver original
  1. $variable = "";
  2. function nombre(){
  3.   global $variable;
  4. }
  5. function otroNombre(){
  6.   global $variable;
  7. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 07/03/2010, 17:41
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: problema con funcion

No se, POO.
No hay otra forma?
  #9 (permalink)  
Antiguo 07/03/2010, 17:44
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: problema con funcion

Pues ¿que te enseñé? Ya te dije una forma de lograrlo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 07/03/2010, 18:43
c0w
 
Fecha de Ingreso: enero-2008
Mensajes: 146
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: problema con funcion

Si es que, lo que explicaste esta claro, pero yo no entiendo como decis que lo haga. Osea te juro que cuando me explican me nublo y cuando me muestran como se ve el codigo se me aclara todo.

Etiquetas: funcion
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 21:59.