Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/07/2015, 12:44
yesod91
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 9 meses
Puntos: 2
Eliminar un objeto de carritocompra

Buenas amigos, estoy realizando una pagina web y bueno...estoy intentando eliminar objetos o productos del carrito de compra, actualmente ya se añaden.

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>
El programa que hace piense es el siguiente:
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); 
Y luego el documento que hace se elimine es el siguiente:
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';
    }
?>
Lo cual, no se porque pero no me hace ni caso...y no se me ocurre que hacer...¿Alguna idea?