Foros del Web » Programando para Internet » PHP »

Generar XML desde PHP

Estas en el tema de Generar XML desde PHP en el foro de PHP en Foros del Web. Hola, soy un novato de PHP y estoy intentando hacer que PHP me consulte una base de datos (MySQL) y me devuelva los valores en ...
  #1 (permalink)  
Antiguo 20/11/2008, 13:44
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 0
Generar XML desde PHP

Hola, soy un novato de PHP y estoy intentando hacer que PHP me consulte una base de datos (MySQL) y me devuelva los valores en forma de XML para poderlos leer desde un flash. No quiero generar un archivo xml fisicamente en el servidor, desde flash cargaría la URL del php como si cargara un XML. Asi, se que el codigo PHP debería ir "lanzando" los valores de la Base de Datos en formato XML para que flash los puediera interpretar.

Se que debe de ser muy sencillo, pero como ya he dicho soy todo un novato en el tema PHP y XML... El código que tengo és el siguiente:

<?php

$link = mysql_connect("localhost", "root", "root");
mysql_select_db("Base");

$sql = "SELECT max( id_sql ) FROM `usuaris`";
$res = mysql_query($sql);
$res_a= mysql_result($res, 0);

echo '<boles>';

for ($i=1;$i<=$res_a;$i++){

$sql2 = "SELECT * FROM `usuaris` WHERE id_sql='$i'";
$res2 = mysql_query($sql2);
$nom_sql = mysql_result($res2,0,"usuari_sql");
$sala_sql = mysql_result($res2,0,"sala_sql");
$msg_sql = mysql_result($res2,0,"msg_sql");
$x_sql = mysql_result($res2,0,"x_sql");
$y_sql = mysql_result($res2,0,"y_sql");

echo '<bola>';

echo '<sala>';
echo $sala_sql;
echo '</sala>';

echo '<usuari>';
echo $nom_sql;
echo '</usuari>';

echo '<missatge>';
echo $msg_sql;
echo '</missatge>';

echo '<x>';
echo $x_sql;
echo '</x>';

echo '<y>';
echo $y_sql;
echo '</y>';

echo '</bola>';

}

mysql_close($link);

?>


Al ejecutar el PHP me muestra todos los valores uno detras de otro,pero sin mostrarme las etiquetas XML... Mi pregunta es: Está conservando el formato XML o debería especificaarselo de alguna forma para que pueda leer el PHP como un XML desde Flash?

Resultado: 1Usuari 1missatge 11002001Usuari 2Missatge 2200300
Muchas gracias! :)
  #2 (permalink)  
Antiguo 20/11/2008, 14:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Generar XML desde PHP

Hola bernattorras,

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

Saludos
  #3 (permalink)  
Antiguo 20/11/2008, 14:52
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Generar XML desde PHP

Gracias por tu rápida respuesta GatorV!

El problema está en que añado header("Content-type: text/xml" ); al inicio del codigo PHP (justo después de <?php) y al ejecutar el PHP me sale:

Error de lectura XML: no se encuentra elemento
Ubicación: http://localhost:8888/PROVA%20OPTIMITZACIO%cc%81/prova_xml.php
Número de línea 2, columna 1:


También he intentando añadir :
echo '<?xml version="1.0"?>';

Pero me sigue diciendo lo mismo...

ALguna sugerencia? :P
  #4 (permalink)  
Antiguo 20/11/2008, 16:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Generar XML desde PHP

Creo aparte del <?xml te falta cerrar tu XML usando </boles>.

Saludos.
  #5 (permalink)  
Antiguo 21/11/2008, 05:50
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Generar XML desde PHP

Gracias de nuevo, pero me sigue dando error... Ahora me sale:

Error de lectura XML: mal formado
y abajo me lista el resultado que (creo) deberia ser correcto en XML (<?xml version="1.0"?><boles><bola><nom>Usuari 1 E1</nom><missatge>Missatge 1 E1</missatge><x>300</x><y>400</y></bola> .... </boles></xml>)


Aqui va el código que tengo en PHP:

<?php
header("Content-type: text/xml" );
$link = mysql_connect("localhost", "root", "root");

mysql_select_db("base");

$sql = "SELECT max( id_sql ) FROM `usuaris`";
$res = mysql_query($sql);
$res_a= mysql_result($res, 0);

echo '<?xml version="1.0"?>';
echo '<boles>';

for ($i=1;$i<=$res_a;$i++){

$sql2 = "SELECT * FROM `usuaris` WHERE id_sql='$i'";
$res2 = mysql_query($sql2);

$nom_sql = mysql_result($res2,0,"usuari_sql");
$msg_sql = mysql_result($res2,0,"msg_sql");
$x_sql = mysql_result($res2,0,"x_sql");
$y_sql = mysql_result($res2,0,"y_sql");

echo '<bola>';

echo '<nom>';
echo $nom_sql;
echo '</nom>';

echo '<missatge>';
echo $msg_sql;
echo '</missatge>';

echo '<x>';
echo $x_sql;
echo '</x>';

echo '<y>';
echo $y_sql;
echo '</y>';

echo '</bola>';

}

echo '</boles>';
echo '</xml>';

mysql_close($link);

?>


Cúal puede ser el problema?

Muchas Grácias
  #6 (permalink)  
Antiguo 21/11/2008, 10:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Generar XML desde PHP

No necesitas la etiqueta de cierre de </xml>.

Saludos.
  #7 (permalink)  
Antiguo 21/11/2008, 10:29
 
Fecha de Ingreso: octubre-2008
Mensajes: 93
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Generar XML desde PHP

Muchas gracias GatorV!

Funciona perfectamente!

Saludos.
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 23:46.