Buenas noches compañeros, llevo un tiempo realizando una página web (como practica) para hacer compras online y aprender un poco. Me ha surgido este problema.
<?php session_start();
/* INCLUIMOS LA CLASE DEL PEDIDO Y LA CONEXIÓN A LA BD */
require_once("./carrito.class.php");
require_once('./conexion.php');
/* COGEMOS LOS DATOS POR GET */
$id = $_GET['id'];
$cantidad = $_GET['cantidad'];
$imagen = $_GET['imagen'];
$ruta = $_GET['ruta'];
/* SI NO HAY SESION DE CARRITO CREAMOS UN OBEJTO NUEVO SI LO HAY, UNSERIALIZASMOS EN LA VARIABLE EN OBJETO CARRITO */
if(!$_SESSION['carrito']){
$obj_kart = new obj_carrito();
}else{
$obj_kart = unserialize($_SESSION['carrito']);
}
/* PREGUTAMOS SI EL ARTÍCULO ESTÁ EN EL CARRITO */
if($obj_kart->find_prod($imagen)){
/* SI ESTÁ, SE AÑADE LA CANTIDAD SIN NECESIDAD DE HACER LA CONSULTA */
$obj_kart->add_changue_prod($imagen,"","",$cantidad,"");
}else{
/* PREGUNTAMOS LOS DATOS DEL PRODUCTO A LA BASE DE DATOS */
$query =mysql_query("SELECT id, nombre, precio, imagen FROM ".$ruta." WHERE id='".$id."'")or die(mysql_error());
$fetch = mysql_fetch_array($query);
/* AÑADIMOS EL PRODUCTO NUEVO PUESTO QUE SABEMOS QUE NO ESTÁ EN EL CARRITO */
$obj_kart->add_changue_prod($id, $fetch['nombre'],$fetch['precio'],$cantidad,$fetch['imagen']);
}
/* GUARDAMOS EN LA VARIABLE DE SESSIÓN EL OBJETO DEL CARRITO SERIALIZADO */
$_SESSION['carrito'] = serialize($obj_kart);
?>
Esta parte del código se da a entender por si sola...el problema viene cuando quiero añadir un segundo artículo de la base de datos o añadir cantidad a un artículo ya existente.
/* ESTA FUNCIÓN AÑADE ARTÍCULOS O CAMBIA CANTIDADES AL ARTÍCULO */
function add_changue_prod($id,$nombre,$precio,$cantidad,$imagen){
$productos = $this->productos;
$poner = true;
foreach($productos as $key => $producto){
if($imagen == $producto->imagen){
$poner = false;
if(!$cantidad){
$producto->cantidad++;
}else{
$producto->cantidad = $cantidad;
}
}
}
if($poner){
if(!$cantidad){
$cantidad = 1;
}
$A = $key + 1;
$this->productos[$A] = new datos_producto();
$this->productos[$A]->numArt = $A;
$this->productos[$A]->id = $id;
$this->productos[$A]->nombre = $nombre ;
$this->productos[$A]->precio = $precio ;
$this->productos[$A]->cantidad = $cantidad;
$this->productos[$A]->imagen = $imagen ;
}
}
Estoy un poco pillado y no consigo darle salida...cabe decir, que el id es un identificador único por tabla, es decir, puede haber varios ID dentro de la misma base de datos que sean iguales, por eso he cogido $imagen, que es la ruta absoluta de la imagen y esta si es única e irrepetible porque nunca hay dos imágenes iguales.