Foros del Web » Programando para Internet » PHP »

Archivos php

Estas en el tema de Archivos php en el foro de PHP en Foros del Web. Mediante el siguiente codigo sumo mis archivos que estan en mi carpeta files:Al principio cuando hice click en el boton aceptar me mostro una suma ...
  #1 (permalink)  
Antiguo 21/02/2011, 13:23
 
Fecha de Ingreso: septiembre-2009
Mensajes: 138
Antigüedad: 14 años, 6 meses
Puntos: 3
Archivos php

Mediante el siguiente codigo sumo mis archivos que estan en mi carpeta files:Al principio cuando hice click en el boton aceptar me mostro una suma de 3 pero no hubo ningun archivo colgado todavia en esa carpeta; ahora tengo 7 archivos y me suma 10 o sea me suma tres de mas. En conclusion como hago para rectificar ese error que suma tres de mas.en que parte del codigo va.... gracias.

<?php


if(isset($_POST["mostrararch"]))

{
$path="files/";
$directorio = opendir($path);
$archivos=array();
while (($item = readdir($directorio)))
{
$archivos[]=$item; }
closedir($directorio); $contador=count($archivos) ;
echo $contador;
}


?>
  #2 (permalink)  
Antiguo 21/02/2011, 13:39
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 10 meses
Puntos: 528
Respuesta: Archivos php

Ese código está contando el numero de archivos en un directorio. Pero también toma en cuenta los enlaces al directorio superior, es decir el ./ y el ../
Si sólo vas a sumar y no va a haber subcarpetas, resta 2.

O bien antes de sumar, verifica que el archivo no es un directorio con
if (!is_dir($item))
$contador++;
  #3 (permalink)  
Antiguo 21/02/2011, 13:40
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 3 meses
Puntos: 51
Respuesta: Archivos php

Probá cambiar

Código PHP:
Ver original
  1. while (($item = readdir($directorio)))
  2. {

por

Código PHP:
Ver original
  1. while (false !== ($item= readdir($directorio))) {

Tendrías que ver si no está contando directorios también ( por ej. "." y ".." ).

De todas formas, para mi es mucho más facil usar la función glob().

Por ejemplo:

Código PHP:
Ver original
  1. $items = glob($path."*.*");

Etiquetas: Ninguno
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 23:35.