Comunidad de diseño web y desarrollo en internet online

Problema : Organizar XML desde PHP y MySQl

Citar            
MensajeEscrito el 15 Ene 2008 05:45 pm
El problema es el siguiente :

Tengo 2 tablas en MySQL , cada una con sus respectivos campos

Tabla categorías :
id,categoría,nombre etc...

Tabla Imágenes :
id,idCategoria,imagen....

Lo que necesito es obtener un XML con PHP sacando los datos de MySQL, el problema surge cuando intento obtener de una tabla el campo categoría y de otra tabla el campo imágenes, he intentado con while y for pero nada mas no lo logro hacer .

Esta seria la estructura del XML como deberia kedar :

Código :

<categoria nombre="autos"> 
       <imagen>auto.jpg</imagen>
       <descripcion>Este es un ejemplo</descripcion>
</categoria>
<categoria nombre="bicis"> 
       <imagen>bici.jpg</imagen>
       <descripcion>Este es un ejemplo</descripcion>
</categoria>


y necesitaría algo asi :

//este es solo un ejemplo esta mal el PHP lo se....

Código :

while($fila= mysql_fetch_array ($resultado)){
<categoria nombre="".$fila['autos'].""> //aqui deberia sacar de la tabla categorias el campo categoria
       <imagen>".$fila['imagen']."</imagen>//y aqui pues los campos de la tabla imagenes
       <descripcion>Este es un ejemplo</descripcion>
</categoria>
}

He intentado relacionando las tablas y mediante bucles pero no lo he logrado...

Con que se pueda formar el XML con bucles , relacionando tablas , con mysql ...etc como sea ....seria de gran ayuda....

De antemano gracias por leer...

Por kofres

13 de clabLevel



 

Maquetador web

firefox
Citar            
MensajeEscrito el 15 Ene 2008 08:29 pm
Mira, no se como este tu consulta SQL, pero la idea es que en la misma, ya salgan combinados, los datos de las dos tablas .
Para eso se necesita un JOIN

SELECT categorías.categoría, categorías.nombre, Imágenes.nombre FROM categorías INNER JOIN Imágenes ON categorías.categoría = Imágenes.idCategoria;

categorías.categoría = Imágenes.idCategoria , esta asignacion es la que denota, los campos que estan asociados en las dos tablas

Ya en tu php, saca las filas, como normalmente acostumbras.

Por rolv

Claber

2000 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 15 Ene 2008 08:37 pm
Gracias por la respuesta The Adominable Snowman....

Creo que no me explique bien , el problema no es relacionar las tablas , el problema viene cuando intento ya en el PHP mostrar la salida que seria el XML :

Código :

<categoria nombre="autos"> 
       <imagen>auto.jpg</imagen>
       <descripcion>Este es un ejemplo</descripcion>
       <imagen>auto2.jpg</imagen>
       <descripcion>Este es un ejemplo 2</descripcion>
      <imagen>auto3.jpg</imagen>
       <descripcion>Este es un ejemplo 3</descripcion>
</categoria>
<categoria nombre="bicis"> 
       <imagen>bici.jpg</imagen>
       <descripcion>Este es un ejemplo</descripcion>
</categoria>


Esto es lo que deberia formar desde PHP , pero el problema es ese ...ke no encuentro la forma de hacerlo ....el problema seria hacer el bucle (o bucles)que realizen esta salida , no importa como, solo que devuelva tal como esta arriba el XML.....eso si debe obtener los datos de 2 tablas diferentes, con o sin relacion ...la categoria de una tabla y los demas datos de otra....

Espero me haya dado a entender , de nuevo gracias por la ayuda....

Por kofres

13 de clabLevel



 

Maquetador web

firefox
Citar            
MensajeEscrito el 15 Ene 2008 08:38 pm
Gracias por la respuesta The Adominable Snowman....

Creo que no me explique bien , el problema no es relacionar las tablas , el problema viene cuando intento ya en el PHP mostrar la salida que seria el XML :

Código :

<categoria nombre="autos"> 
       <imagen>auto.jpg</imagen>
       <descripcion>Este es un ejemplo</descripcion>
       <imagen>auto2.jpg</imagen>
       <descripcion>Este es un ejemplo 2</descripcion>
      <imagen>auto3.jpg</imagen>
       <descripcion>Este es un ejemplo 3</descripcion>
</categoria>
<categoria nombre="bicis"> 
       <imagen>bici.jpg</imagen>
       <descripcion>Este es un ejemplo</descripcion>
</categoria>


Esto es lo que deberia formar desde PHP , pero el problema es ese ...ke no encuentro la forma de hacerlo ....el problema seria hacer el bucle (o bucles)que realizen esta salida , no importa como, solo que devuelva tal como esta arriba el XML.....eso si debe obtener los datos de 2 tablas diferentes, con o sin relacion ...la categoria de una tabla y los demas datos de otra....

