Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/05/2011, 16:47
rodricrzz
 
Fecha de Ingreso: noviembre-2009
Mensajes: 41
Antigüedad: 14 años, 5 meses
Puntos: 0
Problema acumulación carrito

Hola, tengo un carrito de compras con estos codigos.

lib_carrito.php
Código PHP:
<?php
class carrito {
    
//atributos de la clase
       
var $num_productos;
       var 
$array_id_prod;
       var 
$array_nombre_prod;
       var 
$array_precio_prod;

    
//constructor. Realiza las tareas de inicializar los objetos cuando se instancian
    //inicializa el numero de productos a 0
    
function carrito () {
           
$this->num_productos=0;
    }
    
    
//Introduce un producto en el carrito. Recibe los datos del producto
    //Se encarga de introducir los datos en los arrays del objeto carrito
    //luego aumenta en 1 el numero de productos
    
function introduce_producto($id_prod,$nombre_prod,$precio_prod){
        
$this->array_id_prod[$this->num_productos]=$id_prod;
        
$this->array_nombre_prod[$this->num_productos]=$nombre_prod;
        
$this->array_precio_prod[$this->num_productos]=$precio_prod;
        
$this->num_productos++;
    }

    
//Muestra el contenido del carrito de la compra
    //ademas pone los enlaces para eliminar un producto del carrito
    
function imprime_carrito(){
        
$suma 0;
        echo 
'<table id="table1" border="0" bordercolorlight="#800000" bordercolordark="#800000" style="text-align:center;text-decoration: none;border-color: #800000; color:#000000; border-collapse: collapse;" cellspacing="0" width="90%" height="0" cellpadding="3">
              <tr>
                <td><font face="Arial" size="1"><b>Nombre producto</b></font></td>
                <td><font face="Arial" size="1"><b>Precio ($)</b></font></td>
                <td><font face="Arial" size="1"></font></td>
              </tr>'
;
        for (
$i=0;$i<$this->num_productos;$i++){
            if(
$this->array_id_prod[$i]!=0){
                echo 
'<tr>';
                echo 
"<td><font face='Arial' size='1' style='color:red'>" $this->array_nombre_prod[$i] . "</font></td>";
                echo 
"<td><font face='Arial' size='1' style='color:red'>" $this->array_precio_prod[$i] . "</font></td>";
                echo 
"<td><a style='text-decoration:none' href='eliminar_producto.php?linea=$i' class='mascarro'><img border='0' src='delete.png'></td>";
                echo 
'</tr>';
                
$suma += $this->array_precio_prod[$i];
            }
        }
        
//muestro el total
        
echo "<tr><td><b>TOTAL:</b></td><td> <b>$</b><b>$suma</b></td><td>&nbsp;</td></tr>";
        echo 
"</table>";
    }
    
    function 
muestra_carrito(){
$suma 0;
$var '<table border="0" id="table1" style="font-family: arial;text-align:center;text-decoration: none;border-collapse: collapse; color:#000000; border-left-width:0px; border-right-width:0px; border-style: dashed;" cellspacing="0" width="90%" height="0" cellpadding="3">
  <tr>
<td><b>Nombre producto</b></td>
<td><b>Precio ($)</b></td>
  </tr>'
;
for (
$i=0;$i<$this->num_productos;$i++){
if(
$this->array_id_prod[$i]!=0){
$var.= '<tr>';
$var.= "<td>" $this->array_nombre_prod[$i] . "</td>";
$var.= "<td>" $this->array_precio_prod[$i] . "</td>";
$var.= '</tr>';
$suma += $this->array_precio_prod[$i];
}
}
//muestro el total
$var.= "<tr><td><b>TOTAL:</b></td><td> <b>$</b><b>$suma</b></td><td>&nbsp;</td></tr>";
$var.= "</table>";
return 
$var;
}

    
    
//elimina un producto del carrito. recibe la linea del carrito que debe eliminar
    //no lo elimina realmente, simplemente pone a cero el id, para saber que esta en estado retirado
    
function elimina_producto($linea){
        
$this->array_id_prod[$linea]=0;
    }

//inicio la sesión
session_start();
//si no esta creado el objeto carrito en la sesion, lo creo
if (!isset($_SESSION["ocarrito"])){
    
$_SESSION["ocarrito"] = new carrito();
}
?>

mete_producto.php
Código PHP:
<?php
include("lib_carrito.php");
$_SESSION["ocarrito"]->introduce_producto($_GET["id"], $_GET["nombre"], $_GET["precio"]);
?>

<html>
<head>
    <title>Introduce Producto</title>
</head>

<body background="bg.jpg" text="#666666" link="#575757" vlink="#575757" alink="#575757" marginheight="0" topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0">

<div align="center">
<b><font face="Verdana" color="#111111">PRODUCTO AÑADIDO</font></b><br><br>            
            <p align="center"><b><font face="Arial"><a href="ver_carrito.php" title="Ir la página anterior">
            <span style="text-decoration: none"><font color="#000000">Volver 
            al carro de compras</font></span></a></font></b></div>

</body>
</html>

eliminar_producto.php
Código PHP:
<?php
include("lib_carrito.php");
$_SESSION["ocarrito"]->elimina_producto($_GET["linea"]);
?>

<html>
<head>
    <title>Introduce Producto</title>
</head>

<body background="bg.jpg" text="#666666" link="#575757" vlink="#575757" alink="#575757" marginheight="0" topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0">


<div align="center">
    <b><font face="Verdana" color="#111111">PRODUCTO ELIMINADO</font></b><br><br>
            <p align="center"><b><font face="Arial"><a href="javascript:history.back(-2);" title="Ir la página anterior">
            <span style="text-decoration: none"><font color="#000000">Volver 
            al carro de compras</font></span></a><font color="#000000"> </font>
            </font></b>
</div>

</body>
</html>

El código del boton es este por ejemplo:
Código HTML:
<a href="mete_producto.php?id=12&nombre=Corta+cabello+Philips+QC5050&precio=199" target="carro"> 


Hasta acá funciona todo bien, lo que necesito es que al hacer click en el boton aparezca el mete_producto.php pero que debajo de la leyenda "Producto añadido" aparezca el nombre del producto que el usuario hizo click, se entiende? me la pasé toda la tarde metiendo mano pero no pude llegar a lo que necesito, lo unico que logré hacer es crear una funcion similar a imprime_carrito pero, obviamente, me aparecen todos los productos del carrito, y yo solo quiero que aparezca la que el usuario hizo click, espero que puedan ayudarme, muchas gracias.

PD: Si quieren ver el carrito en funcionamiento para tener una idea está en esta página: www.elitehogar.com.ar/computadoras.php (es una de las secciones)

Última edición por rodricrzz; 26/05/2011 a las 16:53 Razón: corrección