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> </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 $totalcarrito* 1.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();
?>
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 $totalcarrito* 1.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();
?>
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