Foros del Web » Programando para Internet » PHP »

Eliminar datos de una variable de sesion

Estas en el tema de Eliminar datos de una variable de sesion en el foro de PHP en Foros del Web. Hola!! Os cuento mi problema a ver si podeis ayudarme. Tengo una variable de sesión de la que elimino elementos (lo que el usuario quiera ...
  #1 (permalink)  
Antiguo 06/08/2008, 14:56
 
Fecha de Ingreso: julio-2008
Mensajes: 85
Antigüedad: 15 años, 10 meses
Puntos: 2
Busqueda Eliminar datos de una variable de sesion

Hola!!

Os cuento mi problema a ver si podeis ayudarme. Tengo una variable de sesión de la que elimino elementos (lo que el usuario quiera eliminar) con unset() , pero por lo que he podido comprobar, borra el elemento, pero no desplaza las posiciones, por lo que si inserto tres elementos en la variable de sesion, las posiciones 0 1 y 2 están ocupadas, y si elimino el segundo elemento, las posiciones 0 y 2 estarán ocupadas, de hecho si muestro el numero de elementos despues de haber eliminado uno, me lo da bien, me dice que contiene 2 elementos.

Como las posiciones vacias se mantienen, tengo que usar foreach() para recorrer la variable, porque si pusiera for($i=0;$i<count($S_SESSION['nombre'];$i++) me recorrería las posiciones 0 y 1 porque tiene 2 elementos, pero claro los elementos están en las posiciones 0 y 2, así que el primero me lo mostraría pero el segundo no.

Mi problema es como eliminar con foreach la posición que necesite. Os pongo el código para que se entienda mejor:
Código PHP:

foreach ($nombre as $n){
    if(
$ejemplo == $n){
               
//eliminar el valor $n de la variable de sesión
        
}

Debe ser una tontería, pero no logro hacerlo...

Muchas gracias
  #2 (permalink)  
Antiguo 06/08/2008, 16:02
Avatar de Taldreakan  
Fecha de Ingreso: julio-2008
Mensajes: 128
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Eliminar datos de una variable de sesion

En tu arreglo de sesion despues de eliminar con unset
vuelve a redimensionar el arreglo, asi el arreglo se compactara eliminando pociciones vacias.

Código PHP:
// Eliminas la variable
unset($HTTP_SESSION_VARS['nombre'][$n);

// Redimencionas el arreglo
$HTTP_SESSION_VARS['nombre'] = array_values($HTTP_SESSION_VARS['nombre']); 
  #3 (permalink)  
Antiguo 06/08/2008, 18:02
 
Fecha de Ingreso: julio-2008
Mensajes: 85
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Eliminar datos de una variable de sesion

Cita:
Iniciado por Taldreakan Ver Mensaje
En tu arreglo de sesion despues de eliminar con unset
vuelve a redimensionar el arreglo, asi el arreglo se compactara eliminando pociciones vacias.

Código PHP:
// Eliminas la variable
unset($HTTP_SESSION_VARS['nombre'][$n);

// Redimencionas el arreglo
$HTTP_SESSION_VARS['nombre'] = array_values($HTTP_SESSION_VARS['nombre']); 
Como $n no es una posición si no uno de los elementos de la variable de sesión, no podía eliminarlos de esa forma, al final he podido solucionarlo con lo que me han contestado y lo que he leido en otros foros.

Por si alguien lo necesita aquí está el código:

Código PHP:
foreach ($nombre as $n){
    if(
$n == "veronica"){
        
value=array_keys($nombre,"veronica"); //Devuelve un array con las posiciones de la variable de sesion 'nombre' donde la celda contenga la palabra 'veronica'
        
for($i=0;$i<count($value);$i++)
            unset(
$_SESSION["nombre"][$value[$i]]);
    } 

Espero que os sirva.
Muchas gracias Taldreakan por contestarme.
  #4 (permalink)  
Antiguo 06/08/2008, 20:00
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Respuesta: Eliminar datos de una variable de sesion

Cita:
Iniciado por Taldreakan Ver Mensaje
En tu arreglo de sesion despues de eliminar con unset
vuelve a redimensionar el arreglo, asi el arreglo se compactara eliminando pociciones vacias.

Código PHP:
// Eliminas la variable
unset($HTTP_SESSION_VARS['nombre'][$n);

// Redimencionas el arreglo
$HTTP_SESSION_VARS['nombre'] = array_values($HTTP_SESSION_VARS['nombre']); 

$HTTP_SESSION_VARS no se usa mas eso es de cuando los dinosaurios. se usa $_SESSION['nombre_session'] = 'aqui valor';

y para eliminar el valor que posee una session se usa
session_unset(); y para destruirla se usa session_destroy();

os recomiendo leer.
http://ve2.php.net/manual/en/function.session-unset.php
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
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 13:46.