Despúes de cada compra "desregistro" la variable-array de sesión "Carrito" borrando todo su interior (supongo), voy a pegar un trozo de código porque ya no se por donde cojer esto.
Este es el código del archivo que llama a la clase carrito para isertar la cantidad.
Código:
Ya digo el problema es que me inserta aveces 2 unidades y otras 1 ,cuando tiene que ser siempre 1 , cuando el artículo no existe claro ya que en este caso tiene que sumar 1. Parece como si guardara en algunas posiciones array_qty[$pos] la cantidad 2 y no entiendo porque narices lo hace, se supone que al Desregistrar el array se borra todo ¿no?.Archivo meter_artículo.php $_SESSION["ocarrito"]->introduce_producto($_GET["id"], $_GET["nombre"], $_GET["precio"],$_GET["img"],$_GET["ref"] ,$_GET['qty']); Archivo Classe carrito function introduce_producto($id_art,$nombre_prod,$precio_prod,$img,$ref,$qty ){ $exist=false; //Comrpobamos que la ID del articulo se encuentre ya en el carrito if (@in_array ($id_art ,$this->array_id_art) ) { foreach ( $this->array_id_art as $pos => $value ) { if ( $id_art == $value) { //Actualiza la cantidad de unidades de un artículo determinado y llama a la función que actualiza el precio //total del artículo //actualizamos las cantidades de los productos sumándoles 1 solamente $qty=$this->array_qty[$pos] + 1 ; $this->array_qty[$pos]=$qty; //Esto creo que sobra pero tampoco da error $this->update_cart ($pos,$qty); $exist=true; } }//fin del foreach } //fin de in_array //Esto se ejecuta cuando no pertenece al array la ID de ese artículo , por eso no entiendo lo que falla , ya que ademas de igualarlo a 1 //le suma el 1 de atrás ¿porque? if (!$exist) { $this->array_qty[$this->num_productos]=1; $this->array_id_art[$this->num_productos]=$id_art; $this->array_name[$this->num_productos]=$nombre_prod; $this->array_price[$this->num_productos]=$precio_prod; $this->array_img[$this->num_productos]=$img; $this->array_price_total[$this->num_productos]=$this->array_price[$this->num_productos]; //guardamos el nombre de la imagen de cada producto en array //$this->array_ref_prod[$this->num_productos]=$ref; $this->num_productos++; } } Desregistrar array de sesión Y esto lo hago despúes de cada compra , una vez se le da a Conformar compra. unset ($_SESSION["ocarrito"] ); session_destroy();
Un saludo y gracias de antemano por la ayuda que siempr brindáis .
He creado para rematar la faena un método que al terminar la compra borra tanto las cantidades del array_qty como del array_Id , es decir donde estan las id de los artículos y sus cantidades, este método no debería de hacer falta , ya que se supone que al hacer unset y session_destroy estoy borrando TODA la sesión.
este es el método , y aún así cuando le da la gana mete 2 unidades en vez de 1
function borrar_qty () {
for ($i=0; $i<count($this->array_qty) ;$i++ )
{
//Borra todas las cantidades de la memoria
$this->array_qty[$i]=0; //Esto para dajarlas todas a 0
$this->array_id_art[$i]=0; //borramos los Ids de los artículos
}
}