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.