Tengo un archivo xml del cual tengo que escoger los datos y pasarlos a una base de datos mysql a través de php.
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:
CREATE 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;
el xml es
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>
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
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?