Foros del Web » Programando para Internet » PHP »

Modificar XML desde php

Estas en el tema de Modificar XML desde php en el foro de PHP en Foros del Web. Resuelto, funciona, pero no me gusta demasiado el desarrollo. Si se puede depurar algo me gustaría, pues he visto que hay muchas personas que preguntan ...
  #1 (permalink)  
Antiguo 27/12/2009, 12:02
 
Fecha de Ingreso: junio-2009
Mensajes: 30
Antigüedad: 14 años, 10 meses
Puntos: 0
Modificar XML desde php

Resuelto, funciona, pero no me gusta demasiado el desarrollo. Si se puede depurar algo me gustaría, pues he visto que hay muchas personas que preguntan por cosas parecidas a esto, pongo en negrita lo que no me gusta
Yo lo he podido resolver con la mezcla de un montón de consultas por el foro y por ahí. Así que gracias a todos.
Este fichero xml es procesado en flash y muestra las noticias con movimiento, de arriba abajo, también se pueden poner enlaces, etc. A mi me ha sido muy útil.

Tengo un fichero xml con noticias que proceso desde un flash, El fichero se llama noticas1.xml

Código:
<noticias>
<grupo fecha="las 10 hoy no ha podido ser " nombre="viste te " explica="y lo verás"/>
<grupo fecha="febrero " nombre="toma moreno " explica="A pedir de boca"/>
<grupo fecha="marzo " nombre="El mejor  " explica="ayyyyy"/>
<grupo fecha="abril " nombre="lunes " explica="Te informaremos"/>
<grupo fecha="mayo " nombre="Fiestas " explica="Jamones y embutido"/>
<grupo fecha="junio " nombre="Concursos " explica="come máx"/>
<grupo fecha="julio " nombre="sippppp " explica="hardoón"/>
</noticias>
Lo que necesito es poder editar las noticias desde un formulario y que se puedan cambiar y volver a grabar en el xml.
Este primer fichero lo que hace es introducir los valores de los campos del fichero xml en un formulario dinámico donde los nombres de los campos son dato0, dato1,etc
Código:
<?
$fichero = 'noticias1.xml';

$xml = simplexml_load_file($fichero) or die ('Unable to load XML file!');

echo '<form id="form1" name="form1" method="post" action="proceso3.php">';
for ($i=0;$i<7;$i++) // codigo no depurado, debería saber que hay 7 noticias, 
{
	echo "<br>fecha"; 
	echo '<input type="text" name="dato'.($i*3+0).'" id="fech"  value="'.$xml->grupo[$i]['fecha'].   '" />';
	echo '<input type="text" name="dato'.($i*3+1).'" id="fech"  value="'.$xml->grupo[$i]['nombre'].  '" />';
	echo '<input type="text" name="dato'.($i*3+2).'" id="fech"  value="'.$xml->grupo[$i]['explica']. '" />';
 }
   echo '<input type="submit" name="Enviar" id="Enviar" value="Enviar" />';
echo "</form>";

?>
Luego al darle al botón enviar, se llama al fichero proceso3.php que es el siguiente:
Código:
<?
$archivo = "datos.xml"; // grabo en otro archivo en vez de noticias1.xml, por si las moscas
if ($id = fopen ($archivo, "w+"))
{ 
	$i=1;
	// grabamos la cabecera
	fputs($id,"<noticias>\n"); /mirar arriba el original 
	foreach($_POST as $nombre_campo => $valor)
	{ 
		if($nombre_campo!="Enviar") // el campo enviar no se graba
		{     // las siguientes van grabando los codigos necesarios para el xml
                       // es un poco de lio, seguro que se puede hacer más legible
			if ($i%3 == 1)
			fputs($id,"<grupo fecha=\"");	
			if ($i%3 == 2)
			fputs($id," \" nombre=\"");
			if ($i%3 == 0)
			fputs($id," \" explica=\"");
                         //la siguiente graba el valor del campo del formulario
				$asignacion = $valor;
				fputs ($id, $asignacion);
			if ($i%3 == 0)
				fputs ($id,"\"/>\n");
			$i++;
		}
	}
	fputs($id,"</noticias>");
}
else
	echo "no puedo";
fclose ($id) 
?>

Última edición por antoniuskas; 28/12/2009 a las 13:00 Razón: Resuelto
  #2 (permalink)  
Antiguo 27/12/2009, 12:11
Avatar de angel1993  
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: Modificar XML desde php

$archivo = "documento.xml";
$fd = fopen($archivo, "r") or
die("Problemas en la conexión");
$contenido = fread ($fd, filesize ($archivo));
rewind($fd);
fputs($fd,"LO QUE QUIERAS");
fputs($fd,"LO QUE QUIERAS");
fclose($fd);
PD: puedes poner tantos fputs($fd,"LO QUE QUIERAS"); como quieras.
  #3 (permalink)  
Antiguo 27/12/2009, 12:12
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Modificar XML desde php

Y deberias leer el XML, e insertas los datos de los atributos en inputs de tu formulario. Luego de las modificacines, en el action de ese form (o sea, el php) levantas als modificaciones y sobreescribis esos valores...

O sea, si no tenes NADA de codigo hecho y no sabes hacerlo, te recomiendo que te leas los metodos de la clase DOMDocument en php.net, con ella se hace eso.

Suerte
__________________
HV Studio
Diseño y desarrollo web
  #4 (permalink)  
Antiguo 27/12/2009, 15:48
Avatar de angel1993  
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: Modificar XML desde php

Creo que puedes poner un include("documento.xml") dentro de el value de un txtfield de el formulario... asi lo modificas mejor..
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:57.