Comunidad de diseño web y desarrollo en internet online

Crear XML con PHP/MYSQL

Citar            
MensajeEscrito el 02 Abr 2011 05:32 am
Buenas companeros,

Tengo que crear un XML apartir de una consulta de MySQL ya se hace pero necesito que quede exactamente con este formato:

Código XML :

<chart>

   <chart_type>pie</chart_type>

   <chart_data>
      <row>
         <null/>
         <string>2007</string>
         <string>2008</string>
         <string>2009</string>
      </row>
      <row>
         <string>Region A</string>
         <number>10</number>
         <number>30</number>
         <number>63</number>
      </row>
   </chart_data>
</chart>


Basicamente asi es como estoy tratando de crearlo

Código PHP :

<?php
 
header("Content-type: text/xml");
 
$host = "Localhost"; 
$user = "test"; 
$pass = "xxx"; 
$database = "test";
 
$enlace = mysql_connect($host, $user, $pass) or die("Error MySQL."); 
mysql_select_db($database, $enlace) or die("Error base de datos.");
 
$query = "SELECT AGENTE, count(*) FROM clientes group by agente"; 
$resultado = mysql_query($query, $enlace) or die("Sin resultados.");

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

$salida_xml .= "<chart>\n";
$salida_xml .= "<chart_type>" . 'pie' . "</chart_type>\n";
   $salida_xml .= "<chart_data>\n";
   for($x = 0 ; $x < mysql_num_rows($resultado) ; $x++){

       $fila = mysql_fetch_assoc($resultado); 
       $salida_xml .= "\t<row>\n"; 
       $salida_xml .= "\t\t<agente>" . $fila['AGENTE'] . "</agente>\n"; 
       $salida_xml .= "\t\t<cantidad>" . $fila['count(*)'] . "</cantidad>\n"; 
           // Corregiendo caracteres incorrectos
           $fila['texto'] = str_replace("&", "&amp;", $fila['texto']); 
           $fila['texto'] = str_replace("<", "&lt;", $fila['texto']); 
           $fila['texto'] = str_replace(">", "&gt;", $fila['texto']); 
         // $salida_xml .= "\t\t<texto>" . $fila['texto'] . "</texto>\n"; 
       $salida_xml .= "\t</row>\n"; 
   }//segundo for
   $salida_xml .= "</chart_data>\n";


$salida_xml .= "</chart>";
 
echo $salida_xml;
 
?>


pero no me queda con el mismo formato, esto es lo que me tira

Código XML :


        This XML file does not appear to have any style information associated with it. The document tree is shown below.
      
−
<chart>
<chart_type>pie</chart_type>
−
<chart_data>
<row>
      
   </row>
−
<row>
<agente>Danilo</agente>
<cantidad>8</cantidad>
</row>
<row>
      
   </row>
−
<row>
<agente>Evelyn</agente>
<cantidad>5</cantidad>
</row>
<row>
      
   </row>
−
<row>
<agente>Maribel</agente>
<cantidad>2</cantidad>
</row>
<row>
      
   </row>
−
<row>
<agente>Nestor</agente>
<cantidad>11</cantidad>
</row>
<row>
      
   </row>
−
<row>
<agente>Noemy</agente>
<cantidad>2</cantidad>
</row>
</chart_data>
</chart>


LA verdad es mi primera ves utilizando xml y no tengo ni la menor idea de como hacer que quede parecido ya que necesito que se "dibuje" una tabla con esta forma

Cantidad
Danilo 8
Evelyn 10
Marco 4


Alguien que me ayude por favoooooooooooooooooooooooor

Por pelonms7

33 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Abr 2011 04:37 am
y cual es la estructura de tu base de datos?
veo que quieres

Código HTML :

     <row> 
         <string>Region A</string> 
         <number>10</number> 
         <number>30</number> 
         <number>63</number> 
      </row> 

y obtienes

Código HTML :

<row> 
<agente>Nestor</agente> 
<cantidad>11</cantidad> 
</row>

aparte que pegaste el codigo q te lanza el navegador y no el codigo fuente en si para ver el codigo fuente de cualquier web haz boton derecho y pones en ver codigo fuente,
ahora tu consulta no esta del todo claro parece que solo hiciste copy paste
bueno mientras pones la estructura de tu tabla
pasate por la web de php
http://es.php.net

y lee sobre simpleXML

