Comunidad de diseño web y desarrollo en internet online

No se como conseguir crear un archivo xml aunque tengo este codigo...

Citar            
MensajeEscrito el 29 Jul 2011 07:29 pm
<?php

//---Obtener variables pasadas por GET
$path = !isset($_GET['path']) ? './' : $_GET['path'];
$files = !isset($_GET['files']) ? '\w{3,4}' : '(' . implode(')|(', explode('@', $_GET['files'])) . ')';
$order = !isset($_GET['order']) ? 'name' : $_GET['order'];

//---Arreglo donde se guardarán todos los archivos
$store = array();

//---Regular Expression
$reg = '/\w*+.+'. $files .'$/';

$sum = 0;

//---Si es un directorio
if(is_dir($path)){

//---Abrir el directorio
if($gd = opendir($path)){

//---Recorrer todos los archivos del directorio
while(($archivo = readdir($gd)) !== false){

//---Si se cumple la expresión regular
if(preg_match($reg, $archivo) && !is_dir($archivo)){

//---Guardar todos los datos en el arreglo tomando como index la fecha
$date = filemtime((strpos($path, '/')) ? $path . $archivo : $path . '/' . $archivo);

$store[$date . '_' . $sum] = $archivo;

$sum++;

}

}

}

}

//---Organizar el arreglo
if($order == 'name'){

natcasesort($store);

}else{

ksort($store);

}

//---Crear el XML
$xml = new DomDocument('1.0', 'UTF-8');

//---Crear el nodo raiz
$root = $xml->createElement('folder');
$root = $xml->appendChild($root);

//---Ir creando los nodos
foreach($store as $item => $value){

//---Crear los subnodos
$subnode = $xml->createElement('file');
$subnode = $root->appendChild($subnode);

//---Insertar el texto del nombre en el nodo
$text = $xml->createTextNode($value);
$subnode->appendChild($text);

}

//---Output
echo $xml->saveXML();

?>




encontré este codigo no me acuerdo en qué pagina de aquí.... pero el caso es que me lista los archivos uno detrás de otro todo junto pero no genera ningun archivo xml en el servidor...

la cuestión.. Alguien puede poner o arreglar o lo que haga falta esto, para que genere el archivo con el nombre que llo quiera o el nombre del archivo php donde va este código...

por favor toy desesperado...

Lo que llo quiero es generar un listado de archivos(nombrefoto.jpg) que se guarde en un xml con esta estructura:
///////////////////////////////////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<photos>
<photo desc="nombrefoto" url="_pics/nombrefoto.jpg" />
<photo desc="nombrefoto" url="_pics/nombrefoto.jpg" />
etc..
</photos>
//////////////////////////////////////////////////////////////
Eternamente agradecido....

Por xiowars

8 de clabLevel



 

msie8
Citar            
MensajeEscrito el 29 Jul 2011 08:17 pm
Creo que estas un poco perdido ^^ El código que pusiste, no lo entendí, pero estoy seguro que no sirve para hacer lo que tu quieres.

Entiendo lo que quieres, pero no estaría de mas explicar para que lo quieres.
Mira esto que me encontré aquí http://www.cristalab.com/tutoriales/listar-archivos-de-un-directorio-web-con-php-y-xml-c63212l/

que si lo adaptamos a tu necesidad sera algo asi
list.php =

Código PHP :

<?php 
   $dir = "./"; 
   echo "<XML encoding='UTF-8' standalone='yes' version='1.0'>\n"; 
   echo "  <photos>\n"; 
   if (is_dir($dir)){ 
       if ($gd = opendir($dir)){ 
           while (($archivo = readdir($gd)) !== false){ 
            if ($archivo != "." & $archivo != ".." & $archivo != "list.php"){ 
                     echo '<photo desc="'.$archivo.'" url="_pics/'.$archivo.'"/>\n'; 
            } 
           } 
           closedir($gd); 
       } 
   } 
   echo "  </photos> \n"; 
   echo "</XML>\n"; 
?>

No te crea un archivo xml, pero te lo genera cada vez que entras list.php

Por cierto, para publicar codito puedes usar

Código :

[php][/php]

Por gcm

Claber

557 de clabLevel

3 tutoriales

Genero:Masculino  

Diseñador Grafico y Web, Geek

chrome
Citar            
MensajeEscrito el 29 Jul 2011 08:40 pm
Tienes razón no me he explicado bien.... :oops:

