[eside-ghost] formulario PHP para añadir datos en XML -- era ( formulario php para subir archivos via FTP )

altern altern2 en gmail.com
Mie Mar 26 23:15:42 CET 2008


lo he pensado mejor y creo que lo del ftp basado en un formulario no es 
buena idea pq van a ser archivos grandes y casi mejor subirlos con un 
cliente FTP. Y los que lo vamos a usar el formulario ya sabemos usar FTP.

pero ahora estoy con otro asunto relacionado, la idea es tener un 
formulario a traves del que se añaden datos en un archivo XML. La 
estructura de datos es asi

<markers>
	<marker>
		<nombre>"archivo tal"</nombre>
		<duracion>"2:30"</duracion>
		... etc ...
	</marker>
	... etc...
</markers>

estoy mirando como añadir datos en el xml pero no consigo encontrar un 
ejemplo que haga lo mismo que necesito. Esto es añadir un nuevo marker 
al final de los markers. He encontrado como añadir mas entradas a cada 
marker y tb como meterlas detras de </markers> pero esto no me sirve. Yo 
necesito meter un nuevo marker al final de markers.

Como podreis adivinar es para una web que usa google maps. Hay unos 
marcadores señalando localizaciones donde se han grabado sonidos y se 
pueden consultar datos sobre los sonidos y escucharlos o descargarlos. 
Como somos cada vez mas metiendo sonidos nos da miedo que alguien la lie 
y se cargue el formato del archivo XML, que ya ha pasado. Asi que pense 
que un formulario evitaba este problema.

No me empapo muy bien del PHP pq estoy acostumbrado a usar Python y se 
me hace un poco raro leer la syntasis de php en los ejemplos que 
encuentro. Esto es mas o menos el codigo que estoy probando ahora. Casca 
pq $markers no tiene un metodo appendChild() al ser un objeto tipo 
DOMNodeList


   $doc = new DOMDocument();
   $doc->load( 'data.xml' );
   $doc->formatOutput = true;

   $markers = $doc->getElementsByTagName("markers")

   $m = $doc->createElement( "marker" );

   $lat = $doc->createElement( "nombre" );
   $lat->appendChild( $doc->createTextNode( "xxxnombre" ) );
   $m->appendChild( $lat );

   $markers.appendChild($m); // **Aqui casca!!****

   $doc->saveXML();
   $doc->save("data.xml")


No estoy seguro de si hay alguna forma de hacer lo que busco 
directamente añadiendolo al final o si tengo que rehacer el contenido 
desde cero copiando nodo a nodo añadiendo el nuevo y finalmente 
sobreescribir el contenido del xml totalmente.

y espero dar por finalizada mi lista de preguntas mensuales con esto ;)

enrike

Javier Allende Astigarraga(e)k dio:
> Yo habría pensado temas de permisos en esa carpeta :S, pero no se me 
> ocurre nada, salvo que los ficheros sean excesivamente grandes, pero 
> este problema era cuando subias ficheros a pelo al server.
>  
> ¿qué permisos tienes en ese directorio?(usuarios,..)
>  
> 2008/3/25, altern <altern2 en gmail.com <mailto:altern2 en gmail.com>>:
> 
>     bueno partiendo de tu codigo he solucionado un par de errores tontos que
>     estaba haciendo (me olvide del / final del path) pero me da un error 9 :
> 
>     CURLE_REMOTE_ACCESS_DENIED (9)
>     We were denied access to the resource given in the URL. For FTP, this
>     occurs while trying to change to the remote directory.
> 
>     aqui me pierdo. he mirado los permisos de los directorios de destino y
>     los archivos locales y tb intentado con un par de directorios diferentes
>     de destino a ver si habia alguna diferencia. de todas me sale el mismo
>     error... se os ocurre algo?
> 
>     gracias


Más información sobre la lista de distribución eside-ghost