Comunidad de diseño web y desarrollo en internet online

Crear XML con PHP +Consulta BD y grabarlo en servidor

Citar            
MensajeEscrito el 05 Nov 2009 01:37 pm
Hola !! Consulta :
Tengo informacion en una base de datos. Lo que quiero es hacer una consulta de los articulos y generar un XML. Luego, necesito guardar este nuevo XML en el hosting/servidor.
Les paso lo que tengo. Y si alguien me puede ayudar .... MUUUUCHO MEJOR. Ahhhh la grabacion en el servidor no se como se hace y el PHP no anda. NECESITO AYUDA ! POR FAVOR. Nunca trabaje con php y menos con xml.
MUCHAS GRACIAS A TODOS !
Hernan.

CAMPOS DE LA TABLA EN LA BASE DE DATOS :

Cat = categoria
date = articulo
title = texto corto
descr = texto largo



FORMATO DEL XML ( es una galeria, que cualgan Categorias, y a su vez, cualgan los articulos. Hay varias categorias y varios articulos por categoria)

<?xml version="1.0" encoding="utf-8" ?>
<gallery
title="WWW.PROYECTOACTIVO.COM.AR"
title1="Tel/Fax:(5411) 555 5555 y rot"
title2="Bologne 330"
title3="[email protected]"

thumbDir="images/thumbs/"
imageDir="images/"
random="False">

<category name="Lapices">
<image>
<date>0001</date>
<title>Lapiz</title>
<desc>Lapiz Negro</desc>
</image>
</category>

<category name="Hojas">
<image>
<date>0002</date>
<title>Lisas</title>
<desc>Hojas lisas</desc>
</image>
</category>

</gallery>



EL PHP QUE TENGO ES :
<?php

header("Content-type: text/xml");

$host = "localhost";
$user = "usuario";
$pass = "password";
$database = "nombre_bd";

$enlace = mysql_connect($host, $user, $pass) or die("Error MySQL.");
mysql_select_db($database, $enlace) or die("Error base de datos.");

$query = "SELECT * FROM bd_articulo ORDER BY cat ASC";
$resultado = mysql_query($query, $enlace) or die("Sin resultados.");

$salida_xml = "<?xml version=\"1.0\"?>\n";
$salida_xml .= "<gallery>\n";

$i = 1;

// lectura del registro de la consulta, el $i es el indice
$fila = mysql_fetch_assoc($resultado, $i);

// Mientras que siga teniendo lineas
while ($i < mysql_num_rows($resultado)){

$cat = $fila['cat'];
$cat_ant = $fila['cat'];

$salida_xml .= "\t<category name=$cat>\n";

while ($cat = $cat_ant){

$salida_xml .= "\t\t<image>";

$salida_xml .= "\t\t\t<date>" . $fila['date'] . "</date>\n";
$salida_xml .= "\t\t\t<title>" . $fila['title'] . "</title>\n";
$salida_xml .= "\t\t\t<desc>" . $fila['descr'] . "</desc>\n";

$salida_xml .= "\t\t</image>";

$i++;
$fila = mysql_fetch_assoc($resultado, $i);
$cat = $fila['cat'];

}

$salida_xml .= "\t</category>\n";

}

$salida_xml .= "</gallery>";

echo $salida_xml;

?>

Por hernanpi

1 de clabLevel



 

msie8
Citar            
MensajeEscrito el 06 Nov 2009 05:09 pm
mira chaval, estas pidiendo que te hagan el trabajo, si no sabes nada de php pues dale una leidita algun manual de php de rapido, porque si no nadie te va responder, y no es porque sean mala onda, aparte todo tu codigo sin formato, menos van a querer leer tu problema!, da mucha flojera y cansa muchisimo encontrar errores asi, pero mira, solo por esta vez te ayudo, y porque tengo un poquito de tiempo libre, asi que te dejo este ejemplo que mas que ejemplo es un mini-tutorial:

bien comencemos ordenando todo el despelote que tienes:

Objetivos:
*importar datos de Mysql
*procesar los datos de Mysql con php
*Crear arbol de resultados de PHP a XML

ok, es algo asi, ahora bien, comencemos con lo primero:

todo lo dejo bien comentadito, para que leas y veas que onda, pero enserio lee algo de php si no va estar bien dificil,

Código PHP :

<?php

