Foro de ayuda y soporte técnico de Sysme Software
Opencart 4.x +8.0PHP - Versión para impresión

+- Foro de ayuda y soporte técnico de Sysme Software (https://www.sysme.net/foro)
+-- Foro: Software Sysme (Español) (https://www.sysme.net/foro/forumdisplay.php?fid=3)
+--- Foro: Sysme Tpv (https://www.sysme.net/foro/forumdisplay.php?fid=4)
+--- Tema: Opencart 4.x +8.0PHP (/showthread.php?tid=11960)



Opencart 4.x +8.0PHP - LoveRoll - 03-04-2025

Buenos días,
Queremos actualizar a opencart 4.1 y se necesita una version PHP súperior a 8.0
¿Puedes ayudarnos Oscar? al conectar nos saltan error http:500 y en el error log:
#0 {main}
thrown in /home/loveandr/lovecompanyshop.com/sysmetpvopencart/updateproduct.php on line 33
[03-Apr-2025 11:41:59 Europe/Madrid] PHP Deprecated: Function utf8_encode() is deprecated in /home/loveandr/lovecompanyshop.com/sysmetpvopencart/funciones.php on line 26
[03-Apr-2025 11:41:59 Europe/Madrid] PHP Fatal error: Uncaught mysqli_sql_exception: Unknown column 'viewed' in 'INSERT INTO' in /home/loveandr/lovecompanyshop.com/sysmetpvopencart/updateproduct.php:91
Stack trace:
#0 /home/loveandr/lovecompanyshop.com/sysmetpvopencart/updateproduct.php(91): mysqli_query()
#1 {main}
thrown in /home/loveandr/lovecompanyshop.com/sysmetpvopencart/updateproduct.php on line 91


Gracias!


RE: Opencart 4.x +8.0PHP - sysme - 03-04-2025

Buenas LoveRoll,

Pues si solo son esos dos errores (espero que no hayan mas), las soluciones serían:

En el fichero funciones.php eliminar la línea 26, esta función (que parece que ya está eliminada de php 8) se encarga de pasar un texto a UTF8, en un principio no es obligatoria.

En el caso del segundo error en el fichero updateproduct.php, aquí parece que el campo VIEWED de la tabla de productos de Opencart ya no existe en Opencart 4.1, por tanto habría que eliminarlo de la sentencia de creación, en la linea 60 y en la linea 89

Ya me dices.


RE: Opencart 4.x +8.0PHP - LoveRoll - 03-04-2025

(03-04-2025, 11:17 AM)sysme escribió: Buenas LoveRoll,

Pues si solo son esos dos errores (espero que no hayan mas), las soluciones serían:

En el fichero funciones.php eliminar la línea 26, esta función (que parece que ya está eliminada de php 8) se encarga de pasar un texto a UTF8, en un principio no es obligatoria.

En el caso del segundo error en el fichero updateproduct.php, aquí parece que el campo VIEWED de la tabla de productos de Opencart ya no existe en Opencart 4.1, por tanto habría que eliminarlo de la sentencia de creación, en la linea 60 y en la linea 89

Ya me dices.

No me coinciden la lineas, me podrias decir que sentencias aparecen? gracias


RE: Opencart 4.x +8.0PHP - sysme - 03-04-2025

En updateproduct.php

Código PHP:
    // no existe, crea
    $sql 'insert into ' DB_PREFIX 'product (model,upc,sku,location,EAN,jan,isbn,mpn,quantity,stock_status_id,image,shipping,price,points,tax_class_id,';
    $sql $sql 'date_available,weight,weight_class_id,length,length_class_id,subtract,minimum,sort_order,status,date_added,date_modified,manufacturer_id,viewed)';
    $sql $sql ' values (';
    $sql $sql '\'' $_POST['id_complementog'] . '\',';
    $sql $sql '\'\',';
    $sql $sql '\'\',';
    $sql $sql '\'\',';
    
$sql $sql '\'' $_POST['codbarras'] . '\',';
    $sql $sql '\'\',';
    $sql $sql '\'\',';
    $sql $sql '\'\',';
    $sql $sql '' $_POST['stock'] . ',';
    $sql $sql '5,';
    $sql $sql '\'' $folder $_POST['id_complementog'] . '.jpg\',';
    $sql $sql '1,';
    $sql $sql '' $_POST['precio'] . ',';
    $sql $sql '0,';
    $sql $sql '9,';
    $sql $sql 'curdate(),';
    $sql $sql '' $_POST['peso'] . ',';
    $sql $sql '1,';
    $sql $sql '0,';
    $sql $sql '0,';
    $sql $sql '1,';
    $sql $sql '1,';
    $sql $sql $_POST['sort_order'] . ',';
    $sql $sql '1,';
    $sql $sql 'curdate(),';
    $sql $sql 'curdate(),';
    $sql $sql '0,';
    $sql $sql '0';
    $sql $sql ')';
    $result2 mysqli_query($conexion$sql); 

Habria que substituirlo por:

Código PHP:
    // no existe, crea
    $sql 'insert into ' DB_PREFIX 'product (model,upc,sku,location,EAN,jan,isbn,mpn,quantity,stock_status_id,image,shipping,price,points,tax_class_id,';
    $sql $sql 'date_available,weight,weight_class_id,length,length_class_id,subtract,minimum,sort_order,status,date_added,date_modified,manufacturer_id)';
    $sql $sql ' values (';
    $sql $sql '\'' $_POST['id_complementog'] . '\',';
    $sql $sql '\'\',';
    $sql $sql '\'\',';
    $sql $sql '\'\',';
    
$sql $sql '\'' $_POST['codbarras'] . '\',';
    $sql $sql '\'\',';
    $sql $sql '\'\',';
    $sql $sql '\'\',';
    $sql $sql '' $_POST['stock'] . ',';
    $sql $sql '5,';
    $sql $sql '\'' $folder $_POST['id_complementog'] . '.jpg\',';
    $sql $sql '1,';
    $sql $sql '' $_POST['precio'] . ',';
    $sql $sql '0,';
    $sql $sql '9,';
    $sql $sql 'curdate(),';
    $sql $sql '' $_POST['peso'] . ',';
    $sql $sql '1,';
    $sql $sql '0,';
    $sql $sql '0,';
    $sql $sql '1,';
    $sql $sql '1,';
    $sql $sql $_POST['sort_order'] . ',';
    $sql $sql '1,';
    $sql $sql 'curdate(),';
    $sql $sql 'curdate(),';
    $sql $sql '0';
    $sql $sql ')';
    $result2 mysqli_query($conexion$sql); 

Y en funciones.php habría que eliminar esta línea:

Código PHP:
$cadena sanear_string(utf8_encode($cadena)); 



RE: Opencart 4.x +8.0PHP - achica - 03-04-2025

(03-04-2025, 12:52 PM)sysme escribió: Y en funciones.php habría que eliminar esta línea:

Código PHP:
$cadena sanear_string(utf8_encode($cadena)); 

Usa mb_convert_encoding:
https://www.php.net/manual/es/function.mb-convert-encoding.php


RE: Opencart 4.x +8.0PHP - LoveRoll - 03-04-2025

Bueno, pues sincroniza...
sube las imagenes a la ruta catalog/ no crea el producto, ni categoría, ni marca, ni opciones.
Lo raro es que no arroja ningún error ni tampoco da el ``OK´´
Funciona igualmente:
eliminando:
$cadena = sanear_string(utf8_encode($cadena));
como utilizando:
$cadena = sanear_string(mb_convert_encoding($cadena, 'UTF-8', 'ISO-8859-1'));