Foros del Web » Programando para Internet » PHP »

Eliminar un objeto de carritocompra

Estas en el tema de Eliminar un objeto de carritocompra en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 26/07/2015, 12:44
 
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?
  #2 (permalink)  
Antiguo 26/07/2015, 17:20
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Eliminar un objeto de carritocompra

deberias verificar que $_POST['Id'] llega a eliminar

vos en tu script lo estas poniendo con mayuscula Id pero lo recibes en minuscula id

error de novato cuack!
  #3 (permalink)  
Antiguo 26/07/2015, 17:58
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: Eliminar un objeto de carritocompra

Ese no es el problema porque he cambiado el Id por id y sigue sin funcionarme...

Es que soy un novato, estoy aprendiendo con este proyecto...

Etiquetas: formulario, html, mysql, objeto, select, sql, tabla, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:11.