A ver, tratando de simplificar un poco:
Código PHP:
Ver originalif($_GET['opcion']=="anadir_prod2")
{
$codigo=$_GET['prod_id'];
$cant=$_GET['cant'];
// Nombre y precio deberias obtenerlos de la base de datos, para evitar manipulacion
$nombre=$_GET['producto'];
$precio2=$_GET['precio'];
$precio=round($precio2,2); $subtotal=round(($cant*$precio),2);
// Suponemos que ya desde antes inicializaste $_SESSION['usuario']['carrito'] como array
if(count($_SESSION['usuario']['carrito']) > 10) { // Ya no puedes agregar mas productos
mostrar_tabla2('warning',$codigo);
}
// No importa si es el primero o el 5 o el 11, se puede recorrer sin problema
foreach($_SESSION['usuario']['carrito'] as $item) {
if($item['codigo'] == $codigo) {
echo"<img src='images/warning.png' width='28'> El Producto $nombre ya se encuentra en lista, modifiquelo ";
mostrar_tabla2("",$codigo);
}
}
// Agregas en una sola instruccion, no importa si es la primera o no
$_SESSION['usuario']['carrito'][]=array('codigo'=>$codigo,'nombre'=>$nombre,'cantidad'=>$cant,'precio'=>$precio,'subtotal'=>$subtotal); mostrar_tabla2("",$codigo);
}
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).