Este es un sencillo script de PHP que nos permite generar un archivo XML con el listado de todos los archivos y carpetas que esten contenidos dentro del directorio en el que hemos situado el archivo PHP.
Esto nos puede resultar útil para realizar galerías fotográficas en las que queremos acceder a todas las imágenes de un directorio y queremos poder subir o borrar archivos. El archivo XML siempre estará actualizado a los ficheros del servidor.
El archivo PHP es el siguiente. Lo llamaremos list.php y lo subiremos al servidor dentro de la carpeta que nos interese listar.
De esta manera si quisiésemos, por ejemplo, listar el contenido de imágenes disponibles de este directorio dentro de un componente List de Flash haríamos lo siguiente:
Código :
import fl.data.DataProvider;
var _URLLoader = new URLLoader();
var _URLRequest = new URLRequest();
_URLRequest.url = "/img/list.php";
_URLLoader.load(_URLRequest);
_URLLoader.addEventListener(Event.COMPLETE, onListComplete);
function onListComplete(e:Event):void
{
var xml:XML = new XML(e.target.data);
var xmlList:XMLList = xml.folder.file;
var dataProvider = new DataProvider();
for each (var item in xmlList)
{
dataProvider.addItem({label:item});
}
listado.dataProvider = dataProvider;
}
Cargamos el archivo PHP como si de un XML se tratase, y de ahí lo convertimos en el dataProvider del componente.
Hace poco quise hacer algo similar y creo que, aunque al final conseguí lo que quería, lo hice de manera un poco más complicada. Yo tenía un código similar a este, pero en vez de crear el xml a base de echo, tomaba un xml vacío y generaba otro con el contenido de las imágenes de la carpeta. Pero claro, ahora necesitaba que el xml estuvise actualizado para cuando fuese llamado, por lo que me tuve que crear un php padre, que fuese recorriendo todos los php y ejecutándolos allá dónde estén para que actualicen todos los xml, este php padre era ejecutado desde flash cada vez que se accedía a la web y así todo se actualizaba. Creo ahora, que haciéndolo como muestras, me hubiese ahorrado este php padre, no?? ya que el php se ejecuta y actualiza en el momento en que es llamado desde flash como si de un xml se tratase. Bueno, si quieren darle sentido a esto que os comento, os dejoaqui el enlace en el que planteé y me ayudaron a resolver el problema en cuestión. Por:Noja33
Muy buen ejemplo Z, es algo ampliamente útil. Sólo añadiría una línea al principio:
header("content-type: text/xml");
Por lo demás es estupendo, saludos!!! Por:Tata
Es muy bueno, yo utilice algo parecido para crear un mini CMS en flash, éste utiliza el listado de fotos en cada carpeta como si fuera una pequeña base de datos. El sitio en cuestion es regaloschihuahua.com. Desafortunadamente despues me di cuenta que con MySQL hubiera sido más sencillo, pero al menos el que utiliza listado php-xml funciona perfectamente. Excelente tip! Por:lemostro
Muy bueno, Z, enhorabuena. Sólo una par de cosas que creo que podría mejorarlo: Podrías hacer que el directorio fuese un parámetro, lo que te da mucha más flexibilidad para hacer los listados, por ejemplo si necesitas varias galerías de imágenes o listas:
Código :
$dir = $_GET["dir"] . "/";
...
y envías la url con la dirección que requieres:
Código :
_URLRequest.url = "/img/list.php?dir=img";
De esta forma, ni siquiera haría falta que el archivo estuviese en la misma carpeta. Por:The Fricky!
Muy bueno, yo le sacaría la función is_dir ya que es un directorio si o si, salvo que se use como dice The Fricky.
pd: Alguien sabe que es más rápido:
Parsear un XML o hacer una consulta a una MySql ? Siempre tuve esa duda, a veces soy muy perseguido y para no sobrecargar al servidor con datos que no varían seguido entonces genero los xml con php de forma similar al ej. de Z y que los lea flash. Por:Raxiro-blog
Raxiro-blog :
Alguien sabe que es más rápido: Parsear un XML o hacer una consulta a una MySql ? Siempre tuve esa duda, a veces soy muy perseguido y para no sobrecargar al servidor con datos que no varían seguido entonces genero los xml con php de forma similar al ej. de Z y que los lea flash.
Invariablemente será más rápido consultar MySQL que parsear un XML. MySQL es una base de datos organizada con un formato indexado y especialmente diseñado para ser consultado.
XML es un archivo de texto.
Otra cosa distinta es generar "cache" estático de las consultas o HTML estático de las salidas para mejorar el rendimiento. Lo que tu haces con los XML es similar a eso. Por otro lado, en el caso de Flash no tienes opción, sea que hagas la consulta o no vas a tener que parsear el XML. Pero eso se hace del lado del cliente. Por:Freddie
Gracias Freddie por la respuesta, nunca supieron bien que responder las personas a las que les pregunte esto
saludos Por:Raxiro-blog
Con este script se puede guardar el resultado en un Array? La verdad es que he intentado y no me sale Por:CarlosRuminott
CarlosRuminott :
Con este script se puede guardar el resultado en un Array? La verdad es que he intentado y no me sale
Si claro.. Lo único que has de hacer cambiar el new DataProvider(); por un new Array(); y tambien cambiar el addItem() por un push().. y listo Por:Zguillez
Muchas gracias Zguillez. Pero a lo que me refería era a llenar un array en el mismo PHP, y al final lo logre dejo el código por si le sirve a alguien
Hola amigos de cristalab, Zguillez, veo que este script es fácil de utilizar ya que todos lo dicen, pero la verdad es que copio el código en un archivo php, lo ejecuto dentro de la carpeta que necesito pero no me genera ningún xml.... no me sale ningún error, no se si hay que modificar algo en el código, dar algún permiso al archivo o a la carpeta o debe exisitit previamente un xml???? Si me pueden ayudar lo agradecería porque es algo que necesito implementar en una web para poder finalizarla? gracias por la ayuda y respuestas? Por:Julian-blog
Jajaja,......esta buenisimo Claro q seria bueno q enviaras un ejemplo!!!
pero gracias Por:sforero
Que pena molestar, pero esque probando esto......No se como vincularlo con Flash, pues ya me da los archivos que tengo, es decir ya me funciona. Pero no se como vincular la informacion con flash, aqui esta mi php http://www.sforero.net/beta/list.php Por:sforero
Como mismo lees un fichero XML externo en flash, pero utiliza la ruta de este php en vez de la ruta de un fichero XML físico. Por:elchininet
El XML se genera bien, solo que me ordena aleatoriamente los archivos, hay alguna forma de que los ordene por fecha, asi los mas nuevos quedarian primero.????? Por:jovix-blog
@jovix, quizás esto te sirva para lo que buscas. Por:elchininet