Foros del Web » Programando para Internet » PHP »

generar un formulario xml

Estas en el tema de generar un formulario xml en el foro de PHP en Foros del Web. hola muchachos tengo un inconveniente con este codigo el me exporta una consulta en sql pero con el gestor de bd mysql pero estoy utlizando ...
  #1 (permalink)  
Antiguo 05/05/2009, 16:32
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
generar un formulario xml

hola muchachos tengo un inconveniente con este codigo el me exporta una consulta en sql pero con el gestor de bd mysql pero estoy utlizando odbc que hacer en ese caso? pense en cambiarle los nombres en ves de mysql poner odbc pero no me realiza nada de favor mirenlo y sugieranme que hacer:


//realizamos la conexion mediante odbc
$cid=conODBC("xxxxxx");

if (!$cid){
exit("Ha ocurrido un error tratando de conectarse con el origen de datos.");
}


// consulta SQL de Visitas Activas
$sql="aqui se realizaria la consulta la cual esta bien ";

$resultado= odbc_exec($cid,$sql)or die(exit("Error Ejecutando Consulta."));



header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=archivo.xls");



$campos = mysql_num_fields($resultado);
$i=1;
echo "<table><tr>";
while($i<$campos){
echo "<td>". mysql_field_name($resultado, $i);
echo "</td>";
$i++;
}
echo "</tr>";
while($row= mysql_fetch_array($resultado)){
echo "<tr>";
for($j=0; $j<$campos; $j++) {
echo "<td>".$row[$j]."</td>";
}
echo "</tr>";
}
echo "</table>";


llevo una semana en ello help...........
  #2 (permalink)  
Antiguo 06/05/2009, 08:45
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: generar un formulario xml

Mensaje movido al foro de PHP desde Bienvenida a Foros del Web.

Saludos,
  #3 (permalink)  
Antiguo 06/05/2009, 09:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: generar un formulario xml

Hola mss_lobaton85,

Que error te da?

Saludos
  #4 (permalink)  
Antiguo 06/05/2009, 09:38
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: generar un formulario xml

PUES COMO DEBE SER XML LO MODIFIQUE DE ESTA FORMA PERO SIN EMBARGO SIGUE SALIENDO UN ERROR



include("C:\CARPETA\libreria.php");

ConMySql("BD","localhost");

ConODBC("XXXXXX");

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



header("Content-Disposition: attachment; filename=archivo.xml");

$qry= mysql_query("AQUI EL SELECT");



$campos = mysql_num_fields($qry);
$i=0;
echo "<table><tr>";
while($i<$campos){
echo "<td>". mysql_field_name ($qry, $i);
echo "</td>";
$i++;
}
echo "</tr>";
while($row=mysql_fetch_array($qry)){
echo "<tr>";
for($j=0; $j<$campos; $j++) {
echo "<td>".$row[$j]."</td>";
}
echo "</tr>";
}
echo "</table>";

echo$idCont."<br>";
echo$refOrden."<br>";
?>



EL ERROR ES:::




No se puede mostrar la página XML
No se puede ver la entrada XML con la hoja de estilo XSL. Corrija el error y haga clic en el botón Actualizar, o inténtelo de nuevo más tarde.


--------------------------------------------------------------------------------

Sólo se admite un elemento de nivel superior en un documento XML. Error al procesar el recurso file:///C:/Documents and Set...

<b>Warning</b>: mysql_num_fields(): supplied argument is not a valid MySQL result resource in <b>c:\appse...
  #5 (permalink)  
Antiguo 06/05/2009, 10:01
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: generar un formulario xml

Lo primero que debes saber es cómo PHP se comunica con ODBC:

Mira esto http://www.w3schools.com/PHP/php_db_odbc.asp.
o
http://www.maestrosdelweb.com/editor...hp-en-7-pasos/
  #6 (permalink)  
Antiguo 06/05/2009, 10:06
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: generar un formulario xml

Pues la conexion odbc funciona bien ella la utilizo en otros formularios pero creo que lo que debo cambiar es por ejemplo


la funcion mysql_num_fields() por la de odbc tratare eso y luego le cuento como me fue...........................
  #7 (permalink)  
Antiguo 06/05/2009, 10:08
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: generar un formulario xml

Hombre, por supuesto, no debes utilizar un manejador propio de MySQL en ODBC
  #8 (permalink)  
Antiguo 06/05/2009, 10:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: generar un formulario xml

Exacto tienes que usar TODAS las funciones de odbc_* en lugar de las de mysql.

Saludos.
  #9 (permalink)  
Antiguo 06/05/2009, 10:41
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: generar un formulario xml

header("Content-type: text/xml");
header("Content-Disposition: attachment; filename=archivo.xml");

$campos = odbc_num_fields($qry);
$i=0;
echo "<table><tr>";
while($i<$campos){
echo "<td>". odbc_field_name($qry, $i);
echo "</td>";
$i++;
}
echo "</tr>";
while($row=odbc_fetch_array($qry)){
echo "<tr>";
for($j=0; $j<$campos; $j++) {
echo "<td>".$row[$j]."</td>";
}
echo "</tr>";
}
echo "</table>";




NADA HICE EL CAMBIO Y AHORA GENERA ESTE ERROR::<b>Warning</b>: odbc_num_fields(): supplied argument is not a valid ODBC result resource in <b>c:\appserv...


NO SE SI ESE ARGUMENTO FIELD TAL VES NO ME RECIBA EL SELECT PERO REPITO EL SELECT FUNCIONA BIEN YO LO UTILIZO EN OTROS FORM BN


SOLO QUE NO SE POR CUAL ARGUMENTO CAMBIAR ESE NUM FIELD
  #10 (permalink)  
Antiguo 06/05/2009, 10:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: generar un formulario xml

