Foros del Web » Programando para Internet » PHP »

Problema acumulación carrito

Estas en el tema de Problema acumulación carrito en el foro de PHP en Foros del Web. 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 ; ...
  #1 (permalink)  
Antiguo 26/05/2011, 16:47
 
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
  #2 (permalink)  
Antiguo 26/05/2011, 17:07
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Problema acumulación carrito

Tu problema proviene de no saber nada de PHP.
Eso es derivado de usar cosas ya creadas y no leer ni el manual.

Me parece que es un tanto obvio que $array_nombre_prod[] contiene el nombre. Cambias el índice dependiendo del producto y ya está.

Por ejemplo:
echo 'Nombre del primer producto: '.$array_nombre_prod[0];

(Supongo que sabrás al menos donde colocarlo)
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #3 (permalink)  
Antiguo 26/05/2011, 17:14
 
Fecha de Ingreso: noviembre-2009
Mensajes: 41
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problema acumulación carrito

Cita:
Iniciado por IEKK Ver Mensaje
Tu problema proviene de no saber nada de PHP.
Eso es derivado de usar cosas ya creadas y no leer ni el manual.

Me parece que es un tanto obvio que $array_nombre_prod[] contiene el nombre. Cambias el índice dependiendo del producto y ya está.

Por ejemplo:
echo 'Nombre del primer producto: '.$array_nombre_prod[0];

(Supongo que sabrás al menos donde colocarlo)
Me esperaba un comentario de este estilo... sinceramente sí, no sé casi nada de PHP, no sé mucho de programación...
Sabía que era algo simple pero así simple sea no tenia idea de como hacerlo...

Ahora bien, agregué ese código (echo 'Nombre producto: 'array_nombre_prod[0];) en el cuerpo del "mete_producto.php" (lo coloqué debajo de "producto añadido") pero sigue sin aparecer... simplemente muestra ese pedazo de código... qué falta?
  #4 (permalink)  
Antiguo 26/05/2011, 17:25
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Problema acumulación carrito

A ver, si lo quieres en lib_carrito.php ya te dije que variable usar.

Si lo quieres usar en mete_producto.php justo después de PRODUCTO AÑADIDO, puedes usar el $_GET['nombre']. Lo concatenas ahí, en esa línea, y listo
No me lo pidas hecho porque ya te he dicho en que líneas tienes que hacer el echo.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #5 (permalink)  
Antiguo 26/05/2011, 17:33
 
Fecha de Ingreso: noviembre-2009
Mensajes: 41
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problema acumulación carrito

Cita:
Iniciado por IEKK Ver Mensaje
A ver, si lo quieres en lib_carrito.php ya te dije que variable usar.

Si lo quieres usar en mete_producto.php justo después de PRODUCTO AÑADIDO, puedes usar el $_GET['nombre']. Lo concatenas ahí, en esa línea, y listo
No me lo pidas hecho porque ya te he dicho en que líneas tienes que hacer el echo.
Algo debo estar haciendo mal, te pido disculpas y paciencia :/ .

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>$_GET['nombre']        
            <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>
Fíjate donde coloqué el código que me diste último... Lo puse allí pero sigue sin funcionar, me imprime el pedazo de código simplemente... Nuevamente te pido disculpas, seguramente debe ser alguna tontería en la que estoy errando, pero no la puedo encontrar :(
  #6 (permalink)  
Antiguo 26/05/2011, 17:36
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Problema acumulación carrito

Hombre pues queda claro que tus conocimientos de php son nulos y no lo digo por ofender, pero es que como puedes ver en todos tus códigos para ejecutar php debe de estar entre los tags <?php y ?>
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #7 (permalink)  
Antiguo 26/05/2011, 17:44
 
Fecha de Ingreso: noviembre-2009
Mensajes: 41
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problema acumulación carrito

Cita:
Iniciado por IEKK Ver Mensaje
Hombre pues queda claro que tus conocimientos de php son nulos y no lo digo por ofender, pero es que como puedes ver en todos tus códigos para ejecutar php debe de estar entre los tags <?php y ?>
Afirmativamente, son nulos.. lamentablemente pero bueno...
Eso lo hice también: en vez de poner $_GET['nombre'] (como hice en la respuesta anterior) coloqué <?php $_GET['nombre'] ?>

Pero desafortunadamente sigue sin funcionarme! En esta oportunidad no me aparece nada, como si no hubiera colocado nada... Te muestro finalmente como puse el código..

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>
<?php
$_GET
['nombre']
?>
            <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>
  #8 (permalink)  
Antiguo 26/05/2011, 17:47
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Problema acumulación carrito

echo es para imprimir contenido, úsalo..
http://php.net/echo

Te recomiendo leer y aprender sobre PHP antes de pedir ayuda y sobre todo: antes de querer modificar archivos.
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #9 (permalink)  
Antiguo 26/05/2011, 17:50
 
Fecha de Ingreso: noviembre-2009
Mensajes: 41
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problema acumulación carrito

Ahora sí! muchas gracias a ambos por la ayuda, y prometo leer mas de PHP (ya que en el colegio no tuve un buen profesor), nuevamente, muchas gracias por la paciencia.

Etiquetas: carrito, carritodecompras, compras
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 19:48.