Jump to content

Sync CVS to Prestashop Database (Massive) - Sincronizar BD - CVS


seventrust

Recommended Posts

Hola, saludos a todos los usuarios de Prestashop, hoy les vengo a mostrar una pieza de código que tal vez les funcione para cuando quieran hacer un UPDATE un INSERT a su base de datos de Prestashop, con el propósito de actualizar cantidades o actualizar precios en la tienda sin necesidad de ir uno a uno....

 

 

El código está escrito en PHP sencillo y fácil de entender, sin necesidad de explicación, habla por sí solo:

<?php

/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */


//conectar a las bases de datos
$connect = mysqli_connect("host","tu_usuario","tu_pass","tu_baseDatos");

//Obtener el valor del dolar para la conversion (ES UN PROCESO ESPECIFICO PARA CHILE)
$xmlSource = "http://indicadoresdeldia.cl/webservice/indicadores.xml";
$xml = simplexml_load_file($xmlSource);
$dSub = substr($xml->moneda->dolar,1);
$d_val = floatval($dSub);

//Descargar el archivo para sincronizar
//El archivo puede estar alojado en un servidor o en tu máquina, solo tienes que indicar la dirección
$file = 'TU_ARCHIVO_CVS.csv';

//RECORRER CADA LINEA DEL CVS PARA OBTENER LA DATA
if (($handle = fopen($file, "r")) !== FALSE) {
   fgetcsv($handle);   
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        for ($c=0; $c < $num; $c++) {
          $col[$c] = $data[$c];
        }

            $col1 = $col[0];
            $col2 = $col[1];
            $col3 = $col[2];
            $col4 = $col[3];
            $col5 = $col[4];
            $col6 = $col[5];
            $col7 = $col[6];
            $col8 = $col[7];
            $col9 = $col[8];
            $col10 = $col[9];

            //VALIDACIONES ESPECIFICAS PARA CHILE (CONVERSION DE MONEDA)
            if($col9 == "US$"){					
                $precio_final = ceil($col8 * floatval(1.24));					
            }
            else
                {
                $dolar_final = round($d_val + floatval(5.0));
                $precio_final = ceil($col8 / $dolar_final);
                
                }
            
            // SQL Query Para hacer el update de los datos... 
            $query = "UPDATE ps_product SET price = '".$precio_final."' WHERE reference = '".$col2."'";
            $query2 = "UPDATE ps_stock_available a JOIN ps_product b ON a.id_product = b.id_product SET a.quantity = '".$col10."' WHERE b.reference = '".$col2."'";
            $s = mysqli_query($connect, $query);
            $s2 = mysqli_query($connect, $query2);
 }
    fclose($handle);
}

echo "Archivo sincronizado!!!";
mysqli_close($connect);

Que se puede mejorar? Si... quieres hacerlo, feel free my friend, modifíquelo a su manera, para su negocio especifico, lo único que sería bueno: COMPARTA LAS MEJORAS y seamos parte del conocimiento libre.

 

Saludos, espero sirva de algo para tod@s.

 

 

Link to comment
Share on other sites

  • 3 weeks later...

7trust nice !

 

<?php
 
//blah blah
 
// Connect to the database
$connect = mysqli_connect("dbserver","user","passwd","dbname");
  mysqli_set_charset($connect,"utf8");
 
if (!$connect) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}
echo "Eπιτυχία: Η σύνδεση με τη Β.Δ. έγινε!" . PHP_EOL;
 
// Download the file to synchronize
// The file can be hosted on a server or on your machine, you just have to indicate the direction
$file =  'mpla3.csv' ;
if (($handle = fopen($file, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 8000, ";")) !== FALSE) {
        $num = count($data);
        echo "<p> $num πεδία στη γραμμή  $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
          
        $col[$c] = $data[$c]; 
  echo $col[$c] . "<br />\n";       }
 
            $f1 = $col[0]; //id
            $f2 = $col[1]; //ref
            $f3 = $col[4]; //posotita
            $f4 = $col[5]; // antiktipos timis
 echo $f3 . "<br />";
 
  $query1 = "UPDATE ps_product_attribute SET price='".$f4."' where reference='".$f2."'";
   $query2 = "UPDATE ps_stock_available a JOIN ps_product_attribute b ON a.id_product_attribute = b.id_product_attribute SET a.quantity ='".$f3."' WHERE b.reference= '".$f2."'";
 
$s=mysqli_query($connect, $query1) or die(mysql_error());
$s2=mysqli_query($connect, $query2) or die(mysql_error());
    } 
 fclose($handle);
}
ECHO "Μεγάλε, έτοιμος!" ;
mysqli_close($connect);
?>
this is for update with combinations in case someone is getting error 500 server side.
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...