Te esta diciendo que la variable que le pasas $qry no es valida, es decir es probable que al ejecutarla ODBC te haya marcado un error.

Saludos.
  #11 (permalink)  
Antiguo 06/05/2009, 11:01
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: generar un formulario xml

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

/*header("Content-type: application/vnd.ms-excel");*/

header("Content-Disposition: attachment; filename=archivo.xml");

$campos = odbc_num_fields($resultado);
$i=0;
echo "<table><tr>";
while($i<$campos){
echo "<td>". odbc_field_name($resultado, $i);
echo "</td>";
$i++;
}
echo "</tr>";
while($row=odbc_fetch_row($resultado)){
echo "<tr>";
for($j=0; $j<$campos; $j++) {
echo "<td>".$row[$j]."</td>";
}
echo "</tr>";
}
echo "</table>";

echo$idCont."<br>";
echo$refOrden."<br>";



ya corregi la parte de la conexion pero ahora el me imprime los nombres de los campos pero no el contenido

este error sale::

No se puede mostrar la página XML
No se puede ver la entrada XML con la hoja de estilo XSL. Corrija el error y haga clic en el botón Actualizar, o inténtelo de nuevo más tarde.


--------------------------------------------------------------------------------

No es válido en el nivel superior del documento. Error al procesar el recurso file:///C:/Documents and Settings/almam/Confi...

<td></td><td>IDMOV</td><td>CONTENEDOR</td><td>MOV</td><td>TIPO_MOV<...
  #12 (permalink)  
Antiguo 06/05/2009, 11:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: generar un formulario xml

Lee como debe de ser la estructura basica de un documento XML, necesitas un nodo padre, algo asi:
Código xml:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <roles>
  3.     <role name="guest"></role>
  4.     <role name="user"></role>
  5.     <role name="admin"></role>
  6. </roles>

Saludos.
  #13 (permalink)  
Antiguo 06/05/2009, 13:22
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: generar un formulario xml

no entiendo en que parte de mi codigo debo agregar eso ademas a que se refiere con roles? estoy confundida
  #14 (permalink)  
Antiguo 06/05/2009, 14:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: generar un formulario xml

Solamente te estoy mostrando la estructura de como debe ser un XML y el porque te marca errores tu codigo, tienes que generar los nodos correctos o de lo contrario tu XML va a ser invalido.

Saludos.
  #15 (permalink)  
Antiguo 07/05/2009, 10:19
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: generar un formulario xml

lo he modificado de esta manera pero ahora no me genera el archivo xml:::



<?php

echo '<?xml version="1.0" encoding="UTF-8"?>';



//AQUI LOS INCLUDES DE CONECCIÓN, VALIDACIÓN DE PERMISOS Y DEMAS

include("C:\carpeta\libreria.php");

ConMySql("bd","localhost");

$sql=mysql_query("select * from tabla");


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

$campos = mysql_num_fields($sql);
$i=0;

while($i<$campos){
echo mysql_field_name ($sql, $i);

$i++;
}



if ( mysql_num_rows($sql) > 0 )

{
while ( $row = mysql_fetch_array( $sql ) )
{


for($j=0; $j<$campos; $j++) {
echo $row[$j];

}
}
}

?>

como le aplico a este codigo la creacion del xml
  #16 (permalink)  
Antiguo 07/05/2009, 11:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: generar un formulario xml

Pues no te genera el XML porque nunca generas los tags XML, si ves el ejemplo que te deje es simple XML es un lenguaje de Markup por lo que los tags tu los generas a como los necesites, por ejemplo:
Código php:
Ver original
  1. <?php
  2. echo '<?xml version="1.0" encoding="UTF-8"?>';
  3. echo '<algo>';
  4. while (/* cosas */) {
  5.       echo '<tag>A</tag>';
  6. }
  7. echo '</algo>';

Saludos.
  #17 (permalink)  
Antiguo 07/05/2009, 13:22
Avatar de mss_lobaton85  
Fecha de Ingreso: abril-2009
Ubicación: Buenaventura
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Código PHP:
<?PHP
    
include("C:\CARPETA\libreria.php");

ConMySql("BD","localhost");

$sql=mysql_query("select * from tABLA");




    
$campos mysql_num_fields($sql);
      
$i=0;
    

    while(
$i<$campos){
    echo  
mysql_field_name ($sql$i);

    
$i++;
}

    
    
    if ( 
mysql_num_rows($sql) > )

    {
        while ( 
$row mysql_fetch_array$sql ) )
        {
            
            for(
$j=0$j<$campos$j++) {
            
            
$xml='<?xml version="1.0" encoding="UTF-8"?>';
                ECHO 
"<nodo>
                <datos id_xml='$j'>"
;
                
                 ECHO 
$row[$j];
                 
                ECHO 
" </datos>
                </nodo>"
;
            
        
            
        }
        
        
$nombre="archivo.xml";
            
$archivofopen($nombre,"w+");
            
fwrite($archivo,$xml);
            
fclose($archivo);
    
        
        
        
    }
    }
    



    
?>
EHH GATORV LO APLIQUE DE ESTA FORMA , ME IMPRIME EL RESULTADO PERO NO ME GENERA EL XML PODRIAS MIRAR QUE TENGO MAL EN ESTE CODIGO?

Última edición por GatorV; 07/05/2009 a las 13:36
  #18 (permalink)  
Antiguo 07/05/2009, 13:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: generar un formulario xml

Pues el problema es que en unas partes imprimes (usando echo) y en otras partes asignas a una variable $xml, es por eso que no lo generas.

Por otro lado dentro de tu for haces la apertura de tu nodo, eso es un error y te va a resultar en un XML mal generado, tienes que generarlo fuera de tu ciclo e imprimir dentro de tu ciclo (o asignar).

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:06.