Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/11/2014, 13:29
pepu
 
Fecha de Ingreso: junio-2005
Mensajes: 69
Antigüedad: 18 años, 10 meses
Puntos: 0
insertar o actualizar en db a través de php desde un xml

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?