Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/12/2012, 13:54
mr_pollo
 
Fecha de Ingreso: noviembre-2011
Mensajes: 8
Antigüedad: 12 años, 5 meses
Puntos: 1
agregar cantidad en un carrito virtual

Hola como estan todos! bueno tengo algunos problemas con el clasico carrito de compras q para algunos de nosotros q recien empesamos se nos hace tan dificil u.u

Tengo un profesor q esta algo mal de la cabeza jaja y cada ves pide mas cosas en nuestro trabajo , incluso cosas q nunca nos enseño >.<

las tablas de mi base de datos son:
-carritos
-lineasdeventas
-mensajes
-productos
-rubros
-usuarios

Bueno mi carrito de compras ya estaba realizado y funcionando pero ahora me pide las siguientes modificaciones:

-Que te permita elegir la cantidad de productos a comprar (en mi carrito tengo la cantidad fija en 1, y se autoincrementa cuando elegimos el mismo producto)

-Que cuando realice la compra , me pregunte si es al contado o con tarjeta y me muestre las cuotas y descuentos o recargos segun corresponda para cada tarjeta (en mi carrito no tengo nada de esto, solo se eligen los productos, se compra , y qeda guardado de esa forma).

-Mandar un e-mail de notificacion al usuario q realiza la compra, informandole algunos detalles de la compra realizada(no tengo esto en mi carrito ni siquiera nos lo enseño)

Bueno para el problema de la cantidad me puse a buscar y encontre un video q muestra como agregar la cantidad pero ese carrito y el mio tienen una estructura diferente y por lo tanto se me hace dificil plantearlo en mi carrito.

mi carrito funciona en base a esta libreria de clases:

Código PHP:
<?php
class LineadeVenta{
    private 
$cod;
    private 
$des;
    private 
$precio;
    public 
$cantidad;
    
//constructor de LineadeVenta
    //$cant=1 es valor que se establece por defecto a $cant en el caso de 
    //se omita este valor cuando se cree un objeto
    
function __construct($codigo,$descripcion,$pv,$cant=1)
    {
    
$this->cod=$codigo;
    
$this->cantidad=$cant;
    
$this->des=$descripcion;
    
$this->precio=$pv;
    }
   function 
GetCod(){return $this->cod;}
   function 
GetDes(){return $this->des;}
   function 
GetPrecio(){return $this->precio;}
   function 
GetCantidad(){return $this->cantidad;}
   function 
SetCod($newcod){$this->cod=$newcod;}
   
//crear una metodo que calcule el subtotal
}
/*****fin de la definicion de la clase LineadeVenta**************************************/
/******inicio de la clase Carrito******/
class Carrito{
public 
$olineasventa;
private 
$numlinea;
//constructor. Realiza las tareas de inicializar los objetos cuando se instancian
//inicializa el numero de lineas de venta a 0
function __construct()
{
//inicializar la variable como array
$this->olineasventa=array();
//inicializar el indice del array a cero
$this->numlinea=0;
}

//Introduce una linea de venta en el carrito. Recibe los datos del producto
//Se encarga de introducir los datos en los array olineasventa del objeto carrito
//luego aumenta en 1 indice(numlinea)
function AgregarLineasVentas($codigo,$descripcion,$pv)
{
//crear un objeto LineadeVenta y almacenarlo en una posicion del array
//deternimada por numlinea
//Corregir para mostrar cantidad= 2 cuando seleccione el mismo producto
$crear 1;
foreach(
$this->olineasventa as $lv)
{
    if(
$lv->GetCod() == $codigo)
        {
        
$crear 0;
        
$lv->cantidad $lv->cantidad +1;
        
//echo "se ha seleccionado solo 1 producto";
        //$this->cantidad = $this->cantidad +1;
        //$this->olineasventa[$this->numlinea]=new LineadeVenta($codigo,$descripcion,$pv);
        //$this->numlinea++;
        
}
}
if(
$crear){
        
        
$this->olineasventa[$this->numlinea] = new LineadeVenta($codigo,$descripcion,$pv);
        
//contador de lineas de ventas e indice(una posicion en el array)
        
$this->numlinea++;
        
//$cantidad += $this->cantidad;
        //$this->cantidad++;
        
}
}

//$this->olineasventa[$this->numlinea]=new LineadeVenta($codigo,$descripcion,$pv);
//contador de lineas de ventas e indice(una posicion en el array)
//$this->numlinea++;

        
//Muestra el contenido del carrito de  compra
//ademas pone los enlaces para eliminar una linea de venta del carrito
function imprime_carrito(){
$totalcarrito 0;
?>
<table border=1 cellpadding="3">
      <tr>
        <th>Codigo</th>
        <th>Nombre producto</th>
        <th>Precio</th>
        <th>Cantidad</th>
        <th>Subtotal</th>
        <th>&nbsp;</th>
      </tr>
<?php
foreach($this->olineasventa as $i=>$p)
{
    
//filtrar las lineas de ventas eliminadas
    //osea que sean distintas de 0(cero)
    
if($p->GetCod()!=0){
        
//ustedes debera crear un metodo en la clase LineadeVenta que realice
        //la siguiente operación
        
$subtotal=$p->GetPrecio()*$p->GetCantidad();
        
?>
        <tr>
        <td><?php echo $p->GetCod()?></td>
        <td><?php echo $p->GetDes()?></td>
        <td><?php echo $p->GetPrecio()?></td>
        <td><?php echo $p->GetCantidad()?></td>
        <td><?php echo $subtotal?></td>
        <td><a href='eliminar_producto.php?linea=<?php echo $i?>'>Eliminar producto</a></td>
        </tr>
        <?php
        $totalcarrito 
+= $subtotal;
    }
}
//muestro el total
?>
<tr>
  <td colspan="4" align="right"><strong>TOTAL:</strong></td>
  <td colspan="2"><strong><?php echo $totalcarrito?></strong></td>
  </tr>
<tr>
  <td colspan="4" align="right"><strong>IVA (21%):</strong></td>
  <td colspan="2"><strong><?php echo $totalcarrito1.21?></strong></td>
  </tr>
</table>
<?php }//fin de la funcion imprime_carrito
//elimina una linea de venta 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){
//llamar al metodo Setcod para establecer su valor a 0(cero)
$this->olineasventa[$linea]->SetCod(0);
}
}
function 
__destruct()
{
    
}
//inicio la sesión
session_start();
//si no esta creado el objeto carrito en la sesion, lo creamos

}
if (!isset(
$_SESSION["ocarrito"]))$_SESSION["ocarrito"] = new Carrito();
?>
Entoncess para cambiar la cantidad, el video [URL="http://www.youtube.com/watch?feature=player_embedded&v=xIsFWcpWYO0#!"]YouTube[/URL] me muestra q debo insertar, donde dice la cantidad, un campo de texto para asi agregar la cantidad necesitada
y mi libreria cambiaria a algo asi.. (la parte de abajo)
Código PHP:
foreach($this->olineasventa as $i=>$p)
{
    //filtrar las lineas de ventas eliminadas
    //osea que sean distintas de 0(cero)
    if($p->GetCod()!=0){
        //ustedes debera crear un metodo en la clase LineadeVenta que realice
        //la siguiente operación
        $subtotal=$p->GetPrecio()*$p->GetCantidad();
        ?>
        <tr>
        <td><?php echo $p->GetCod()?></td>
        <td><?php echo $p->GetDes()?></td>
        <td><?php echo $p->GetPrecio()?></td>
        <td><form action="" method="post" name="actualizo"><input name="id2" type="hidden" value="<?php echo $i ?>" />
        <input name="cantidad2" type="text" value="<?php echo $p->GetCantidad()?>" size="2" maxlength="2" />
        <input name="" type="image" src="images/update.png" />
        </form></td>
        <td><?php echo $subtotal?></td>
        <td><a href='eliminar_producto.php?linea=<?php echo $i?>'>Eliminar producto</a></td>
        </tr>
        <?php
        $totalcarrito 
+= $subtotal;
    }
}
//muestro el total
?>
<tr>
  <td colspan="4" align="right"><strong>TOTAL:</strong></td>
  <td colspan="2"><strong><?php echo $totalcarrito?></strong></td>
  </tr>
<tr>
  <td colspan="4" align="right"><strong>IVA (21%):</strong></td>
  <td colspan="2"><strong><?php echo $totalcarrito1.21?></strong></td>
  </tr>
</table>
<?php }//fin de la funcion imprime_carrito
//elimina una linea de venta 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){
//llamar al metodo Setcod para establecer su valor a 0(cero)
$this->olineasventa[$linea]->SetCod(0);
}
}
function 
__destruct()
{
    
}
//inicio la sesión
session_start();
//si no esta creado el objeto carrito en la sesion, lo creamos
if (isset($_POST['id2'])){
$indice=$_POST['id2'];
$cuanto=$_POST['cantidad2'];

}
if (!isset(
$_SESSION["ocarrito"]))$_SESSION["ocarrito"] = new Carrito();
?>
Como veran alli en la parte de abajo le modifique para q muestre el campo de texto y los ocultos pero igualmente NOSE de q manera terminar esto , y hacerlo bien para q funcione como esta en el video , q uno le agrega la cantidad q uno kiere y se actualiza al presionar en la imagen .

Por eso necesito ayuda para adaptar esa *solucion* a mi carrito , q nose como terminarlo, debo agregar el campo de texto para ingresar la cantidad y luego hacer q funcione .

Por favor cualqier colaboracion sera bien recibida jaja :)

gracias