Espero me haya dado a entender , de nuevo gracias por la ayuda....

Por kofres

13 de clabLevel



 

Maquetador web

firefox
Citar            
MensajeEscrito el 15 Ene 2008 08:42 pm
Perdon :oops: este es el XML ke debo armar :

Código :

  
<categoria nombre="autos"> 
                <imagen>
         <titulo>Imagen de prueba</title>
         <desc>Imagen de prueba</desc>
         <thumb>auto1.jpg</thumb>
         <img>auto1_thum.jpg</img>
      </imagen>
                  <imagen>
         <titulo>Imagen de prueba 1</title>
         <desc>Imagen de prueba</desc>
         <thumb>auto2.jpg</thumb>
         <img>auto2_thum.jpg</img>
      </imagen>
</categoria>
<categoria nombre="bicis"> 
             <imagen>
         <titulo>Imagen de prueba</title>
         <desc>Imagen de prueba</desc>
         <thumb>auto1.jpg</thumb>
         <img>auto1_thum.jpg</img>
      </imagen>
</categoria>


Con bucles while , for o como sea solo que los datos salgan de 2 tablas con eso....;)

Por kofres

13 de clabLevel



 

Maquetador web

firefox
Citar            
MensajeEscrito el 16 Ene 2008 06:19 pm
Bueno despues de estar dale y dale a las consultas con MySQL y bucles....he logrado solucionar mi problema ^^ .....bueno eso creo, ya que me parece estoy cometiendo un error al hacer tantas consultas a la BD ...pero por el momento fue lo que me funciono ...cabe señalar que no soy programador...igual que muchos le pasa la necesidad de aprender me lleva a meterme en lios como este....

Aqui lo que hice :

Código :

echo "<?xml version='1.0' encoding='utf-8'?>\n";
include('conex.php');
$categorias= "SELECT * FROM categorias,imagenes WHERE categorias.id=imagenes.idCategoria  GROUP BY categorias.categoria  ORDER BY categorias.id";
$resultCat= mysql_query($categorias,$conexion);
echo "<gallery title=\"Tony's Photo Album\" thumbDir=\"./imagenes/thumbs/\" imageDir=\"./imagenes\" random=\"true\">\n";
$j=0;
   while($fila1 = mysql_fetch_array($resultCat)){
         $j++;
         $consulta1= "SELECT * FROM imagenes WHERE idCategoria=".$j." ";
         $resultado= mysql_query($consulta1,$conexion);
            echo "<category name=\"".$fila1['categoria']."\">\n";
            while($fila2 = mysql_fetch_array($resultado)){
            echo "      <image>\n";
               echo "         <date>".$fila2['fechaAlta']."</date>\n";
               echo "         <title>".$fila2['titulo']."</title>\n";
               echo "         <desc>".$fila2['descripcion']."</desc>\n";
               echo "         <thumb>".$fila2['imagen']."</thumb>\n";
               echo "         <img>".$fila2['imagen']."</img>\n";
               echo "      </image>\n";
               
            }
            echo "</category>\n";
            
            }
echo "</gallery>\n";


lo que resulta :

Código :

<category name="Carros">
      <image>
         <date>0001</date>
         <title>Este es el titulo 1</title>
         <desc>Descripcion 1</desc>
         <thumb>imagen 1</thumb>

         <img>imagen 1</img>
      </image>
      <image>
         <date>002</date>
         <title>Titulo 2</title>
         <desc>DEscripcion 2</desc>
         <thumb>imagen 2</thumb>

         <img>imagen 2</img>
      </image>
      <image>
         <date>eqweqw</date>
         <title>asdasd</title>
         <desc>asdasd</desc>
         <thumb>asdasdasdasd</thumb>

         <img>asdasdasdasd</img>
      </image>
</category>
<category name="Motocicletas">
      <image>
         <date>003</date>
         <title>Este es  el titulo 3</title>
         <desc>ESta es la dedadasd</desc>

         <thumb>imagen 3</thumb>
         <img>imagen 3</img>
      </image>
</category>
<category name="Bicicletas">
      <image>
         <date>33333</date>
         <title>33333333</title>

         <desc>3333</desc>
         <thumb></thumb>
         <img></img>
      </image>
</category>
<category name="Computadoras">
      <image>
         <date>asdasdasd</date>
         <title>adsdasd</title>

         <desc>dsadas</desc>
         <thumb>dsadasd</thumb>
         <img>dsadasd</img>
      </image>
</category>

Si alguien tiene una forma mas limpia y mejor de lograrlo ...ps no estaria demas lo posteara....^^....si no ps a ver si a alguien le sirve...

Por kofres

13 de clabLevel



 

Maquetador web

firefox

 

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