Problema scandir()
Buenas, al cambiar de host me ha surgido un problema debido a la version de PHP. Mi antiguo host tenia PHP 5 instalado, en el nuevo tengo PHP 4.3 por lo que la funcion scandir() no está soportada. Siguiendo las indicaciones de php.net, que te da una forma alternativa para PHP 4, he cambiado el script para no usar scandir(), pero no da resultados del todo buenos.
El script basicamente contaba el numero de archivos que hay en carpetas, el nombre de las carpetas le llegaba mediante una array.
Antes el script era así:
$query = mysql_query('SELECT * FROM album WHERE borrado=0 ORDER BY date DESC');
while ($row = mysql_fetch_array($query))
{
$dir = $row["directorio"];
$archivos = scandir($dir);
echo count($archivos);
echo '<br>';
}
Esto basicamente me da el numero de ficheros en cada carpeta de la array por separado.
En php 4, creo que se hace así:
$query = mysql_query('SELECT * FROM album WHERE borrado=0 ORDER BY date DESC');
while ($row = mysql_fetch_array($query))
{
$dir = $row["directorio"];
$dh = opendir($dir);
while(false !== ($nombre_archivo = readdir($dh)))
{
$archivos[] = $nombre_archivo;
}
$count = count($archivos)
echo $count;
echo '<br>';
$count = 0; // Esto no se si debo usarlo, lo he añadido yo para que $count se resetee
closedir($dh);
}
Y va bien a medias, al devolver el numero de ficheros de cada carpeta, le suma el anterior, como si se fueran acumulando en el $count (por eso le he puesto $count = 0 al final del while, pero aun así sigue igual).
Para que lo entendais mejor, si el primer script devuelve:
1 3 2 1 5
El segundo devuelve:
1 4 6 7 12
Llevo ya mucho dándole vueltas, y no sé que falla, estoy confuso..
Si alguien pudiera arrojarme un poco de luz se lo agradecería.
Gracias de antemano y un saludo !!
dagi3d
lo que tendrías que hacer es inicializar la variable $archivos cada vez que leas un directorio, ya que los está añadiendo todo el rato sobre la misma variable y por eso el problema no está en la variable $count. de hecho si te fijas, en el segundo caso es la suma de los valores que te va dando el primero:
<code>
...
$archivos = array();
while(false !== ($nombre_archivo = readdir($dh)))
{
$archivos[] = $nombre_archivo;
}
...
</code>
makea
:o que jefe !
muchisimas gracias, mira que era sencillo xD
byes
ventdaval
conoces glob()? ^^