Dear Friends,

I need your help.

I have an ajax+php cart that is working fine on one server and not on another to were I want to migrate the account.

We have the same php version, and the same php.ini file.

When we click the button add to cart, we get the error:

PHP Fatal error: Cannot use object of type carrito as array in /home/user/public_html/lib/class/carrito.class.php on line 186

Here you have the code:
<?php
class carrito extends b {
public $db = null;
private $limite_prods = 10; // máximo número de unidades que se pueden añadir al carrito
public $exito = '';
public $gotourl = '';
public $alert = false;
public function __contruct()
{
$this->db = new db(_db_on);
}
public function add($id,$cantidad,$params='')
{
$result = false;
$this->errors = '';

// comprobar que no se exceda la cantidad maxima
if ($cantidad > $this->limite_prods or $cantidad < 1){
$this->errors = 'No puedes añadir más de '.$this->limite_prods.'uds del mismo artículo.
Por favor, ponte en contacto con nosotros. <a href="/contacto">Ir a Contacto</a>';
return false;
}
$p = $params;
$params = explode('|',$params);
if (count($params)!=2) {
//$this->errors = 'No ha indicado una talla y color válidos. '.$p;
$this->errors = 'No ha indicado una talla válida. '.$p;
return false;
}
if (!is_numeric($params[0])/* or !is_numeric($params[1])*/){
//$this->errors = 'La talla o el color seleccionado no parecen válidos. Por favor, revise el articulo y añadalo nuevamente.';
$this->errors = 'La talla seleccionada no parece válida. Por favor, revise el artículo y añádalo nuevamente.';
return false;
}

if (!is_numeric($id) and is_numeric(!$cantidad)) {
$this->errors = 'El articulo o la cantidad que desea añadir a la cesta no son válidos. '.$id.' '.$cantidad;
return false;
}
// comprobar si el articulo existe en la cesta
$update = false;
$index = null;
foreach($_SESSION['carrito'] as $k => $v)
{
if (is_numeric($k))
{
if (($_SESSION['carrito'][$k]['id'] == $id)
and ($_SESSION['carrito'][$k]['talla']['id'] == $params[0])
/*and ($_SESSION['carrito'][$k]['color']['id'] == $params[1])*/)
{
$update = true;
$index = $k;
}
}
}

if ($update == true) // existe ya en la cesta?
{
// el articulo ya está en la cesta
$this->update($index,$cantidad,'plus');
}else
{

// colores
//$colores_sql = mysql_query("SELECT * FROM colores WHERE color_id='{$params[1]}'");
$colores_sql = mysql_query("SELECT * FROM colores WHERE articulo_id='$id'");
if (mysql_num_rows($colores_sql))
{
$colores_sql_ok = mysql_fetch_assoc($colores_sql);
if ($colores_sql_ok['color_estado'] == 0)
{
$this->errors = 'Ups, lo sentimos, este color no está disponible en este momento.';
return false;
}else
{

// comprobar talla
//$sql_t = mysql_query("SELECT * FROM tallas WHERE talla_id='$params[0]' and color_id='{$params[1]}'");
$color_id = $colores_sql_ok['color_id'];
$sql_t = mysql_query("SELECT * FROM tallas WHERE talla_id='$params[0]' and color_id='$color_id'");
if (mysql_num_rows($sql_t))
{
$sql_t_ok = mysql_fetch_assoc($sql_t);
$talla['id'] = $sql_t_ok['talla_id'];
$talla['titulo'] = $sql_t_ok['talla_titulo'];
if ($sql_t_ok['talla_stock'] < 1)
{
$this->errors = 'Ups, lo sentimos, la talla que has seleccionado no se encuentra en stock.';
return false;
}else
{
if ($sql_t_ok['talla_stock'] < $cantidad)
{
$_SESSION['compra']['exito'] = false;
$this->exito = 'La cantidad deseada del articulo se ha ajustado a la cantidad disponible.';
$this->alert = true;
$cantidad = $sql_t_ok['talla_stock'];
}
}

}else
{
$this->errors = 'Ups, lo sentimos, no hemos podido encontrar la talla que ha seleccionado.';
return false;
}


$color['id'] = $colores_sql_ok['color_id'];
$color['titulo'] = $colores_sql_ok['color_nombre'];

}
}else
{
$this->errors = 'El color que ha seleccionado no se encuentra disponible.';
return false;
}

// obtener los datos del articulo
$sql = mysql_query("
SELECT
articulos.articuloid,
articulos.articulo_titulo,
articulos.articulo_descuento,
articulos.articulo_precio,
articulos.articulo_precio_oferta,
articulos.articulo_imagen,
articulos.articulo_url,
articulos.articulo_estado,
categorias.categoria_url
FROM
articulos, categorias
WHERE
articulos.articuloid='$id' and
articulos.categoriaid=categorias.categoriaid"
,$this->con);
if (mysql_num_rows($sql))
{
$art = mysql_fetch_assoc($sql);
if ($art['articulo_estado'] == 1)
{

// obtener ultimo indice del array carrito
$i = 0;
if (count($_SESSION['carrito']))
{
foreach($_SESSION['carrito'] as $k => $v)
{
if (is_numeric($k))
{
$i = $k + 1;
}
}

if ($i == 0) $i = 1;

}else
{
$i = count($_SESSION['carrito']);
}

// imagen para mostrar en el carrito
if ($colores_sql_ok['color_imagen'])
{
$imagen = 'colores/'.$colores_sql_ok['color_imagen'];
}else
{
$imagen = $art['articulo_imagen'];
}

if ($art['articulo_precio_oferta'] > 0 and $art['articulo_precio_oferta'] != $art['articulo_precio'])
{
$precio = $art['articulo_precio_oferta'];
}else
{
$precio = $art['articulo_precio'];
}