Obtener datos de BD y generar un archivo XML personalizado mediante PHP
Hola, estoy intentando crear un sistema automatico que guarde en el XML los datos que haya en la BD cada vez que lo active, utilizando el sistema Dom, creo que no me queda mucho para hacerlo funcionar como quiero, si pudiesen hecharme una mano lo agradeceria, esto es lo que tengo hecho en php:
<? include("../../registro/serv2.php"); ?>
<?php
$doc = new DOMDocument ( '1.0', 'UTF-8' ); /// Abrimos el DOMXML Documento
$element = $doc->appendChild(new DOMElement('content')); // Creamos el Indice Principal content
$resultj = mysql_query("SELECT * FROM Temporada_2 ORDER BY Num_Episodio ASC",$connection); // Simple Intruccion SQL con orden ascendente
while($Row = mysql_fetch_array($resultj, MYSQL_ASSOC)){
// Esto es muy Importante Fijense Bien $element fue la misma variable para llamar la Instruccion en el INDICE 'content' en otras palabras estamos indicando que este nuevo elemento pertenece al INDICE 'content'..
$element1 = $element->appendChild(new DOMElement('video'));
$element1->setAttribute("thumb", $Row['thumb']); /// Para asignar el atributo thumb
$element1->setAttribute("preview", "./content/previews/1.png"); /// Para asignar el atributo preview
$element1->setAttribute("source", ("http://www..com/episodios/OP-Ep.".$Row['Num_Episodio']."-480p.mp4")); /// Para asignar el atributo source
$element1->setAttribute("thumbInfo", ("Episodio nº".$Row['Num_Episodio']."")); /// Para asignar el atributo thumbInfo
// Aqui pasa lo mismo si ven los apuntadores ahora llaman a $element1 para que ellos pertenezcan al SUBINDICE 'Video', en este caso creamos un nuevo elemento dentro del SUBINDICE 'Video'
$element_ns = new createElement('<![CDATA[<font color="#ffffff">'.$Row['Nom_Episodio'].'</font>]]>');
$element1->appendChild($element_ns);
}
$doc->save("prueba.xml"); /// <== Aqui lo grabamos a un archivo .XML
echo "<font style='color: white'>Operacion Realizada</font>";
?>
Mi objetivo es que el archivo "prueba.xml" quede de ésta forma:
<?xml version="1.0" encoding="UTF-8"?>
<content>
<video thumb="./content/thumbs/[Dato de la BD 1].jpg" preview="./content/previews/1.png" source="http://www..com/episodios/OP-Ep.[Dato de la BD 1].-480p.mp4" thumbInfo="Episodio nº[Dato de la BD 1]"><![CDATA[<font color='#ffffff'>[Dato de la BD 1]</font>]]></video>
<video thumb="./content/thumbs/[Dato de la BD 2].jpg" preview="./content/previews/1.png" source="http://www..com/episodios/OP-Ep.[Dato de la BD 2].-480p.mp4" thumbInfo="Episodio nº[Dato de la BD 2]"><![CDATA[<font color='#ffffff'>[Dato de la BD 2]</font>]]></video>
<video thumb="./content/thumbs/[Dato de la BD 3].jpg" preview="./content/previews/1.png" source="http://www..com/episodios/OP-Ep.[Dato de la BD 3].-480p.mp4" thumbInfo="Episodio nº[Dato de la BD 3]"><![CDATA[<font color='#ffffff'>[Dato de la BD 3]</font>]]></video>
... y todos los que disponga la base de datos...
</content>
y por ahora me suelta el siguiente error:
Fatal error: Class 'createElement' not found in /homepages/prueba.php on line 21
Nota: Se que con $element_ns = new DOMElement('font', 'Hola', '');
puedo crear una etiqueta <font>Hola</font>, el problema es que necesito crear estas 2 <![CDATA[<font color='#ffffff'> y no se como ponerlo...
Reparenme el código o diganme como puedo seguir, espero vuestra ayuda, saludos y gracias
Samie
Has probado obtener una ARRAY de los resultados y luego pasarlo por algún tipo de loop?
Además sería interesante que los elementos dentro del xml fueran accesibles. Esto también te facilitaría la creación automática de del XML y la conversión de este a cualquier otro formato.
<video>
<thumb/> ... </thumb>
<preview/> ... </preview>
<source/> ... </source>
...
</video>
feliper
Lo que te está liando es usar ese método DOM,
yo haría lo mismo que estas haciendo pero sin usar DOM.
Abres un archivo con fopen,
le escribes las cabeceras XML (fwrite)
lees la base de datos y escribes cada fila (fwrite)
lo cierras fclose y lo tienes listo
phpninja
Si aún no lo tienes solucionado, PhpNinja
contacto@phpninja.info