Ver Mensaje Individual
  #9 (permalink)  
Antiguo 02/06/2011, 21:43
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Fatal error: Cannot unset string offsets in...

A ver, tratando de simplificar un poco:

Código PHP:
Ver original
  1. if($_GET['opcion']=="anadir_prod2")
  2. {
  3.     $codigo=$_GET['prod_id'];
  4.     $cant=$_GET['cant'];    
  5.     // Nombre y precio deberias obtenerlos de la base de datos, para evitar manipulacion
  6.     $nombre=$_GET['producto'];
  7.     $precio2=$_GET['precio'];
  8.     $precio=round($precio2,2);
  9.     $subtotal=round(($cant*$precio),2);
  10.  
  11.     // Suponemos que ya desde antes inicializaste $_SESSION['usuario']['carrito'] como array
  12.     if(count($_SESSION['usuario']['carrito']) > 10) {
  13.         // Ya no puedes agregar mas productos
  14.         mostrar_tabla2('warning',$codigo);
  15.         exit;
  16.     }
  17.     // No importa si es el primero o el 5 o el 11, se puede recorrer sin problema
  18.     foreach($_SESSION['usuario']['carrito'] as $item) {
  19.         if($item['codigo'] == $codigo) {
  20.             echo"<img src='images/warning.png' width='28'>  El Producto $nombre ya se encuentra en lista, modifiquelo ";    
  21.             mostrar_tabla2("",$codigo);
  22.             exit;
  23.         }
  24.     }
  25.     // Agregas en una sola instruccion, no importa si es la primera o no
  26.     $_SESSION['usuario']['carrito'][]=array('codigo'=>$codigo,'nombre'=>$nombre,'cantidad'=>$cant,'precio'=>$precio,'subtotal'=>$subtotal);
  27.     mostrar_tabla2("",$codigo);
  28. }

La principal diferencia en esto es que primero verificas todas las posibilidades de error y hasta despues usas un mismo codigo para agregar el primer producto o el ultimo.

Este codigo simplificado no garantiza que se vaya a solucionar el problema. Sugiero que elimines la sesion completamente y despues vuelves a intentar agregar productos y, si persisten las molestias, cuentanos detalladamente el error, numero de linea, codigo de esa linea y contenido de la variable (usando var_dump).
__________________
- León, Guanajuato
- GV-Foto