Foros del Web » Programando para Internet » PHP »

que hago mal?

Estas en el tema de que hago mal? en el foro de PHP en Foros del Web. hola tengo estos códigos: function listar_archivos() { $carpeta = opendir('./archivos'); while(readdir($carpeta)) { $m++; } $archivos = array(); for ($s=0; $s<$m; $s++) { while ($archivos[$s] = ...
  #1 (permalink)  
Antiguo 27/04/2005, 13:29
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 12 años, 9 meses
Puntos: 4
que hago mal?

hola tengo estos códigos:

function listar_archivos() {
$carpeta = opendir('./archivos');
while(readdir($carpeta)) {
$m++;
}
$archivos = array();
for ($s=0; $s<$m; $s++) {
while ($archivos[$s] = readdir($carpeta));
}
closedir($carpeta);
return $archivos;
}

y

$archivos = array();
$archivos = listar_archivos();
$m = sizeof($archivos);
reset($archivos);
for ($s=0; $s<$m; $s++) {
echo $archivos[$s] . '<br>';
}

nose que hago ma le todo esto peo el problema es que no me lista nada,
solo los "<br>" s que pongo.

Por favor me podrian decir en donde esta mi torpeza.

(Aproposito el codigo es para listar archivos y directorios)
  #2 (permalink)  
Antiguo 27/04/2005, 13:34
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
una vez que ya mandaste llamar readdir hasta terminar con todos los archivos debes usar rewinddir() para inicializar el stream del handler del directorio nuevamente

http://mx2.php.net/manual/en/function.rewinddir.php

saludos
  #3 (permalink)  
Antiguo 27/04/2005, 13:59
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 12 años, 9 meses
Puntos: 4
como asi como haria eso prodrias esplicarmelo mejor sism82.
  #4 (permalink)  
Antiguo 27/04/2005, 14:19
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
De acuerdo ok Aqui va mi solucion

Si lo que quieres es ver los archivos dentro de una carpeta yo hize este script que es el que uso siempre.

Aqui procura cambiar /carpeta/ por la ruta correcta donde tienes los archivos de tu servidor.

Código PHP:
<?php
$tm 
opendir($DOCUMENT_ROOT."/carpeta/");

while(
$fichero=readdir($tm)){
  if(
$fichero!="." && $fichero!=".."){
   echo 
$fichero."<br>";
  }
}
?>
Saludos,
  #5 (permalink)  
Antiguo 28/04/2005, 09:04
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 12 años, 9 meses
Puntos: 4
Podria hacer eso en una funcion para aplicarla en varias paginas?.
Lo intente colocando el resultado en un array pero no tuve resultado....
Alguna otra pinion!

AH! gracias a los dos por sus respuetas
  #6 (permalink)  
Antiguo 28/04/2005, 10:16
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
De acuerdo Aqui te va como funcion

Esta es la funcion que devuelve un array.

Código PHP:
<?php
function listarCarpeta($carpeta){
 
$tm opendir($carpeta);
  while(
$fichero=readdir($tm)){ 
    if(
$fichero!="." && $fichero!=".."){ 
     
$lista $lista.$fichero.","
    } 
  } 
  
$archivos explode(",",$lista);
  return 
$archivos;
}
?>
Aqui esta el ejemplo de como usarla:

Código PHP:
<?php
$carpeta 
$DOCUMENT_ROOT."/carpeta/";
$lista listarCarpeta($carpeta);

$i 0;
while(
$i<=count($lista)){
 echo 
$lista[$i]."<br>";
$i++;
}
?>
Saludos,
  #7 (permalink)  
Antiguo 28/04/2005, 11:18
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 12 años, 9 meses
Puntos: 4
Holas Dwaks gracias por el código le hice una pequeña modificacion piuesto que mostraba dos líneas en blanco más (megustaría sber porque son esas dos lienas mas?).

Lo solucione restando 2 al count($lista) osea asi:

while ($i<=count($lista)-2) {
...
}
  #8 (permalink)  
Antiguo 28/04/2005, 11:21
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
debe ser que a la hora de concatenar por comas "," y despues tranforme eso a array usando como divisor la coma al final se dividia sin valor y eso quedaria vacio.

Pero me alegro que te funcione.

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 20:58.