Foros del Web » Programando para Internet » PHP »

insertar o actualizar en db a través de php desde un xml

Estas en el tema de insertar o actualizar en db a través de php desde un xml en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 26/11/2014, 13:29
 
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?
  #2 (permalink)  
Antiguo 26/11/2014, 13:41
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: insertar o actualizar en db a través de php desde un xml

Más que tema de php, es tema de base de datos, como usas mysql:

http://dev.mysql.com/doc/refman/5.0/...duplicate.html

Debes declarar como primario el campo que no se puede repetir.
  #3 (permalink)  
Antiguo 26/11/2014, 13:56
 
Fecha de Ingreso: junio-2005
Mensajes: 69
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: insertar o actualizar en db a través de php desde un xml

¿Y no tendría que realizar algún tipo de condicional en el código php para que revise si el campo "hcodigo" existe para actualizar o insertar?
Realmente estoy un bastante perdido en esto

Etiquetas: mysql, registro, sql, tabla, usuarios, xml
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 03:33.