Foros del Web » Programando para Internet » PHP »

XML ==> varias variables PHP repetidas ==> MySQL

Estas en el tema de XML ==> varias variables PHP repetidas ==> MySQL en el foro de PHP en Foros del Web. Muy buenas!!! Queria consultarles. Hace unos cuantos días estoy intentando desarrollar esto, pero no logro encontrar la solución. Trabajo con PHP4. Estoy empezando con XML. ...
  #1 (permalink)  
Antiguo 28/06/2007, 13:38
 
Fecha de Ingreso: diciembre-2004
Mensajes: 197
Antigüedad: 19 años, 4 meses
Puntos: 1
XML ==> varias variables PHP repetidas ==> MySQL

Muy buenas!!!
Queria consultarles. Hace unos cuantos días estoy intentando desarrollar esto, pero no logro encontrar la solución. Trabajo con PHP4. Estoy empezando con XML.

Tengo un XML con este formato:

archivo.xml
Código PHP:
<?xml version "1.0" encoding="Windows-1252" standalone="yes"?>
<VFPData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="cabezal.xsd">
    <datos>
        <demo1>140</demo1>
        <demo2>O</demo2>
        <demo3>2006-12-27T11:04:19</demo3>
    </datos>
    <datos>
        <demo1>141</demo1>
        <demo2>O</demo2>
        <demo3>2006-12-27T16:19:52</demo3>
    </datos>
    <datos>
        <demo1>142</demo1>
        <demo2>V</demo2>
        <demo3>2006-12-29T16:15:52</demo3>
    </datos>
</VFPData>
Lo que estoy intentando hacer es que un PHP les cada uno de los tags "datos" y por cada uno de estos, haga un insert en la base de datos.
he logrado que lo haga por solo uno de ellos, pero no para todos.
El problema me surge que me está tomando las etiquetas "VFPData" y "datos" como campos, y eso me trae problemas.

Hay alguna manera de que solo tome los datos de las etiquetas interiores (las "demoX")?

es decir, algo como "por cada etiqueta datos, toma las etiquetas interiores e insertalas en la base de datos".

