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?


