El código que tengo es el siguiente, me lo arregló un compañero de aqui:
Código PHP:
<?php
session_start();
/* INCLUIMOS LA CLASE DEL CARRITO Y LA CONEXIÓN A LA BD */
require_once("./carrito.class.php");
require_once('./conexion.php');
/* COGEMOS LOS DATOS POR GET
(sería mejor por POST. Al ser el ID único, solo hace falta este y la cantidad) */
$id = $_GET['id'];
$cantidad = $_GET['cantidad'];
/* SI NO HAY SESION DE CARRITO CREAMOS UN OBEJTO NUEVO SI LO HAY, UNSERIALIZASMOS EN LA VARIABLE EN OBJETO CARRITO */
if(! isset($_SESSION['carrito'])){
$obj_kart = new obj_carrito();
}else{
$obj_kart = unserialize($_SESSION['carrito']);
}
/* PREGUTAMOS SI EL ARTÍCULO ESTÁ EN EL CARRITO */
if($obj_kart->find_prod($id)){
/* SI ESTÁ, SE AÑADE LA CANTIDAD SIN NECESIDAD DE HACER LA CONSULTA */
$obj_kart->add_changue_prod($id,"","",$cantidad,"");
}else{
/* PREGUNTAMOS LOS DATOS DEL PRODUCTO A LA BASE DE DATOS
La query es ahora a una sola tabla.
(hay que cambiar esto a mysqli_* o a PDO porque las mysql_* dejarán de existir pronto) */
$query =mysql_query("SELECT id, nombre, precio, imagen FROM Productos WHERE id='".$id."'")or die(mysql_error());
$fetch = mysql_fetch_array($query);
/* AÑADIMOS EL PRODUCTO NUEVO PUESTO QUE SABEMOS QUE NO ESTÁ EN EL CARRITO */
$obj_kart->add_changue_prod($id, $fetch['nombre'],$fetch['precio'],$cantidad,$fetch['imagen']);
}
/* GUARDAMOS EN LA VARIABLE DE SESSIÓN EL OBJETO DEL CARRITO SERIALIZADO
(en realidad no hace falta serializarlo: $_SESSION es un vector y un elemento de un vector puede ser un Objeto:
$_SESSION['carrito'] = $obj_kart;
Si no lo guardás serializado, no hace falta desserializarlo al leer la sesión */
$_SESSION['carrito'] = serialize($obj_kart);
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Carrito de Compras</title>
<link rel="stylesheet" type="text/css" href="css/estilos.css" media="screen" />
<script type="text/javascript" type="text/jscript" src="js/scripts.js"></script>
</head>
<body>
<header>
<img src="./imagenes/logo.png" id="logo" />
<a href="./carritodecompras.php" title="ver carrito de compras"><img src="./imagenes/carrito.png" /></a>
</header>
<section>
<div id="separador">
</div>
<?php
/* COMPRUEBO QUE EL TOTAL SEA MAYOR A CERO, ESO SIGNIFICA QUE HAY PRODUCTOS EN LA CESTA */
if($obj_kart->total_kart() > 0){
/* IMPRIMIMOS CADA PRODCUTO */
foreach($obj_kart->productos as $producto){
echo '
<div class="productofinal">
<img src="'.$producto->imagen.'"><br>
<span>'.$producto->nombre.'</span><br>
<span>Precio: '.$producto->precio.'</span><br>
<span>Cantidad:
<input type="text" value="'.$producto->cantidad.'" size="5px";
data-precio="'.$producto->precio.'"
data-id="'.$producto->id.'" class="cantidad" /></span><br>
<span class="subtotal">Subtotal:'.$producto->precio * $producto->cantidad.'</span><br>
<a href="#" class="eliminar" data-id="'.$producto->id.'">Eliminar</a>
</div>
';
}
/* IMPRIMIMOS EL TOTAL Y EL FORMULARIO DE PAYPAL */
echo '
<center><h2 id="total">Total: '.$obj_kart->total_kart().'</h2></center>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="formulario">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="[email protected]">
<input type="hidden" name="currency_code" value="MXN">
';
/* IMPRIMIMOS LOS PRODUCTOS EN EL FORMULARIO DE PAYPAL */
foreach($obj_kart->productos as $K => $producto){
echo '
<input type="text" name="item_name_'.$K.'" value="'.$producto->nombre.'">
<input type="text" name="amount_'.$K.'>" value="'.$producto->precio.'">
<input type="text" name="quantity_'.$K.'>" value="'.$producto->cantidad.'">
';
}
/* IMPRIMIMOS EL BOTÓN DE SUBMIT DEL FORMULARIO */
echo '
<center><input type="submit" value="comprar" class="aceptar" style="width:200px"></center>
</form>
';
}else{
/* SI NO HAY PRODUCTO IMPRIMIMOS QUE NO HAY PRODUCTOS Y EL TOTAL DEL CARRO QUE NOS DARÁ CERO */
echo '
<center><h2>No has añadido ningun producto</h2></center>
<center><h2 id="total">Total: '.$obj_kart->total_kart().'</h2></center>
';
}
?>
<center><a href="./">Ver catalogo</a></center>
</section>
</body>
</html>
Código PHP:
var inicio=function () {
$(".eliminar").click(function(e){
e.preventDefault();
var id=$(this).attr('data-id');
$(this).parentsUntil('.productofinal').remove();
$.post('js/eliminar.php',{
Id:id
},function(a){
if(a=='0'){
location.href="./carritodecompras.php";
}
});
});
}
$(document).on('ready',inicio);
Código PHP:
<?php
session_start();
$arreglo=$_SESSION['carrito'];
for($i=0;$i<count($arreglo);$i++){
if($arreglo[$i]['Id']!=$_POST['id']){
$datosNuevos[]=array(
'Id'=>$arreglo[$i]['Id'],
'Nombre'=>$arreglo[$i]['Nombre'],
'Precio'=>$arreglo[$i]['Precio'],
'Imagen'=>$arreglo[$i]['Imagen'],
'Cantidad'=>$arreglo[$i]['Cantidad']
);
}
}
if(isset($datosNuevos)){
$_SESSION['carrito']=$datosNuevos;
}else{
unset($_SESSION['carrito']);
echo '0';
}
?>