Foros del Web » Programando para Internet » PHP »

simplexml a mysql

Estas en el tema de simplexml a mysql en el foro de PHP en Foros del Web. hola necesito ayuda soy nuevo en php y necesito insertar datos de un xml a una base de datos mysql he formado un script pero ...
  #1 (permalink)  
Antiguo 18/06/2010, 14:04
 
Fecha de Ingreso: junio-2010
Mensajes: 2
Antigüedad: 13 años, 10 meses
Puntos: 0
simplexml a mysql

hola

necesito ayuda soy nuevo en php y necesito insertar datos de un xml a una base de datos mysql he formado un script pero me retorna este warning q imagino q sea algún problema en la sintaxis. ak les dejo el .php gracias.

/<?php
// fichero a importar
$xml_file = 'nbreport.xml';
$i = 0;

if (file_exists($xml_file)) { $xml = simplexml_load_file($xml_file);
} else {
exit('Error al intentar abrir el fichero '.$xml_file);
}

// sacamos las variables del XML

linea 19 $hora = $xml -> {'variable-set'} -> attributes()-> timestamp ;
$nombre = $xml -> {'variable-set'} -> variable[0] -> metadata[3] -> {'nls-string-val'} ;
linea 21 foreach ($xml -> {'variable-set'} -> variable as $var) {
switch((string) $var['varid']) { // Toma los atributos como índices del elemento
case 'nbEyeEnc_0_CMOT':
$camara= ( $xml -> {'variable-set'} -> variable[$i] -> {'u32-val'});
$i++;
break;
case 'nbEyeEnc_0_DOOR':
$puerta= ( $xml -> {'variable-set'} -> variable[$i] -> {'u32-val'});
$i++;
break;
case 'nbHawkEnc_0_DEW':
$rocio= ( $xml -> {'variable-set'} -> variable[$i] -> {'double-val'});
$i++;
break;
case 'nbHawkEnc_0_AUDI':
$audio= ( $xml -> {'variable-set'} -> variable[$i] -> {'double-val'});
$i++;
break;
case 'nbHawkEnc_0_AFLW':
$aire= ( $xml -> {'variable-set'} -> variable[$i] -> {'double-val'});
$i++;
break;
case 'nbHawkEnc_0_HUMI':
$hum1= ( $xml -> {'variable-set'} -> variable[$i] -> {'double-val'});
$i++;
break;
case 'nbHawkEnc_0_HUMI2':
$hum2= ( $xml -> {'variable-set'} -> variable[$i] -> {'double-val'});
$i++;
break;
case 'nbHawkEnc_0_TEMP':
$temp1= ( $xml -> {'variable-set'} -> variable[$i] -> {'double-val'});
$i++;
break;
case 'nbHawkEnc_0_TEMP3':
$temp2= ( $xml -> {'variable-set'} -> variable[$i] -> {'double-val'});
$i++;
break;
default:
$i++;
}
}


// abrimos la BD

require 'config.php';

// Insertamos los datos en la BD

mysql_query ( "INSERT INTO nbreport (time, nombre, camara, door, ptorocio, audio, aire, humint, humext, tempint, tempext) VALUES ('$hora', '$nombre', '$camara', '$puerta', '$rocio', '$audio', '$$aire', '$hum1', '$hum2', '$tem1', '$temp2')")
or die(mysql_error());

?>

el resultado es

/
Warning: main(): Node no longer exists in C:\xampp\htdocs\php\importmysql\import
-xml.php on line 19

Warning: main(): Node no longer exists in C:\xampp\htdocs\php\importmysql\import
-xml.php on line 19

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\php\importmy
sql\import-xml.php on line 22
  #2 (permalink)  
Antiguo 18/06/2010, 14:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: simplexml a mysql

el mensaje de error no indica problemas de sintaxis, por favor... usa un traductor para entender el mensaje... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/06/2010, 14:15
 
Fecha de Ingreso: junio-2010
Mensajes: 2
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: simplexml a mysql

gracias por la respuestaper entiendo q no es un error, pero al final no logro q la variable $hora por ejemplo tome el valor desdeado, q en este caso seria el valor del argumento timestamp.
  #4 (permalink)  
Antiguo 18/06/2010, 16:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: simplexml a mysql

es difícil para nosotros conocer el contenido y estructura del archivo XML que intentas leer...

en todo caso, siempre debes usar var_dump() para ir depurando tus variables antes de procesarlas... te sugiero hacer este proceso poco a poco... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 18/06/2010, 20:46
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: simplexml a mysql

Prueba este codigo:


Código PHP:

<?php

$xml 
simplexml_load_file("nbreport.xml");

$xmlText $xml->asXML();
$xmlText htmlentities($xmlText);
print 
"<pre>$xmlText</pre> \n";

foreach (
$xml->children() as $name => $value){
print 
"<b>$name:</b> $value<br /> \n";
// end foreach


?>

Etiquetas: mysql, simplexml
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 22:45.