Manuelamaya25 Posted February 25, 2018 Share Posted February 25, 2018 (edited) Hola muy buenas, es mi primer tema que escribo y la verdad que no se si lo estoy haciendo bien. Llevo mucho tiempo leyendo vuestras preguntas y respuesta y la verdad que de no saber nada de nada he aprendido mucho de ustedes. Mil gracias. Mi intención RS que a ver mi alguien puede ayudarme a importar un XML a prestas hoy 1.7.2.4. He logrado importar todos los productos perfectamente pero sin imágenes. Solo he conseguido escribir en las tres tablas referentes a dichas imágenes pero no las consigo emparejar con los productos ya que no se como guardarlas en su carpeta correspondiente. El script que estoy intentando hacer funcionar es este. <?php //incluimos funciones simples de imagen //include('config/config.inc.php'); //include('images.inc.php'); //include('classes/controller/AdminController.php'); //include('config/config.inc.php'); //include('controllers/admin/AdminImportController'); //include('controllers/admin/AdminImagesController.php'); //include('SimpleImage.php'); // archivo del import (.xml) $context = stream_context_create(array('https' => array('header' => 'Accept: text/html, application/xhtml+xml,image/jpeg,application/xml;q=0.9, */*;q=0.8'))); $url = 'https://dreamlove.gesio.be/dyndata/exportaciones/csvzip/catalog_1_50_8_0_f2f9102e37db89d71346b15cbc75e8ce_xml_plain.xml'; $xml = file_get_contents($url, false, $context); $xml = simplexml_load_string($xml,null,LIBXML_NOCDATA); //datos de nuestra base de datos $username = "meycalco_presta"; $password = "F5Ssp92!@d"; $hostname = "localhost"; //Conexión con la base de datos $dbhandle = mysql_connect($hostname, $username, $password) or die("No se ha podido conectar"); echo "Conectado a MySQL<br><br> "; $selected = mysql_select_db("meycalco_presta", $dbhandle) or die("No se ha podido conectar a Prueba1"); echo "Conectado a Prueba1<br><br> "; //Primero recogemos el valor del % por ciento de la base de datos $incremento_precio = 0; //declaramos la variable que guardara el valor del incremento $sql_increase = "SELECT `value`"; $sql_increase .= " FROM `ps_configuration`"; $sql_increase .= " WHERE `name` "; $sql_increase .= "LIKE 'PS_INCREASE_PRICE'"; //Ejecutamos la sentencia $result = mysql_query($sql_increase) or die("No se ha ejecutado la sentencia select PS_INCREASE_PRICE"); while ($row = mysql_fetch_array($result)) { $incremento_precio = $row{'value'}; } echo "El incremento del precio es " . $incremento_precio . "% "; //funcion para comprobar si la categoria ya existe en la base de datos function comprobarCategoriaExistente($categoria) { //Comprobar si existe categoria $sql = "SELECT * FROM `ps_category_lang` WHERE `name` LIKE '" . $categoria . "'"; $result = mysql_query($sql) or die("No se ha ejecturado la sentencia comprobarCategoriaExistente"); $id_categoria = mysql_num_rows($result); while ($row = mysql_fetch_array($result)) { //Recogemos el id de la categoria $id_categoria = $row{'id_category'}; } echo "El resultado de la busqueda comprobarCategoriaExistente es " . $id_categoria . " "; return $id_categoria; } //funcion para comprobar si el producto ya existe en la base de datos function comprobarExisteProducto($id_articulo) { //comprobamos que el producto existe en el sistema o no $sql = "SELECT * FROM `ps_product` WHERE `reference` LIKE '" . $id_articulo . "'"; $result = mysql_query($sql) or die("No se ha ejecturado la sentencia comprobarExisteProducto"); $id_articulo = mysql_num_rows($result); while ($row = mysql_fetch_array($result)) { //Recogemos el id del producto en la bd $id_articulo = $row{'id_product'}; } echo "El resultado de la busqueda comprobarExisteProducto es " . $id_articulo . " "; return $id_articulo; } //funcion para comprobar si la marca ya existe en la base de datos function comprobarMarcaExistente($marca) { //miramos si existe su marca $sql = "SELECT * FROM `ps_manufacturer` WHERE `name` LIKE '" . $marca . "'"; $result = mysql_query($sql) or die("No se ha ejecturado la sentencia comprobarMarcaExistente"); $id_fabricante = mysql_num_rows($result); while ($row = mysql_fetch_array($result)) { //Recogemos el id de la marca en la bd $id_fabricante = $row{'id_manufacturer'}; } echo "El resultado de la busqueda comprobarMarcaExistente es " . $id_fabricante . " "; return $id_fabricante; } //Creamos una función para cambiar permisos de archivos //funcion para canviar permisos function recursiveChmod($path, $filePerm = 0775, $dirPerm = 0775) { // Check if the path exists if (!file_exists($path)) { //echo "No existe el directorio"; return (false); } // See whether this is a file if (is_file($path)) { // Chmod the file with our given filepermissions chmod($path, $filePerm); // If this is a directory... } elseif (is_dir($path)) { // Then get an array of the contents $foldersAndFiles = scandir($path); // Remove "." and ".." from the list $entries = array_slice($foldersAndFiles, 2); // Parse every result... foreach ($entries as $entry) { // And call this function again recursively, with the same permissions recursiveChmod($path . "/" . $entry, $filePerm, $dirPerm); } // When we are done with the contents of the directory, we chmod the directory itself chmod($path, $dirPerm); } // Everything seemed to work out well, return true return (true); } //funcion que genera y coloca en el directorio correspondiente //los diferentes tamaños de imagen que usa prestashop function save_image($url_image,$id_image) { $array_id_image = str_split($id_image); $num_digits = strlen($id_image); $cadena_url_mod = NULL; for($img= 0;$img>load("".$path . $filename . "." .$img_ext.""); ); $image->resizeToWidth(98,98); $image->save("".$path . $filename . "-small_default." .$img_ext.""); $image2 = new SimpleImage(); $image2->load("".$path . $filename . "." .$img_ext.""); $image2->resizeToWidth(213,120); $image2->save("".$path . $filename . "-home_alysum." .$img_ext.""); $image3 = new SimpleImage(); $image3->load("".$path . $filename . "." .$img_ext.""); $image3->resizeToWidth(124); $image3->save("".$path . $filename . "-home_default." .$img_ext.""); $image4 = new SimpleImage(); $image4->load("".$path . $filename . "." .$img_ext.""); $image4->resizeToWidth(310); $image4->save("".$path . $filename . "-large_alysum." .$img_ext.""); $image5 = new SimpleImage(); $image5->load("".$path . $filename . "." .$img_ext.""); $image5->resizeToWidth(264); $image5->save("".$path . $filename . "-large_default." .$img_ext.""); $image6 = new SimpleImage(); $image6->load("".$path . $filename . "." .$img_ext.""); $image6->resizeToWidth(104); $image6->save("".$path . $filename . "-medium_alysum." .$img_ext.""); $image7 = new SimpleImage(); $image7->load("".$path . $filename . "." .$img_ext.""); $image7->resizeToWidth(58); $image7->save("".$path . $filename . "-medium_default." .$img_ext.""); $image8 = new SimpleImage(); $image8->load("".$path . $filename . "." .$img_ext.""); $image8->resizeToWidth(45); $image8->save("".$path . $filename . "-small_alysum." .$img_ext.""); $image9 = new SimpleImage(); $image9->load("".$path . $filename . "." .$img_ext.""); $image9->resizeToWidth(600); $image9->save("".$path . $filename . "-thickbox_alysum." .$img_ext.""); $image10 = new SimpleImage(); $image10->load("".$path . $filename . "." .$img_ext.""); $image10->resizeToWidth(600); $image10->save("".$path . $filename . "-thickbox_default." .$img_ext.""); chmod($ruta, 0775); $valor_permisos = recursiveChmod ($path, $filePerm=0755, $dirPerm=0775); echo "Se han dado todos los permisos? ".$valor_permisos; return filesize($filex); } //visitamos todos los nodos foreach($xml->product as $product){ $id_articulo = ($product->public_id); $ean = ($product->barcodes->barcode); $categoriaxml = (explode("|",$product->categories->category)); $nombre = mysql_real_escape_string($product->title); $marca = mysql_real_escape_string($product->brand); $descripcion = mysql_real_escape_string($product->html_description); $descripcion_corta = mysql_real_escape_string($product->description); $precio =mysql_real_escape_string($product->price); $precio_tarifa =mysql_real_escape_string($product->cost_price); $stock = mysql_real_escape_string($product->available); $stock_disponible = mysql_real_escape_string($product->stock->location); $img = ($product->images->image); $categoria = utf8_decode($categoriaxml[0]); $subcategoria = utf8_decode($categoriaxml[1]); $subsubcategoria = utf8_decode($categoriaxml[2]); $image = ($img[0]); $image2 = ($img[1]); $image3 = ($img[2]); $image4 = ($img[3]); $image5 = ($img[4]); $image6 = ($img[5]); $image7 = ($img[6]); $image8 = ($img[7]); $image8 = ($img[8]); $image9 = ($img[9]); echo " **** ####Acabado el cargado del articulo<br><br>"; $follow = TRUE; if ($follow) { // Aqui empieza todo el trabajo echo "La subcategoria es<br><br>" . $subcategoria; echo "La categoria es<br><br>" . $categoria; $id_articulo_bd = comprobarExisteProducto($id_articulo); $id_marca = comprobarMarcaExistente($marca); if (!$id_articulo_bd) { echo "El producto no existe en la base de datos "; //si la marca no existe la creamos if (!$id_marca) { //Insertamos la marca en la tabla ps_manufacturer $sql = "INSERT INTO `meycalco_presta`.`ps_manufacturer` (`id_manufacturer` ,`name` ,`date_add` ,`date_upd` ,`active`)"; $sql .= " VALUES (NULL , '" . $marca . "', '" . date("Y-m-d H:i:s") . "', '" . date("Y-m-d H:i:s") . "', '1');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro insertado en ps_manufacturer con exito "; } //Debemos de comprobar el id que acabamos de crear $id_marca = comprobarMarcaExistente($marca); //Insertamos la marca en la tabla ps_manufacturer_lang $sql = "INSERT INTO `meycalco_presta`.`ps_manufacturer_lang` (`id_manufacturer` ,`id_lang`)"; $sql .= " VALUES ('" . $id_marca . "' , '3');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro insertado en ps_manufacturer_lang con exito "; } //Insertamos la marca en la tabla ps_manufacturer_shop $sql = "INSERT INTO `meycalco_presta`.`ps_manufacturer_shop` (`id_manufacturer` ,`id_shop`)"; $sql .= " VALUES ('" . $id_marca . "' , '1');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro insertado en ps_manufacturer_shop con exito "; } } //Aqui empiezan las comprobaciones de las categorias $id_categoria = comprobarCategoriaExistente($categoria); if (!$id_categoria) { echo "La categoria no existe"; $categoria = str_replace("Dreamlovevalentineday", "San Valentin", $categoria); $categoria = str_replace("/", "y", $categoria); $sql = "INSERT INTO `meycalco_presta`.`ps_category` (`id_category` ,`id_parent` ,`id_shop_default`,`level_depth`,`date_add` ,`date_upd` ,`active`,`is_root_category`)"; $sql .= " VALUES (NULL , '2','1','3','" . date("Y-m-d H:i:s") . "', '" . date("Y-m-d H:i:s") . "', '1', '0');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); //Debemos de comprobar el id que acabamos de crear $id_categoria = mysql_insert_id(); $state = true; if ($state) { echo "Registro de categoria insertado en ps_category con exito "; } //Insertamos la categoria en la tabla ps_category_group $sql = "INSERT INTO `meycalco_presta`.`ps_category_group` (`id_category` ,`id_group`)"; $sql .= " VALUES ('" . $id_categoria . "' , '1');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de categoria de grupo insertado en ps_category_group con exito "; } //Insertamos la categoria en la tabla ps_category_group $sql = "INSERT INTO `meycalco_presta`.`ps_category_group` (`id_category` ,`id_group`)"; $sql .= " VALUES ('" . $id_categoria . "' , '2');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro 2 de categoria de grupo insertado en ps_category_group con exito "; } //Insertamos la categoria en la tabla ps_category_group $sql = "INSERT INTO `meycalco_presta`.`ps_category_group` (`id_category` ,`id_group`)"; $sql .= " VALUES ('" . $id_categoria . "' , '3');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro 3 de categoria de grupo insertado en ps_category_group con exito "; } //Insertamos la categoria en la tabla ps_category_lang $url_categoria = strtolower($categoria); $url_categoria = str_replace(" ", "-", $url_categoria); $sql = "INSERT INTO `meycalco_presta`.`ps_category_lang` (`id_category` ,`id_shop`,`id_lang` ,`name`,`link_rewrite`)"; $sql .= " VALUES ('" . $id_categoria . "' , '1','3','" . $categoria . "','" . $url_categoria . "');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de categoria insertado en ps_category_lang con exito "; } //Insertamos la categoria en la tabla ps_category_shop $url_categoria = strtolower($categoria); $url_categoria = str_replace(" ", "-", $url_categoria); $sql = "INSERT INTO `meycalco_presta`.`ps_category_shop` (`id_category` ,`id_shop`)"; $sql .= " VALUES ('" . $id_categoria . "' , '1');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de categoria insertado en ps_category_shop con exito "; } } //Comprobar si existe la subcategoria y si no crearla, similar al proceso anterior $id_categoria = comprobarCategoriaExistente($categoria); $id_subcategoria = comprobarCategoriaExistente($subcategoria); if ($id_subcategoria > 0) { echo "Hay subcategoria"; $id_subcategoria = comprobarCategoriaExistente($subcategoria); } if ((!$id_subcategoria) && (!empty($subcategoria))) { echo "La subcategoria no existe"; $sql = "INSERT INTO `meycalco_presta`.`ps_category` (`id_category` ,`id_parent` ,`id_shop_default`,`level_depth`,`date_add` ,`date_upd` ,`active`,`is_root_category`)"; $sql .= " VALUES (NULL , '" . $id_categoria . "','1','3','" . date("Y-m-d H:i:s") . "', '" . date("Y-m-d H:i:s") . "', '1', '0');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); //Debemos de comprobar el id que acabamos de crear $id_categoria = mysql_insert_id(); $state = true; if ($state) { echo "Registro de subcategoria insertado en ps_category con exito "; } //Insertamos la categoria en la tabla ps_category_group $sql = "INSERT INTO `meycalco_presta`.`ps_category_group` (`id_category` ,`id_group`)"; $sql .= " VALUES ('" . $id_categoria . "' , '1');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de subcategoria de grupo insertado en ps_category_group con exito "; } //Insertamos la categoria en la tabla ps_category_group $sql = "INSERT INTO `meycalco_presta`.`ps_category_group` (`id_category` ,`id_group`)"; $sql .= " VALUES ('" . $id_categoria . "' , '2');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro 2 de subcategoria de grupo insertado en ps_category_group con exito "; } //Insertamos la categoria en la tabla ps_category_group $sql = "INSERT INTO `meycalco_presta`.`ps_category_group` (`id_category` ,`id_group`)"; $sql .= " VALUES ('" . $id_categoria . "' , '3');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro 3 de subcategoria de grupo insertado en ps_category_group con exito "; } //Insertamos la categoria en la tabla ps_category_lang $url_subcategoria = strtolower($subcategoria); $url_subcategoria = str_replace(" ", "-", $url_subcategoria); $sql = "INSERT INTO `meycalco_presta`.`ps_category_lang` (`id_category` ,`id_shop`,`id_lang` ,`name`,`link_rewrite`)"; $sql .= " VALUES ('" . $id_categoria . "' , '1','3','" . $subcategoria . "','" . $url_subcategoria . "');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de subcategoria insertado en ps_category_lang con exito "; } //Insertamos la categoria en la tabla ps_category_shop $url_categoria = strtolower($categoria); $url_categoria = str_replace(" ", "-", $url_categoria); $sql = "INSERT INTO `meycalco_presta`.`ps_category_shop` (`id_category` ,`id_shop`)"; $sql .= " VALUES ('" . $id_categoria . "' , '1');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de subcategoria insertado en ps_category_shop con exito "; $id_subcategoria = comprobarCategoriaExistente($subcategoria); } } if (empty($subcategoria)) { echo "No hay subcategoria"; $id_subcategoria = comprobarCategoriaExistente($categoria); } } //Comprobar si existe la subcategoria y si no crearla, similar al proceso anterior $id_subcategoria = comprobarCategoriaExistente($subcategoria); $id_subsubcategoria = comprobarCategoriaExistente($subsubcategoria); if ($id_subsubcategoria > 0) { echo "Hay subcategoria"; $id_subsubcategoria = comprobarCategoriaExistente($subsubcategoria); } if ((!$id_subsubcategoria) && (!empty($subsubcategoria))) { echo "La subcategoria no existe"; $sql = "INSERT INTO `meycalco_presta`.`ps_category` (`id_category` ,`id_parent` ,`id_shop_default`,`level_depth`,`date_add` ,`date_upd` ,`active`,`is_root_category`)"; $sql .= " VALUES (NULL , '" . $id_subcategoria . "','1','3','" . date("Y-m-d H:i:s") . "', '" . date("Y-m-d H:i:s") . "', '1', '0');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); //Debemos de comprobar el id que acabamos de crear $id_subcategoria = mysql_insert_id(); $state = true; if ($state) { echo "Registro de subcategoria insertado en ps_category con exito "; } //Insertamos la categoria en la tabla ps_category_group $sql = "INSERT INTO `meycalco_presta`.`ps_category_group` (`id_category` ,`id_group`)"; $sql .= " VALUES ('" . $id_subcategoria . "' , '1');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de subcategoria de grupo insertado en ps_category_group con exito "; } //Insertamos la categoria en la tabla ps_category_group $sql = "INSERT INTO `meycalco_presta`.`ps_category_group` (`id_category` ,`id_group`)"; $sql .= " VALUES ('" . $id_subcategoria . "' , '2');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro 2 de subcategoria de grupo insertado en ps_category_group con exito "; } //Insertamos la categoria en la tabla ps_category_group $sql = "INSERT INTO `meycalco_presta`.`ps_category_group` (`id_category` ,`id_group`)"; $sql .= " VALUES ('" . $id_subcategoria . "' , '3');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro 3 de subcategoria de grupo insertado en ps_category_group con exito "; } //Insertamos la categoria en la tabla ps_category_lang $url_subsubcategoria = strtolower($subsubcategoria); $url_subsubcategoria = str_replace(" ", "-", $url_subsubcategoria); $sql = "INSERT INTO `meycalco_presta`.`ps_category_lang` (`id_category` ,`id_shop`,`id_lang` ,`name`,`link_rewrite`)"; $sql .= " VALUES ('" . $id_subcategoria . "' , '1','3','" . $subsubcategoria . "','" . $url_subsubcategoria . "');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de subcategoria insertado en ps_category_lang con exito "; } //Insertamos la categoria en la tabla ps_category_shop $url_subcategoria = strtolower($subcategoria); $url_subcategoria = str_replace(" ", "-", $url_subcategoria); $sql = "INSERT INTO `meycalco_presta`.`ps_category_shop` (`id_category` ,`id_shop`)"; $sql .= " VALUES ('" . $id_subcategoria . "' , '1');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de subcategoria insertado en ps_category_shop con exito "; $id_subsubcategoria = comprobarCategoriaExistente($subsubcategoria); } } if (empty($subsubcategoria)) { echo "No hay subcategoria"; $id_subsubcategoria = comprobarCategoriaExistente($subcategoria); } } if (!$id_articulo_bd) { //definimos las variables del stock if ($stock == '1') { $visibilidad_producto = 1; $disponibilidad = "Disponble"; $total_stock = $stock_disponible; } else { $visibilidad_producto = 0; $disponibilidad = "No disponible"; $total_stock = 0; } echo " Vamos a crear el producto en la base de datos<br><br> "; echo "El producto no existe "; $sql = "INSERT INTO `meycalco_presta`.`ps_product` (`id_product` ,`id_supplier` ,`id_manufacturer`,`id_category_default`,`id_shop_default`,`id_tax_rules_group`,`on_sale`,`minimal_quantity`,`ean13`,`price`,`wholesale_price`,`reference`,`out_of_stock`,`available_for_order`,`condition`,`visibility`,`show_price`,`indexed`,`date_add` ,`date_upd` ,`active`)"; $sql .= " VALUES (NULL , '0','" . $id_marca . "','" . $id_subcategoria . "','1','1','0','1','" . $ean . "','" . $precio . "','" . $precio_tarifa . "','" . $id_articulo . "','2','" . $visibilidad_producto . "','new','both','1','1','" . date("Y-m-d H:i:s") . "', '" . date("Y-m-d H:i:s") . "', '1');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); //Debemos de comprobar el id que acabamos de crear $id_articulo_creado = mysql_insert_id(); $state = true; if ($state) { echo "Registro de producto insertado en ps_product con exito<br><br> "; } $url_producto_alias = strtolower($nombre); $url_producto_alias = str_replace(" ", "-", $url_producto_alias); $sql = "INSERT INTO `meycalco_presta`.`ps_product_lang` (`id_product` ,`id_shop`,`id_lang` ,`description`,`link_rewrite`,`name`,`available_now`)"; $sql .= " VALUES ('" . $id_articulo_creado . "' , '1','3','" . $descripcion . "','" . $url_producto_alias . "','" . $nombre . "','" . $disponibilidad . "');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de producto insertado en ps_product_lang con exito<br><br> "; } //Aquí actualizamos el stock $sql = "INSERT INTO `meycalco_presta`.`ps_stock_available` (`id_stock_available`,`id_product` ,`id_product_attribute` ,`id_shop` ,`id_shop_group` ,`quantity` ,`depends_on_stock` ,`out_of_stock`)"; $sql .= " VALUES (NULL ,'" . $id_articulo_creado . "', '0','1','0','" . $total_stock . "','0','2');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de producto insertado en ps_stock_available con exito<br><br> "; } echo "El id de la categoria es " . $id_subcategoria; $sql = "INSERT INTO `meycalco_presta`.`ps_product_shop` (`id_product`,`id_category_default`,`id_shop`,`id_tax_rules_group`,`on_sale`,`price`,`wholesale_price`,`available_for_order`,`condition`,`visibility`,`show_price`,`indexed`,`active`,`date_add` ,`date_upd` )"; $sql .= " VALUES ('" . $id_articulo_creado . "','" . $id_subcategoria . "','1','1','0','" . $precio . "','" . $precio_tarifa . "','1','new','" . $visibilidad_producto . "','1','1','1','" . date("Y-m-d H:i:s") . "', '" . date("Y-m-d H:i:s") . "');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); //Debemos de comprobar el id que acabamos de crear $state = true; if ($state) { echo "Registro de producto insertado en ps_product_shop con exito<br><br> "; } for($positionimg=0;$positionimg<10;$positionimg++){ if(!empty($image[$positionimg])){ //Primero recogemos la imagen del producto $url_image=$imagen[$positionimg]; if($positionimg==0){ $cover=1; }else{ $cover=0; } //Ahora se crean las imagenes del producto $sql = "INSERT INTO `meycalco_presta`.`ps_image` (`id_image`,`id_product` ,`position` ,`cover`)"; $sql .= " VALUES (NULL ,'".$id_articulo_creado."', '".($img+1)."','1');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; $id_foto_creado = mysql_insert_id(); if ($state) { echo "Registro de producto insertado en ps_image con exito<br><br> "; //save_img($url, $id_foto_creado);<- aquí es donde supongo que tiene que llamar a la función que guarda las imagenes } $sql = "INSERT INTO `meycalco_presta`.`ps_image_lang` (`id_image`,`id_lang`)"; $sql .= " VALUES ('".$id_foto_creado."' ,'3');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de producto insertado en ps_image_lang con exito<br><br> "; } $sql = "INSERT INTO `meycalco_presta`.`ps_image_shop` (`id_product` ,`id_image`,`id_shop`,`cover`)"; $sql .= " VALUES ('".$id_articulo_creado."', '".$id_foto_creado."' ,'1','1');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de producto insertado en ps_image_shop con exito<br><br><br> "; } } } $sql = "INSERT INTO `meycalco_presta`.`ps_category_product` (`id_category`,`id_product`)"; $sql .= " VALUES ('" . $id_subcategoria . "' ,'" . $id_articulo_creado . "');"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Registro de producto insertado en ps_category_product con exito<br><br> "; } } //si el articulo ya existia en la bd actualizamos disponibilidad, precio y stock if ($id_articulo_bd) { echo "El producto si que existe<br><br> "; //Si el producto ya existe comprobaremos el stock y el precio y modificaremos lo necesario if ($stock == '1') { $visibilidad_producto = 1; $disponibilidad = "Disponible"; $total_stock = $stock_disponible; } else { $visibilidad_producto = 0; $disponibilidad = "No Disponible"; $total_stock = $stock_disponible ; } $sql = "UPDATE `meycalco_presta`.`ps_product` SET `price` = '" . $precio . "', `wholesale_price` = '" . $precio_tarifa . "',`available_for_order` = '" . $visibilidad_producto . "',`show_price` = '1' WHERE `id_product` ='" . $id_articulo_bd . "'"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Actualizacion de producto en ps_product realizada<br><br> "; } $sql = "UPDATE `meycalco_presta`.`ps_stock_available` SET `quantity` = '" . $total_stock . "' WHERE `id_product` ='" . $id_articulo_bd . "'"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Actualizacion de producto en ps_stock_available realizada<br><br> "; } $sql = "UPDATE `meycalco_presta`.`ps_product_shop` SET `price` = '" . $precio . "',`wholesale_price` = '" . $precio_tarifa . "',`visibility` = '" . $visibilidad_producto . "',`show_price` = '1' WHERE `id_product` ='" . $id_articulo_bd . "'"; $res = mysql_query($sql, $dbhandle) or die(mysql_error()); $state = true; if ($state) { echo "Actualizacion de producto en ps_product_shop realizada<br><br> "; } } } //función para arreglar el arbol de categorias de prestashop /** * Re-calculate the values of all branches of the nested tree */ function regenerateEntireNtree() { $sql = ' SELECT c.`id_category`, c.`id_parent` FROM `ps_category` c LEFT JOIN `ps_category_shop` cs ON (c.`id_category` = cs.`id_category` AND cs.`id_shop` = 1) ORDER BY c.`id_parent`, cs.`position` ASC'; $result = mysql_query($sql) or die("No se ha ejecturado la sentencia comprobarCategoriaExistente"); $categories = mysql_num_rows($result); $categories_array = array(); while ($category = mysql_fetch_array($result)) { //foreach ($categories as $category){ $categories_array[$category['id_parent']]['subcategories'][] = $category['id_category']; echo "loading $categories_array <br> "; } echo "var_dump <br> "; var_dump($categories_array); $n = 1; if (isset($categories_array[0]) && $categories_array[0]['subcategories']) { _subTree($categories_array, $categories_array[0]['subcategories'][0], $n); } return (TRUE); } //funcion recursiva de regenerateEntireNtree() function _subTree(&$categories, $id_category, &$n) { echo $n . " "; $left = $n++; if (isset($categories[(int) $id_category]['subcategories'])) { echo "we are here <br> "; foreach ($categories[(int) $id_category]['subcategories'] as $id_subcategory) { _subTree($categories, (int) $id_subcategory, $n); } echo "end foreach<br> "; } $right = (int) $n++; echo "UPDATE cat " . $id_category . " left " . $left . " right " . $right . "<br>"; $sql = 'UPDATE `meycalco_presta`.`ps_category`SET `nleft` = ' . (int) $left . ' , `nright` = ' . (int) $right . 'WHERE `id_category` = ' . (int) $id_category . ''; echo $sql . "<br>"; $res = mysql_query($sql) or die(mysql_error() . "die you biatch"); return (TRUE); }//arreglamos inconsistencias en la tabla categorias de prestashopecho "regenerate tree<br>";regenerateEntireNtree(); En primer lugar tengo unís includes que he ido probando pero como no llego a ese nivel pues no he conseguido nada. Lo.mismo sol.los archivos correctos pero......jajajaja He hecho una modificación al original ya que no funcionaba y he conseguido importar por lo menos los artículos sin fotos aunque las tablas referentes a las imágenes si que están escritas con sus id solo escribe una ya que como les he dicho no se nada o casi nada de PHP y MySQL no se como he conseguido hacer esto. Si alguien lo quiere probar solo cambiarle el nombre a los fatos de la conexión y en las consultas a la base de datos cambiar los prefijos si son diferentes a los de prestashop. Si alguien pudiera echarme una mano o por lo menos decirme cual es la función simeimage.PHP que no la encuentro en ningún directorio de prestashop y por otro lado donde esta la función que guarda las imágenes en su correspondiente carpeta. Supongo que donde llama a save_img en mi scrip es cuando tiene que guardarla pero.... Muchas gracias a todos por su atención y Disculpadme si no he escrito con mucha claridad. A ver si entre todos podemos hacer funcionar este script ya que hay gente como yo que no tenemos 180 euros para un modulo aunque no digo que en un futuro haiga que comprarlo. Muchas gracias Saludos Edited February 25, 2018 by Manuelamaya25 (see edit history) Link to comment Share on other sites More sharing options...
musicmaster Posted February 25, 2018 Share Posted February 25, 2018 I am puzzled by your post: - this is an English language forum. Why are you posting here in Spanish? Prestashop has Spanish language forums too. - nobody is going to read your thousand lines script. Be to the point in your questions. - I have no experience with xml but with csv it is perfectly possible to import pictures too. So I don't see a need for customization of the code. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now