http://es.php.net/simpleXMLElement
aparte si dominas eso te sera facil aprender a usar el DOM con javascript
y lee tambien sobre POO y xml y creo tambien algo de lenguaje SQL aca en estos foros aun post muy buenos,tips y tutoriales que deberias leer

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Abr 2011 02:30 pm
Muchas muchas gracias por tu ayuda, ahi me puse a intentar un poco mas y ya casi lo logre.

basicamente como te habia comentado el fin tenia que ser este:

Código PHP :

<chart>

   <chart_type>pie</chart_type>

   <chart_data>
      <row>
         <null/>
         <string>2007</string>
         <string>2008</string>
         <string>2009</string>
      </row>
      <row>
         <string>Region A</string>
         <number>10</number>
         <number>30</number>
         <number>63</number>
      </row>
   </chart_data>
</chart>


Actualmente tengo esto:

Código PHP :

<chart>
   <chart_type>pie</chart_type>

   <chart_data>
      <row>
         <null></null>
         <agente>Danilo</agente>
         <agente>Evelyn</agente>
         <agente>Maribel</agente>
         <agente>Nestor</agente>
         <agente>Noemy</agente>
      </row>
      <row>
         <rutas>rutas</rutas>
         <cantidad></cantidad>
         <cantidad></cantidad>
         <cantidad></cantidad>
         <cantidad></cantidad>
         <cantidad></cantidad>
      </row>
   </chart_data>
</chart>


Con este codigo:

Código PHP :

<?php
 
header("Content-type: text/xml");
 
$host = "xxx"; 
$user = "xxxx"; 
$pass = "xxxx"; 
$database = "xxxx";
 
$enlace = mysql_connect($host, $user, $pass) or die("Error MySQL."); 
mysql_select_db($database, $enlace) or die("Error base de datos.");
 
$query = "SELECT AGENTE, count(*) FROM clientes WHERE PREVENTA LIKE 'Viernes' group by agente"; 
$resultado = mysql_query($query, $enlace) or die("Sin resultados.");

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

$salida_xml .= "<chart>\n";
$salida_xml .= "\t<chart_type>" . 'pie' . "</chart_type>\n\n";
$salida_xml .= "\t<chart_data>\n";
         $salida_xml .= "\t\t<row>\n";
         $salida_xml .= "\t\t\t<null>" . $fila5['NULL']. "</null>\n";
         for($y = 0 ; $y < mysql_num_rows($resultado) ; $y++){
            $fila2 = mysql_fetch_assoc($resultado);  
            $salida_xml .= "\t\t\t<agente>" . $fila2['AGENTE'] . "</agente>\n";
            }//cierro for Y
         $salida_xml .= "\t\t</row>\n";
         $salida_xml .= "\t\t<row>\n";    
          $salida_xml .= "\t\t\t<rutas>" . 'rutas'. "</rutas>\n";
         for($z = 0 ; $z < mysql_num_rows($resultado) ; $z++){
            $valor = mysql_fetch_assoc($resultado); 
              $salida_xml .= "\t\t\t<cantidad>" . $valor['count(*)'] . "</cantidad>\n"; 
         }//cierro for z
 
           $salida_xml .= "\t\t</row>\n";
    $salida_xml .= "\t</chart_data>\n";
   
$salida_xml .= "</chart>";
 
echo $salida_xml;
 
?>


El problema que tengo ahi es que no me esta imprimiendo las cantidades, de casualidad no sabes porque pueda ser? Le he dado vueltas y vueltas y no veo el error :(

Por pelonms7

33 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Abr 2011 06:58 pm
veo que cometes un error al imprimir

Código PHP :

$valor['count(*)']

generado por tu SQL
[sql]
SELECT AGENTE, count(*) FROM clientes WHERE PREVENTA LIKE 'Viernes' group by agente
[/sql]
mira el COUNT es una funcion la cual devuelve un valor pero por tu consulta echa no almacenas ese valor en ningun lado lo que deberias hacer es asignarle una variable o mejor dicho un campo
[sql]
SELECT AGENTE, count(*) AS cantidad_de_count FROM clientes WHERE PREVENTA LIKE 'Viernes' group by agente
[/sql]
y luego lo recuperas como un FIELD normal

Código PHP :

$valor['cantidad_de_count']

una observacion no es necesario ahcer esto

Código PHP :

for($y = 0 ; $y < mysql_num_rows($resultado) ; $y++){ 
            $fila2 = mysql_fetch_assoc($resultado);  

lo podrias simplificar con un while

Código PHP :

while(    ($fila2 = mysql_fetch_assoc($resultado))  ){  

o podrias usar la clase PDO de php con su driver para mysql

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox

 

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