Foros del Web » Programando para Internet » PHP »

ayuda limpiando una sesion

Estas en el tema de ayuda limpiando una sesion en el foro de PHP en Foros del Web. Hola, tengo un problema que creo que es simple, pero he tratado muchas formas de arreglarlo y no puedo. Estoy manejando un carrito de compras ...
  #1 (permalink)  
Antiguo 04/07/2009, 15:34
 
Fecha de Ingreso: diciembre-2002
Ubicación: arica 3334
Mensajes: 75
Antigüedad: 21 años, 11 meses
Puntos: 0
Pregunta ayuda limpiando una sesion

Hola, tengo un problema que creo que es simple, pero he tratado muchas formas de arreglarlo y no puedo.
Estoy manejando un carrito de compras con sesiones y ahi guardo los codigos de los productos.

EJ:

$_SESSION['carrito'] = "0,3,5,14,2";

cada uno de esos numeros es el codigo del producto que se agregó al carrito.
Ahora mi duda es por ejemplo si yo quiero eliminar el 2, 14 y 3 me limpie bien la sesion dejandome con la sesión asi:

$_SESSION['carrito'] = "0,5";

Tengo algo que me limpia relativamente bien excepto cuando quiero eliminarlos todos.

cuando tengo la sesion así:

$_SESSION['carrito'] = "0,3,5,14,2";

y elimino todos por formulario, la sesion me queda así:

$_SESSION['carrito'] = "0,2";

siempre con cero y el ultimo numero de la sesion... si la sesion temrinaba con 5, entonces la sesión me queda con 0,5.

Tengo el siguiente codigo que hace el error:

Código PHP:
if(isset($_POST['id_producto'])){
                
    
//echo $_SESSION['carrito'];
                
    
$id_producto implode(","$_POST['id_producto']); // los dejo como 1,2,3,4
    
$id_producto explode(","$id_producto); // dejo los productos que seleccione para eliminar en un array $id_producto
                
    
$ar explode(',',$_SESSION['carrito']); // dejo en array mi sesion para empezar a comparar mas adelante
    
    
    
for($ses=0$ses<=count($ar); $ses++){
            if(
$ar[$ses]==NULL || $ar[$ses]==''){
               
//echo "NULL<br>";
               
unset($ar[$ses]);
            }
    }

    for(
$a=0$a<=count($ar); $a++){
        for(
$b=0$b<=count($id_producto); $b++){
            if(
$ar[$a]==$id_producto[$b]){
                unset(
$ar[$a]);
            }
        }
    }

    
$arg implode(',',$ar);
    
$_SESSION['carrito'] = $arg;
    
//echo $arg;
       
ir("index.php?id=gestioncart");
                

Estoy haciendo algo mal? o se hace de otra forma?
__________________
Rodrigo Lopez
  #2 (permalink)  
Antiguo 04/07/2009, 15:41
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: ayuda limpiando una sesion

Bueno una forma de que elimine todos es que cuando la persona seleccione todos, tu verifiques si los tiene todos seleccionado para eliminar y si es asi creas un if y dentro que haya esto

Código PHP:
if(CONDICION_QUE_VERIFICA_SI_TODOS_ESTAN_SELECCIONADOS_PARA_ELIMINAR){
$_SESSION['carrito'] = "";

  #3 (permalink)  
Antiguo 04/07/2009, 15:58
Avatar de dargorsv  
Fecha de Ingreso: julio-2009
Mensajes: 25
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: ayuda limpiando una sesion

si quieres vacias todas las sesiones creadas utilizas session_unset();
si quieres vaciar una especifica utilizas unset($_SESSION['carrito']);
  #4 (permalink)  
Antiguo 04/07/2009, 16:10
 
Fecha de Ingreso: diciembre-2002
Ubicación: arica 3334
Mensajes: 75
Antigüedad: 21 años, 11 meses
Puntos: 0
Respuesta: ayuda limpiando una sesion

es que no quiero vaciarlas todas. solo quiero eliminar los codigos seleccionados.
Lo que ocurre es que no me elimina todos.
quiero ver la forma de eliminar solo los productos que seleccioné y que estan en la sesion.
__________________
Rodrigo Lopez
  #5 (permalink)  
Antiguo 04/07/2009, 16:19
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: ayuda limpiando una sesion

Ahora me confundi :S. Mira lo que dijiste aqui

Cita:
Iniciado por rodrigo_lopez Ver Mensaje
Tengo algo que me limpia relativamente bien excepto cuando quiero eliminarlos todos.
y mira lo que dices ahora

Cita:
Iniciado por rodrigo_lopez Ver Mensaje
es que no quiero vaciarlas todas. solo quiero eliminar los codigos seleccionados.
¿Cual de las dos quieres?
  #6 (permalink)  
Antiguo 04/07/2009, 16:31
 
Fecha de Ingreso: diciembre-2002
Ubicación: arica 3334
Mensajes: 75
Antigüedad: 21 años, 11 meses
Puntos: 0
Respuesta: ayuda limpiando una sesion

nono, parece que me expresé mal. perdón.

Mi objetivo es eliminar las que selecciono. El problema es que si tengo 4 en el carro y elimino 3, se eliminan 2. El problema viene en que el ultimo codigo_producto en la sesión no se borra si lo selecciono junto con otros.
En resumen: mi codigo no está funcionando.

Quiero saber como limpiar mi sesión eliminando los checkbox que seleccioné.
Yo creo que todo mi codigo debe estar mal hecho porque no funciona correctamente.

independiente de mi codigo, comi hago para eliminar los id_productos dentro de mi session. Solo! los que haya seleccionado en los campos (checkbox). <-- esa es la pregunta
__________________
Rodrigo Lopez
  #7 (permalink)  
Antiguo 04/07/2009, 17:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: ayuda limpiando una sesion

Bueno lo que te sugiero es que en vez de tratar de eliminar unos valores de una sesion mejor re-escribela. Si por ejemplo yo selecciono al principio 1,2,3,4,5,6 y luego quiero eliminar el 2,5. Cuando vaya a re-escribir la sesion lo que mejor seria es hacer un implode de los que tengo seleccionado y re-escribir $_SESSION['carrito']. De esa forma se elimina las que no tiene seleccionada.

Me dejas saber
  #8 (permalink)  
Antiguo 04/07/2009, 17:24
 
Fecha de Ingreso: diciembre-2002
Ubicación: arica 3334
Mensajes: 75
Antigüedad: 21 años, 11 meses
Puntos: 0
Respuesta: ayuda limpiando una sesion

te entiendo eso, pero como creo la nueva sesion con los id_producto que no seleccione?
resulta que la pagina solo recibe los codigos que fueron marcados en el checkbox. No tengo como agregar los otros
__________________
Rodrigo Lopez
  #9 (permalink)  
Antiguo 04/07/2009, 17:40
 
Fecha de Ingreso: diciembre-2002
Ubicación: arica 3334
Mensajes: 75
Antigüedad: 21 años, 11 meses
Puntos: 0
Respuesta: ayuda limpiando una sesion

ya lo logré hacer.
Quedó perfecto. ya no hay errores. gracias por la idea abimaelrc...
habia perdido dias tratando de solucionarlo.
:D
__________________
Rodrigo Lopez
  #10 (permalink)  
Antiguo 04/07/2009, 17:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: ayuda limpiando una sesion

Te sugiero que leas sobre in_array por si quieres buscar dentro de un array a ver si existe un valor. Esto te ayudara para lo que estas haciendo. Esto evita de estar usando for, foreach o while para leer una variable que tenga un array.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:59.