Tengo una galeria de fotos donde carga los archivos a través de un XML, pero la galería no tiene forma de recoger los archivos que hay en un determinado directorio ejemplo ../galeria/

Por eso tengo que estar metiendo a mano en el archivo XML cada foto que subo al servidor, pero como me han pedido que cualquiera pueda subir fotos y que se vean en la galeria que es un archivo flash (es una galeria con toda su programación hecha para sistema XML)
Entonces necesito que se cree un archivo XML con la estructura que la galeria necesita para funcionar

y esta es la estructura.

///////////////////

<?xml version="1.0" encoding="utf-8"?>
<photos>
<photo desc="nombrefoto" url="_pics/nombrefoto.jpg" />
<photo desc="nombrefoto" url="_pics/nombrefoto.jpg" />
etc..
</photos>

////////////////////

Una versión de este código que me has puesto la he visto (llevo mas de mil horas con esto....)
pero no sabia adaptarla (no tengo ni idea) pero creo que la galeria busca directamente un documento XML en el servidor así que no se como decirle a la galeria que ejecute primero este archivo para generar el xml (quizás sendandload...) pruebo y comento.

Gracias por tu respuesta y modificar el código espero funcione.. :D

Por xiowars

8 de clabLevel



 

msie8
Citar            
MensajeEscrito el 29 Jul 2011 08:52 pm
Ok, ¿Tienes acceso al código fuente de flash? si es asi, busca en todo el codigo, donde diga xml y trata de entender como llama al archivo xml, porque puede ser de muchas formas, cuando lo entiendas asegúrate de que llame al lista.php en lugar de al archivo.xml

si publicas el código flash actionscript, seria mas fácil ayudarte.

Si no tienes acceso al codigo y solo tienes un .swf dinos de donde lo conseguiste, o como lo implementas en el html. en fin danos toda la info posible.

Por gcm

Claber

557 de clabLevel

3 tutoriales

Genero:Masculino  

Diseñador Grafico y Web, Geek

chrome
Citar            
MensajeEscrito el 29 Jul 2011 09:58 pm
devuelve..

n/n/n/n/n/n/n/n/n/n/


he puesto:

<?php
$dir = "./";
echo "<XML encoding='UTF-8' standalone='yes' version='1.0'>\n";
echo " <photos>\n";
if (is_dir($dir)){
if ($gd = opendir($dir)){
while (($archivo = readdir($gd)) !== false){
if ($archivo != "." & $archivo != ".." & $archivo != "./general.php"){
echo '<photo desc="'.$archivo.'" url="_pics/'.$archivo.'"/>\n';
}
}
closedir($gd);
}
}
echo " </photos> \n";
echo "</XML>\n";
?>


y en flash... para cargarlo..

Código PHP :

// <generer fotovariabler>
flickrTAGS = (flickrTAGS) ? flickrTAGS:"";
xmlURL = (xmlURL) ? xmlURL:"general.php";//este es el archivo que lee las fotos  y devuelve n/n/n/n/n/n/n/n/n/n/
xmlURL = (flickrID) ? "http://api.flickr.com/services/feeds/photos_public.gne?id="+flickrID+"&tags="+flickrTAGS+"&tagmode=any&format=rss_200":xmlURL;
////

Por xiowars

8 de clabLevel



 

msie8
Citar            
MensajeEscrito el 29 Jul 2011 10:59 pm
La galeria es polaroid.
http://www.no3dfx.com/polaroid/

ahí está todo lo de la galeria. en la parte de download el fla y los demás archivos.

y el codigo php que habeis puesto arriba.

Por xiowars

8 de clabLevel



 

msie8
Citar            
MensajeEscrito el 01 Ago 2011 09:40 pm
Cambia esta linea, hay que actualizar las comillas

Código PHP :

 echo "<photo desc='".$archivo."' url='_pics/".$archivo."'/>\n"; 


El archivo php debe estar dentro de la carpeta que contiene las fotos.
Dime exactamente que te devuelve el php, para eso tienes que abrirlo desde un navegador.

Por gcm

Claber

557 de clabLevel

3 tutoriales

Genero:Masculino  

Diseñador Grafico y Web, Geek

chrome
Citar            
MensajeEscrito el 13 Nov 2011 05:38 pm
Perdón por no haber contestado, pero por problemas diversos se dejó el proyecto, ahora quiero retomarlo yo, a ver si esta semana lo pruebo y te comento, Gracias.

Por xiowars

8 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.