La cuestión es que si un registro existe debe actualizarlo y si no, debe insertarlo.
Para ello cojo el campo "Codigo" del xml y lo debo comparar con el campo "hcodigo" de la base de datos.
Logro insertar los datos sin tener en cuenta si existe o no el registro pero no consigo actualizar o insertar según si existe el registro.
La base de datos es así
Código:
el xml esCREATE TABLE `productos` ( `id` int(4) unsigned NOT NULL AUTO_INCREMENT, `hcodigo` varchar(15) COLLATE latin1_spanish_ci DEFAULT NULL, `hnombre` varchar(250) COLLATE latin1_spanish_ci DEFAULT NULL, `hinactivo` varchar(30) COLLATE latin1_spanish_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;
Código:
Y aquí el archivo php a través del cual leo los datos del xml y los inserto en la tabla productos. Obtenido a traves de un manual de J. Manuel Navarro - http://www.forosdelweb.com/f18/guard...-mysql-992388/ es por lo que he logrado este código<?xml version="1.0" encoding="utf-8"?> <nombres> <usuarios> <Codigo>345</Codigo> <Nombre>Juan</Nombre> <Inactivo>r</Inactivo> </usuarios> <usuarios> <Codigo>123</Codigo> <Nombre>pepe</Nombre> <Inactivo>F</Inactivo> </usuarios> </nombres>
Código:
<?php $xml_file = 'elnombredelarchivo.xml'; if (file_exists($xml_file)) { $xml = simplexml_load_file($xml_file); } else { exit('Error al intentar abrir el fichero '.$xml_file); } // Todo bien asi que abrimos BD para importar require 'config.php'; /* Recorremos el XML */ $count=0; foreach ($xml->usuarios as $usuarios) { // Inserta el usuario en la tabla $qry = "INSERT INTO productos ". "(hcodigo, hnombre, hinactivo)". " VALUES ('$usuarios->Codigo', ". "'$usuarios->Nombre', ". "'$usuarios->Inactivo.')"; // arreglo acentos $qry_code = utf8_decode($qry); echo $qry_code; // Ahora ejecutamos el INSERT en la BD $result = mysql_query($qry_code) or die(mysql_error()); // Incrementamos contado para ver cuantos usuarios se importan. $count++; } echo "<br/>"; echo "-------------------------------------------<br/>"; echo "Total de Usuarios importados: $count usuarios<br/>"; echo "-------------------------------------------<br/>"; ?>
¿Alguna ayuda?