Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/09/2009, 10:06
monkey_rise
 
Fecha de Ingreso: abril-2009
Mensajes: 64
Antigüedad: 15 años
Puntos: 0
No se actualizar mi base de datos con un XML

Hola buenas a todos y gracias de antemano por vuestra ayuda, teng un problemila.
Tengo un fichero que me procesa un XML y me lo inserta en mi base de datos.
El problema es que una vez al mes, me van a enviar el XML actualizado.
Entonces no se como hacer para que me haga un update de solo los prouctos que me vengan nuevos o de los que tengan datos modificados.
¿Es muy complicado? porque la verdad me ha costado la vida hacer este fichero ahora mismo estoy un poco atrancado,encima mis jefes sabiendo que no se hacerlo me estan presionando muchisimo.
Aqui os dejo el codigo de procesamiento del XML (si alguien lo necesita puede copiarlo sin problema, o si tiene alguna duda sin problema se contesta).


Código PHP:
Ver original
  1. <?php
  2. include ('../config.php');
  3.  
  4.  
  5. function convierte_municipio($municipio_cam) {
  6.     $query="select id_whp from municipios_cam_whp where id_cam='$municipio_cam'";
  7.     $result=mysql_query($query);
  8.     $id_whp = "0";
  9.     while($row = mysql_fetch_array($result)) {
  10.         $id_whp = $row["id_whp"];
  11.     }
  12.     if ($id_whp!=0) {
  13.         return $id_whp;
  14.     } else {
  15.         return 0;
  16.     }
  17. }
  18.  
  19. function convierte_tipo($tipo_cam) {
  20.     $convierte = array(
  21.         1 => 1,
  22.         2 => 2,
  23.         3 => 3,
  24.         4 => 4,
  25.        
  26.     );
  27.     return $convierte[$tipo_cam];
  28. }
  29.  
  30.  
  31. function convierte_categoria($categoria_cam) {
  32.     $convert = array(
  33.         118 => 1,
  34.         119 => 2,
  35.         120 => 4,
  36.         121 => 5,
  37.         124 => 5,
  38.         128 => 6,
  39.         129 => 6,
  40.         130 => 6,
  41.         132 => 6,
  42.         133 => 6,
  43.         134 => 6,
  44.         135 => 6,
  45.         136 => 6,
  46.         137 => 6,
  47.         138 => 6,
  48.         139 => 1,
  49.         140 => 3,
  50.         142 => 1,
  51.         143 => 1,
  52.         144 => 1,
  53.         145 => 2,
  54.         146 => 6,
  55.         147 => 6,
  56.         148 => 1,
  57.         149 => 6,
  58.         150 => 6,
  59.         151 => 6,
  60.         152 => 6,
  61.         153 => 6,
  62.         154 => 6,
  63.         155 => 6,
  64.         158 => 6,
  65.         159 => 6,
  66.        
  67.     );
  68.     return $convert[$categoria_cam];
  69. }
  70.  
  71.  
  72.  
  73. $xml = simplexml_load_file("move.xml");
  74.  
  75. $products = $xml->product;
  76.  
  77. $array_campos = array("titulo_oferta" => "titulo_oferta", "desc_largaIngles" => "desc_corta", "precio" => "precio", "precio_lib" => "price_lib","id_municipio" => "id_municipio", "id_categoria" => "id_categoria", "id_tipo" => "id_tipo", "image1" => "ruta_foto", "image2" => "ruta_foto2", "image3" => "ruta_foto3", "image4" => "ruta_foto4", "image5" => "ruta_foto5", "image6" => "ruta_foto6", "habs" => "habs", "bath" => "bath", "orient" => "orient", "direc" => "direc", "size" => "size", "ref" => "ref", "price_m2" => "price_m2", "built_size" => "built_size", "plot_size" => "plot_size", "floor" => "floor", "garage" => "garage", "Lumberroom" => "lumberroom", "padel" => "padel", "school" => "school", "swimming_pool" => "swimming_pool", "golf" => "golf", "beach" => "beach", "medicalCenter" => "medicalCenter", "desc_largaIngles" => "desc_largaIngles", "desc_larga" => "desc_larga"  );
  78.  
  79. $num_elemento_municipio_en_array = 4;
  80. $num_elemento_tipo_en_array = 6;
  81. $num_elemento_categoria_en_array = 5;
  82.  
  83.  
  84. foreach ($products as $product) {
  85.  
  86.     $array_municipios_no_aceptados = array(30026, 3047);
  87.  
  88.     if (in_array($product->id_municipio , $array_municipios_no_aceptados)) {
  89.         continue;
  90.     }
  91.    
  92.     $arraydecampos = array();
  93.     $arraydevalores = array();
  94.     foreach ($array_campos as $campo => $campo_db) {
  95.         if (property_exists($product, $campo)) {
  96.             $arraydecampos[] = $campo_db;
  97.             $arraydevalores[] = addslashes(utf8_decode($product->$campo));
  98.         }
  99.     }
  100.    
  101.     $arraydevalores[$num_elemento_municipio_en_array] = convierte_municipio($arraydevalores[$num_elemento_municipio_en_array]);
  102.     $arraydevalores[$num_elemento_tipo_en_array] = convierte_tipo($arraydevalores[$num_elemento_tipo_en_array]);
  103.     $arraydevalores[$num_elemento_categoria_en_array] = convierte_categoria($arraydevalores[$num_elemento_categoria_en_array]);
  104.  
  105.    
  106.     $cadenadecampos = implode(",", $arraydecampos);
  107.     $cadenadevalores = "'" . implode("','", $arraydevalores) . "'";
  108.  
  109.    
  110.     $query = " insert into productos ($cadenadecampos ) VALUES ($cadenadevalores)";
  111.     $result = mysql_query($query) ;
  112.    
  113.     if ($result === false) {
  114.         echo "Error: no se ha podido insertar la propiedad <br />";
  115.         echo mysql_error() . "<br />";
  116.         echo $query;
  117.         exit;
  118.     } else {
  119.         echo "propiedades actualizadas  " .$arraydevalores[0]. " -- -->".  $arraydevalores[18] ."<br />" ;
  120.        
  121.     }
  122. }
  123.  
  124. ?>

Última edición por jam1138; 03/09/2009 a las 12:37 Razón: Coloreo código