Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Opencart 4.x +8.0PHP
#1
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!
Responder
#2
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.
Oscar Guirado
Sysme Software

Sysme Software
Veravap
Responder
#3
(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
Responder
#4
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)); 
Oscar Guirado
Sysme Software

Sysme Software
Veravap
Responder
#5
(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.m...coding.php
Responder
#6
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'));
Responder


Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)

Contáctanos | Sysme Software | Volver arriba | | Archivo (Modo simple) | Sindicación RSS