/*Estas son las variables que se utilizaran para crear la conexion a tu base de datos, practicamente pues solo tendrias que colocar tus datos */

$host = "localhost";
$user = "root";
$pass = "";
$database = "tests";

/* Ahora si, comenzamos iniciando la conexion, de la forma siguiente, y agregamos los "or die" por si algo ocurre antes de realizar la conexion nos lo indique */

$linkID = mysql_connect($host, $user, $pass) or die("No se pudo conectar al servidor."); 
mysql_select_db($database, $linkID) or die("Problemas al acceder a la base de datos");



/* Bien si todo marcho bien con la conexion se inicia el segundo punto de nuestros objetivos, importar los datos, y suponiendo que deseamos importar de nuestra BASE DE DATOS una serie de mensajes, o lo que sea, entonces seguimos asi, haciendo un SELECT * FROM para traer todo, y van a ser tomados ordenadamente por su ID de forma DESCENDENTE */

$query = "SELECT * FROM mensajes ORDER BY id DESC"; 

/*Agregamos esto para si sucede algo mientras intenta hacer el SELECT * FROM nos marque un error. */
$resultID = mysql_query($query, $linkID) or die("Problemas al importar los datos.");


/* Si hsta aqui todo va bien, que eso espero, entonce ahora si, vamos al tercer objetivo, crear el arbol de datos, y va de la siguiente forma: */
$xml_output = "<?xml version=\"1.0\"?>\n";    /* Se inserta la cabecera del XML en $xml_output , "$xml_output " sera nuestro XML, o algo asi, */

$xml_output .= "<Resultados>\n";  /* se inicia el XML */


/* Ahora biene lo mero bueno, el FOR, que carajos hara, bien, lo que hara sera repetir lo que le indiquemos hasta que ya no queden mas resultados de la llamada SELECT * FROM de la base de datos (DB),  y tambien le dara un orden que nosotros especifiquemos */

for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){     
$row = mysql_fetch_assoc($resultID);     

$xml_output .= "\t<entrada>\n";
$xml_output .= "\t\t<nick>" . $row['nick'] . "</nick>\n";     
$xml_output .= "\t\t<mensaje>" . $row['mensaje'] . "</mensaje>\n";
$xml_output .= "\t\t<fecha>" . $row['fecha'] . "</fecha>\n";     $xml_output .= "\t</entrada>\n"; 
} 
$xml_output .= "</Resultados>"; 
 ?>


vale, creo que todo lo anterior super entendible, asi que mejor asi lo dejo, bueno al final, de todo ese descabeche, lo que el PHP genera seria algo asi:


Código XML :

−<Resultados>           
         −<entrada>                      
                   −<nick>Sr. Anderson</nick>                      
                   −<mensaje>este es el mensaje que importa de la base de datos.</mensaje>                     
                   −<fecha>0000-00-00 00:00:00</fecha>            
         −</entrada> 
−</Resultados>


ve que es el XML, pero si probaste el PHP anterior veras que no imprime nada, entonces simplemente agrega esto al final del PHP, Ojo antes de cerrar el PHP antes del "?>"

Código PHP :

$fh = fopen("archivo.xml","w"); 
fwrite($fh,$xml_output);
fclose($fh); 


vale entonces si vez en tu carpeta donde tienes el php genero un XML con todo lo anterior, si abres el XML en el navegador veras que todo ordenado, si lo abres con el BLOC DE NOTAS se va a ver todo bien desordenado.


vaya, que ando de buenas, sale cualquier duda vuelve a leer todo lo que te deje arriba, ya si deplano pues me avisas haber que, y la proxima no pidas que te hagan el trabajo, mejor ve que te falta y di, tal vez asi, recibas mas apoyo del foro, y utiliza el buscador que bastante se habla sobre esto

Por smokingwel

16 de clabLevel



 

msie
Citar            
MensajeEscrito el 13 Nov 2009 04:22 pm

Por joarobles

753 de clabLevel

8 tutoriales

 

Córdoba - Argentina

firefox
Citar            
MensajeEscrito el 13 Nov 2009 07:18 pm
Chicos ! No quise que pensaran que solo queria que hagan mi trabajo. Perdon por el mal entendido y muchas gracias por la ayuda.
Hernan.

Por hernanpi

1 de clabLevel



 

msie8

 

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