He leido las bolbiotecas de PHP, utilizando algunos de estos ejemplos, pero no doy con la respuestas.
( http://ar2.php.net/manual/es/ref.xml.php )

Lo levanto con este php:

Código PHP:
$file "archivo.xml";
$feed = array();
$key "";
$info "";

function 
startElement($xml_parser,  $attrs ) {
  global 
$feed;
   }

function 
endElement($xml_parser$name) {
  global 
$feed,  $info;
   
$key $name;
  
$feed[$key] = $info;
  
$info ""; }

function 
charData($xml_parser$data ) {
  global 
$info;
  
$info .= $data; }

$xml_parser xml_parser_create();
xml_set_element_handler($xml_parser"startElement""endElement");
xml_set_character_data_handler($xml_parser"charData" );
$fp fopen($file"r");
while (
$data fread($fp8192))
!
xml_parse($xml_parser$datafeof($fp));
xml_parser_free($xml_parser);

$orden_tabla "ordentabla";

$sql"INSERT INTO $orden_tabla ( `";
$j=0;
$i=count($feed);
foreach( 
$feed as $assoc_index => $value )
  {
  
$j++;
  
$sql.= strtolower($assoc_index);
  if(
$i>$j$sql.= "` , `";
  if(
$i<=$j) {$sql.= "` ) VALUES ('";}
  }
 
$h=0;
foreach( 
$feed as $assoc_index => $value )
  {
  
$h++;
  
$sql.= utf8_decode(trim(addslashes($value)));
  if(
$i-1>$h$sql.= "', '";
  if(
$i<=$h$sql.= "','')";
  }
  
$sql=trim($sql);
  echo 
$sql
Otra opcioón seria que por tada una de las etiquetas internas de "datos", me ceee una variable con el valor de la etiqueta, y que valla loopeando por cada etiqueta "datos".
Pero bueno eso tampoco lo logré :(

Saludos!
Miles de gracias!! Espero que esta duda sirva de algo a la comunidad :)
__________________
Diseñador y Desarrolador en Proyecto81 WebStudio
  #2 (permalink)  
Antiguo 29/06/2007, 08:07
 
Fecha de Ingreso: diciembre-2004
Mensajes: 197
Antigüedad: 19 años, 4 meses
Puntos: 1
Re: XML ==> varias variables PHP repetidas ==> MySQL

Movido al Foro php :)
__________________
Diseñador y Desarrolador en Proyecto81 WebStudio
  #3 (permalink)  
Antiguo 29/06/2007, 08:29
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo Re: XML ==> varias variables PHP repetidas ==> MySQL

Queriendo aprender de este tema , para ayudarte, me encontre con este estupendo tutorial,http://www.ibm.com/developerworks/xm...x-xmlphp2.html, los ejemplos que te podrian servir comienzan desde el "Listing 8".

Saludillos.
  #4 (permalink)  
Antiguo 04/07/2007, 07:45
 
Fecha de Ingreso: diciembre-2004
Mensajes: 197
Antigüedad: 19 años, 4 meses
Puntos: 1
Re: XML ==> varias variables PHP repetidas ==> MySQL

Bueno, comunidad querida, ete aqui lo que llegue a desarrollar/compilar/armar. La mayor parte del texto la encontre, le cambie algunos valores y agregue algunas funciones.

archivo.xml:
Código PHP:
<?xml version "1.0" encoding="Windows-1252" standalone="yes"?>
<VFPData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="items.xsd">
    <campos>
        <valor1>12351</valor1>
        <valor2>Viento</valor2>
        <valor3>sgsfgds4</valor3>
        <valor4>Idggdssg</valor4>
    </campos>
    <campos>
        <valor1>12352</valor1>
        <valor2>Agua</valor2>
        <valor3>fdgdg 204</valor3>
        <valor4>Isdg  rthyh56 h</valor4>
    </campos>
</VFPData>

Código PHP:
<?php
  $g_itemss 
= array();
  
$g_elem_item null;
  
  function 
startElement$parser$name$attrs 
  {
  global 
$g_itemss$g_elem_item;
  if ( 
$name == 'CAMPOS' $g_itemss []= array();
  
$g_elem_item $name;
  }
  
  function 
endElement$parser$name 
  {
  global 
$g_elem_item;
  
$g_elem_item null;
  }

  function 
textData$parser$text )
  {
  global 
$g_itemss$g_elem_item;
  if ( 
$g_elem_item == 'VALOR1' ||
  
$g_elem_item == 'VALOR2' ||
  
$g_elem_item == 'VALOR3' ||
  
$g_elem_item == 'VALOR4' )
  {
  
$g_itemsscount$g_itemss ) - ][ $g_elem_item ] = $text;
  }
  }
  
  
$parser xml_parser_create();
  
  
xml_set_element_handler$parser"startElement""endElement" );
  
xml_set_character_data_handler$parser"textData" );
  
  
$f fopen'archivo.xml''r' );
  
  while( 
$data fread$f4096 ) )
  {
  
xml_parse$parser$data );
  }
  
  
xml_parser_free$parser );
  
  foreach( 
$g_itemss as $item_booked )
  {

    
$numorden $item_booked['valor1'];
    
$tipoint $item_booked['valor2'];
    
$numoper $item_booked['valor3'];
    
$sector $item_booked['valor4'];
    

include(
"config.php");

//////////////////////////////////////
//////////////////////////////////////
    
mysql_query("INSERT INTO tabla (mis_campos)values($mis_variables)")or die(mysql_error());
    
mysql_free_result($grabaITEMS);
    
mysql_close ();
}
?>
Espero que sirva de algo por allí !!!

Saludos
__________________
Diseñador y Desarrolador en Proyecto81 WebStudio

Última edición por daenor; 04/07/2007 a las 12:36
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 10:39.