Foros del Web » Programando para Internet » PHP »

Carrito de Compras

Estas en el tema de Carrito de Compras en el foro de PHP en Foros del Web. como van !!! se que este tema ha sido expuesto cientos de veces, pero no encontre una respuesta valida para lo que necesito. tengo una ...
  #1 (permalink)  
Antiguo 30/08/2006, 11:12
Avatar de charlyrosero  
Fecha de Ingreso: julio-2006
Mensajes: 161
Antigüedad: 11 años, 4 meses
Puntos: 5
Exclamación Carrito de Compras

como van !!!

se que este tema ha sido expuesto cientos de veces, pero no encontre una respuesta valida para lo que necesito.

tengo una clase llamada carito de compras y es asi :

Código PHP:

class carrito_compras
{

             
//atributos de la clase
            
var $num_productos;
           var 
$array_id_item;
            var 
$array_nombre_item;
            var 
$array_precio_item;

            
//constructor. Realiza las tareas de inicializar los objetos cuando se instancian
            //inicializa el numero de productos a 0
            
function carrito_compras () 
             {
               
$this->num_productos=0;
            }     
             

            function 
introduce_producto($id_prod,$nombre_prod,$precio_prod)
             {
                
            
//  $this->array establecido[posicion del array]= atributo         
               
$this->array_id_item[$this->num_productos]=$id_prod// introduzco identificacion del producto a un espacio del array
                 
$this->array_nombre_item[$this->num_productos]=$nombre_prod;
               
$this->array_precio_item[$this->num_productos]=$precio_prod;
               
$this->num_productos ++;
                            
            } 
            function 
imprime_carrito()
             {
               
$suma 0;
               echo 
'<table border=1 cellpadding="3">
               <tr>
               <td><b>Nombre producto</b></td>
               <td><b>Precio</b></td>
               <td> </td>
               </tr>'
;

             for (
$i=0;$i<$this->num_productos;$i++)
                 {
                  if(
$this->array_id_item[$i]!=0//si so niguales a 0 fue porque fueron borrados por el usuario
                     
{
                     echo 
'<tr>';
                     echo 
"<td>" $this->array_nombre_item[$i] . "</td>";
                     echo 
"<td>" $this->array_precio_item[$i] . "</td>";
                     echo 
"<td><a href='eliminar_producto.php?linea=$i'>Eliminar producto</td>";
                     echo 
'</tr>';
                     
$suma += $this->array_precio_item[$i];
                  }
               } 
                 
               echo 
"<tr><td><b>TOTAL:</b></td><td> <b>$suma</b></td><td> </td></tr>";
               
//total más IVA
               
echo "<tr><td><b>IVA (16%):</b></td><td> <b>" $suma 1.16 "</b></td><td> </td></tr>";
               echo 
"</table>";
            }

            
            function 
elimina_producto($linea)
             {
                
$this->array_id_item[$linea]=0;
     


             } 

esta calse recibe los datos para el ingreso de productos por una pagina llamada, introduce_productos.php

Código PHP:
<?
    
include("Clase_carrito.php");
    
$_SESSION["ocarrito"] = new carrito_compras ();
    
$_SESSION["ocarrito"]->introduce_producto($_GET["id"],                          $_GET["nombre"], $_GET["precio"]);
    
$_SESSION["ocarrito"]->imprime_carrito();
?>
la clase funciona, guarda, elimina etc, pero no hace lo de un Carrito de compras almacenar en una cesta, debido a que siembre que hago esto $_SESSION["ocarrito"] = new carrito_compras (); la variable $this->num_productos toma siempre el valor de 0, y guardaria siempre 1 solo valor de la cesta,

podrian ayudarme ?
  #2 (permalink)  
Antiguo 30/08/2006, 12:01
Avatar de charlyrosero  
Fecha de Ingreso: julio-2006
Mensajes: 161
Antigüedad: 11 años, 4 meses
Puntos: 5
Alguna Ayuda ?
  #3 (permalink)  
Antiguo 30/08/2006, 12:39
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 13 años, 9 meses
Puntos: 0
y si antes de iniciarla en 0 preguntas si esta definida?
si esta definida no la iniciara en 0


saludos
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #4 (permalink)  
Antiguo 30/08/2006, 14:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En POO . .cuando instancias un objeto parte con todo según la instancia del objeto definas ...

Cuando propagas un objeto por una sesión (como hace este ejemplo) .. se "pierden" los métodos .. por eso se incluye siempre la classe (el código de esta) .. Lo que no debes es "instanciar" (el new ...) otra vez si ya tu sesión trae los datos que maneja el objeto.

Quedaría algo tipo:

Código PHP:
<?
// incluyes el objeto .. (classe)
include("Clase_carrito.php"); 

// Inicias el uso de sesiones (insprescindible en todo script que acceda a $_SESION)
session_start();

// Verificas si tu sesión éxiste . .si no existe instancias el objeto . .si existe lo usas ...
if (isset($_SESSION['carrito'])){
   
$_SESSION["ocarrito"] = new carrito_compras (); 
}

$_SESSION["ocarrito"]->introduce_producto($_GET["id"],$_GET["nombre"], $_GET["precio"]); 
$_SESSION["ocarrito"]->imprime_carrito(); 
?>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 30/08/2006, 14:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Por lo demás ... a mi me gusta más hacer:

Código PHP:
<?

// incluyes el objeto .. (classe) 
include("Clase_carrito.php");  

// Inicias el uso de sesiones (insprescindible en todo script que acceda a $_SESION) 
session_start(); 

// Verificas si tu sesión éxiste . .si no existe instancias el objeto . .si existe lo usas ... 
if (isset($_SESSION['carrito'])){ 
   
$carrito = new carrito_compras ();  
} else {
   
$carrito $_SESSION['ocarrito'];
}

$carrito->introduce_producto($_GET["id"],$_GET["nombre"], $_GET["precio"]); 
$carrito->imprime_carrito();  
?>
lo veo más "natural" .. el uso del objeto separado del "método" por donde lo propago . .en ese caso una sesión . .pero podría se una cookie también ...

Un saludo
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 03:45.