Jump to content

Importar de XML a prestashop con PHP a mysql


Manuelamaya25

Recommended Posts

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>
";
                                   //copyImg($url, $id_foto_creado);
                                }
                                $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 prestashop
echo "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

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...