PHP - Borrar datos de una cookie

 
Vista:
sin imagen de perfil

Borrar datos de una cookie

Publicado por Pablo (25 intervenciones) el 20/07/2017 20:12:03
Q tal amigos?!
Pues eso tengo una cookie 'carrito' donde almaceno datos del producto como nombre, precio, medidas...el tema es q necesito poder borrar cada producto y solo consigo borrar la cookie por completo por lo que se borran todos los productos del carrito.
Sabeis como puedo seleccionar y borrar solo el producto q necesite?

Actualmente tengo esto y asi lo borro por completo claro
1
2
If (isset($_GET['vaciar'])) {
	unset($_COOKIE['carrito']);

Si es os ocurre algo...

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Borrar datos de una cookie

Publicado por Yamil Bracho (888 intervenciones) el 20/07/2017 20:33:25
El proceso seria algo asi :
1) Lees la cookie y su contenido usando $_COOKIE
2) Actualizas el valor obtenido en (1)
3) Necesitas reescribir la cookie usando setcookie
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Borrar datos de una cookie

Publicado por Pablo (25 intervenciones) el 20/07/2017 20:47:27
Gracias.
Algo asi?

1
setcookie('carrito[]', $valorActualizado)

Pero si $valorActializado es una cadena de texto. Tendria q reescribirlo todo no? . Ponme un ejemplo porfa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Borrar datos de una cookie

Publicado por kip (877 intervenciones) el 20/07/2017 21:42:02
Hola, para identificar lo que vayas a querer borrar seria mejor que al crear la cookie lo hagas dándole un indice dentro del array único e identificable, puede ser tambien un simple entero pero este dato debe estar en el formulario donde el usuario vaya a seleccionar lo que desee eliminar.

Imaginemos que establecemos estas cookies:
1
2
setcookie("carrito[X]", 'INFO X');
setcookie("carrito[Y]", 'INFO Y');

Ahora debes recibir alguno de esos indices para identificarlos y borrarlos usando la misma función de creación pero dándole un tiempo de expiracion anterior al momento actual, puede ser así:

1
2
$_GET['ID_BORRAR'] = 'X';
setcookie("carrito[{$_GET['ID_BORRAR']}]", NULL, strtotime('-1 day'));

http://php.net/manual/es/function.setcookie.php

Es un ejemplo hipotético el de arriba, inténtalo y nos cuentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Borrar datos de una cookie

Publicado por Pablo (25 intervenciones) el 20/07/2017 21:46:18
Si esa es la clave. Estaba posteandolo ahora mismo

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Borrar datos de una cookie

Publicado por Pablo (25 intervenciones) el 22/07/2017 23:33:35
Buenas he estado mirando y funciona correctamente pero para mi caso tendría que modificar bastante codigo de mi pagina. Si no hya otro remedio la haré pero ya esta casi lista a falta del dichoso boton borrar..
Miren la cookie se guarda asi
1
Array ( [carrito] => a:2:{i:0;a:7:{s:8:"material";s:26:"Vinilo monomérico 2 años";s:8:"acabados";s:15:"Laminado Brillo";s:7:"soporte";s:20:"Metacrilato 5mm Opal";s:6:"medida";s:5:"3x5 m";s:4:"unis";s:1:"1";s:5:"envio";s:21:"Envio normal 5-7 dias";s:3:"pvp";s:6:"748,39";}///////AKI EMPIEZA OTRO PRODUCTO////////i:1;a:7:{s:8:"material";s:26:"Vinilo monomérico 2 años";s:8:"acabados";s:15:"Laminado Brillo";s:7:"soporte";s:7:"Ninguno";s:6:"medida";s:5:"5x5 m";s:4:"unis";s:1:"1";s:5:"envio";s:21:"Envio normal 5-7 dias";s:3:"pvp";s:6:"323,68";}}

ahora mismo en esa cookie hay dos productos distintos y necesito poder borrarlos independientemente. Intento esto pero sin exito

1
2
3
4
5
6
<a href="index.php?borrar='.$key.'"> borrar</a>
 
$bName = $_GET['borrar'];
if (isset ($_GET['borrar'])) {
	unset($aCarrito[$bName]);
}

Paso por get el valor del indice del producto pero solo borro el array pero como la cookie ya esta generada pues en cuanto se refresca la pagina se vuelve a generar.

Entonces intento esto

1
2
3
4
5
6
7
<a href="index.php?borrar='.$key.'"> borrar</a>
 
$bName= '['.$_GET['borrar'].']';
$oTime= time() - 1;
if (isset ($_GET['borrar'])) {
	setcookie('carrito'.$bName, '', $oTime);
}

pero claro el nombre de la cookie no esta establecido con el indice por lo que no lo borra.

Espero tengan una solucion si no tendre que tirar trabajo a la basura por un mal planteamiento inicial. ya que si hubiese caido en que tenia que poder borrar los productos uno por uno lo habria hecho inicialmente de otra manera creando cookies independiente por cada producto.

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Borrar datos de una cookie

Publicado por kip (877 intervenciones) el 23/07/2017 01:01:47
El valor de la cookie se lo das usando serialize() verdad ? Es decir almacenas un array serializado ?

He tomado el valor que colocaste y he obtenido este array con unserialize()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Array
(
    [0] => Array
        (
            [material] => Vinilo monomérico 2 años
            [acabados] => Laminado Brillo
            [soporte] => Metacrilato 5mm Opal
            [medida] => 3x5 m
            [unis] => 1
            [envio] => Envio normal 5-7 dias
            [pvp] => 748,39
        )
 
    [1] => Array
        (
            [material] => Vinilo monomérico 2 años
            [acabados] => Laminado Brillo
            [soporte] => Ninguno
            [medida] => 5x5 m
            [unis] => 1
            [envio] => Envio normal 5-7 dias
            [pvp] => 323,68
        )
 
)

Cual es el key que trae $_GET['borrar'] ?? Puedes usar array_filter() para filtrar el valor a eliminar y de nuevo setear la cookie con el nuevo array filtrado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Borrar datos de una cookie

Publicado por Pablo (25 intervenciones) el 23/07/2017 01:08:19
Si claro

1
setcookie('carrito', serialize($carrito), $tiempo);

y asi los recupero

1
2
if(isset($_COOKIE['carrito'])) {
	$carrito = unserialize ($_COOKIE['carrito']);


$key devuelve 0 y 1 respectivamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Borrar datos de una cookie

Publicado por kip (877 intervenciones) el 23/07/2017 01:23:15
Intentalo asi:

1
2
3
4
5
if (isset($_GET['borrar'])) {
    $valCookie = unserialize($_COOKIE['carrito']);
    unset($valCookie[$_GET['borrar']]);
    setcookie('carrito', serialize($valCookie));
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Borrar datos de una cookie

Publicado por Pablo (25 intervenciones) el 23/07/2017 01:31:46
Grande!!! Gracias kip te debo una

lo termino asi para que cargue la pagina y funciona perfecto.

1
2
3
4
5
6
7
8
9
10
11
if (isset($_GET['borrar'])) {
 
    $valCookie = unserialize($_COOKIE['carrito']);
 
    unset($valCookie[$_GET['borrar']]);
 
    setcookie('carrito', serialize($valCookie));
 
	header ("Location: index.php");
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar