Comunidad de diseño web y desarrollo en internet online

Como eliminar un dato de una session.-

Citar            
MensajeEscrito el 02 May 2008 01:47 pm
Tengo en una sesion estructurada:

Código :

$cesta ["compañia"] = "dato uno1"
$cesta ["direccion"] = "dato uno1"
   $codigos = array;
        $codigos [5] = "054";
        $codigos [13] = "01";
        $codigos [59] = "089";
$cesta ["codigos"] = $codigos;

session_register ("contenedor");
$_SESSION  ("contenedor") = $cesta ;


Lo que tengo que hacer es borrar el dato ' $_SESSION("contenedor")[codigos][59]' que corresponderia en este caso al codigo "089", probe el comando session_unregister(Variable), pero no me funciono, ya que solo me sirve al parecer para borrar variables Glovales (osea en este caso "contenedor").- y en el caso de eliminar todos los codigos eliminar el arreglo codigos.-

Ya me estube cabeziando mas de cuatro horas, el problem se surgio el dia de ayer faltando para las 24hrs, pense que podia solucionarlo, me di cuenta aprox a las 4hrs que me gano.- ;S

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 02 May 2008 03:39 pm
La sesión se guarda así(no es necesario el session_register).

Código :

$_SESSION["contenedor"] = $cesta ;


Y se borra así:

Código :

$_SESSION["contenedor"] = null;


Debido a que no tiene un tipeado stricto php, es de lo mas elegante usar null.

Para comprobar si tu session existe solo compara contra null(no uses el buguiento empty o el no siempre útil isset)

Código :


if( $_SESSION["contenedor"] == null )
{
  //no esta declarada
}
else
{
  //Si esta declarada
}

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 02 May 2008 04:14 pm
Pongo mi codigo, disculpen por la falta es que tipie todo.-

Código :

<?php
session_start();
$cesta = Array ();
$cesta [\"compañia\"] = \"dato uno1\";
$cesta [\"direccion\"] = \"dato uno1\";

   $codigos = Array();
   $codigos [5] = \"054\";
   $codigos [13] = \"01\";
   $codigos [59] = \"089\";
$cesta [\"codigos\"] = $codigos;

session_register (\"contenedor\");

$op == 1 ? $_SESSION [\"contenedor\"] = $cesta : session_unregister(\'contenedor\');

print_r($contenedor);

?>


Este codigo me devuelte:

Código :

Array
(
    [compañia] => dato uno1
    [direccion] => dato uno1
    [codigos] => Array
        (
            [5] => 054
            [13] => 01
            [59] => 089
        )

)

Y yo al eliminar necesito que me retorne algo como:

Código :

Array
(
    [compañia] => dato uno1
    [direccion] => dato uno1
    [codigos] => Array
        (
            [5] => 054
            [13] => 01
        )

)

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 02 May 2008 04:27 pm
Pues solo asigna:

Código :

 $codigos [59] = null;


Y vuelva a guardar la cesta en sesion.

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 02 May 2008 04:35 pm
Esta bien, pero necesito eliminar el $codigos [59] tambien.-
Por que hago un isset($_SESSION["contenedor"]["codigos"][59]) y aunque sea nulo me devuelve 1.-

Pdta.: como hago las doble o simple comillas para que no me salda "'

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 02 May 2008 04:53 pm
Lo que hice fue:

Código :

$tempo = $_SESSION["contenedor"]["codigos"];
    unset ($tempo [59]);
$_SESSION["contenedor"]["codigos"]=$tempo ;


Pero no se que pasa luego cuando quiero agregar mas datos, ej.-

Código :

$_SESSION["contenedor"]["codigos"][35] = "otro dato" ;

Se me reinicia toda la secion y me queda

Código :

Array
(

    [codigos] => Array
        (
            [35] => otro dato
        )

)

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 02 May 2008 05:10 pm
Qué te muestra cada uno de estos print_r?

Código :

print_r( $_SESSION["contenedor"]["codigos"] );
$_SESSION["contenedor"]["codigos"][59] = null;
print_r( $_SESSION["contenedor"]["codigos"] );
$_SESSION["contenedor"]["codigos"][35] = 213;
print_r( $_SESSION["contenedor"]["codigos"] );

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 02 May 2008 05:27 pm
Lo siguiente:

Código :

print_r( $_SESSION["contenedor"]["codigos"] );
->Array ( ) 
-
$_SESSION["contenedor"]["codigos"][59] = null;
print_r( $_SESSION["contenedor"]["codigos"] );
->
Array
(
    [59] => 
)
-
$_SESSION["contenedor"]["codigos"][35] = 213;
print_r( $_SESSION["contenedor"]["codigos"] );
->
Array
(
    [35] => 213
)

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 02 May 2008 06:16 pm
Aja lo que quería demostrarte es que nada te funciona por que por algo no estas guardando códigos.
El primer print_r te regresa un array vacio y te debería regresar uno con los elementos que se supone ya diste de alta.

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 02 May 2008 07:27 pm
york3rs sabes que para leer o registrar una variable de sesion al menos debes hacer un session_start previamente. Creo que no lo estas haciendo cuando quieres borrar la variable.

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 02 May 2008 10:51 pm
Disculpe la demora, pero no se que paso en el codigo, como por arte de magia empezo a funcionar correctamente.-
Ademas para provar todas las supociones cree el siguiente codigo, que funciona al 100%.-

Código :

<?php
session_start();
$cesta = Array ();
$cesta ["compañia"] = "dato uno1";
$cesta ["direccion"] = "dato uno1";

   $codigos = Array();
   $codigos [5] = "054";
   $codigos [13] = "01";
   $codigos [59] = "089";
$cesta ["codigos"] = $codigos;


session_register ("contenedor");

if ($op == 1)
$_SESSION ["contenedor"] = $cesta; 
else if ($op == 2)
{
    $temp = $_SESSION["contenedor"]["codigos"];    
           unset ($temp [59]);
  if (count($temp))
   $_SESSION["contenedor"]["codigos"]=$temp ;
  else
    $_SESSION["contenedor"]["codigos"] = null;
}
else if ($op == 3)
   $_SESSION["contenedor"]["codigos"][66]="hello" ;


print_r($contenedor);

?>

para probar "archivo.php?op=1 ò 2 ò 3 "


Cuando hice las pruebas que me dijo Dano, al inicio de cada una reseteaba la Sesion, sin datos. Por eso que obtenia esos resultados.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 03 May 2008 04:32 pm
Se que respondo tarde, pero creo que lo que estabas buscando era esto

Código :

unset( $variable_a_borrar) 


De esa manera destruyes completamente la variable y al utilizar isset() en la variable te devuelve false. También funciona con arreglos, puedes borrar solamente una de las variables almacenada en el arreglo sin alterar el resto.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 05 May 2008 03:51 pm

Odin escribió:


Código :

unset( $variable_a_borrar) 



Ese comando lo tengo en el codigo expuesto.- Y no sirve para eliminar lo que yo necesito, por que elimina eliminar la variable de session, no datos guardados dentro de esa variable.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 05 May 2008 04:16 pm
al hacer

Código :

unset ($_SESSION["contenedor"]["codigos"][59]);
te elimina la variable de sesión "contenedor".?

Por mauril26

161 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 05 May 2008 04:21 pm

mauril26 escribió:

al hacer

Código :

unset ($_SESSION["contenedor"]["codigos"][59]);
te elimina la variable de sesión "contenedor".?


No es por mala onda, pero ese tipo de preguntas es mas fácil probarlas uno mismo, no era muy dificil hacer esto:

Código :

$_SESSION["contenedor"] = array();
$_SESSION["contenedor"]["codigos"] = array();
$_SESSION["contenedor"]["codigos"][59] = "hola";

echo "<pre>";
print_r( $_SESSION );
echo "</pre>";

unset ($_SESSION["contenedor"]["codigos"][59]);

echo "<pre>";
print_r( $_SESSION );
echo "</pre>";

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 05 May 2008 04:29 pm
Jaja... si, de hecho lo es. Pero primero debo resolver esto...
Por eso le pregunto al "dueño de la sesión problemática" que ocurre al hacer eso...

Por mauril26

161 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 05 May 2008 04:35 pm
session_register es de la vieja escuela... y ademas la gente de PHP recomienda no usarlo si estas usando $_SESSION.

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 05 May 2008 04:53 pm

Maikel escribió:

session_register es de la vieja escuela... y ademas la gente de PHP recomienda no usarlo si estas usando $_SESSION.

saludos


Los de la vieja escuela nos van a odiar, siempre los ponemos de mal ejemplo. :lol:

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 08 May 2008 08:59 pm

mauril26 escribió:


al hacer

Código :

unset ($_SESSION["contenedor"]["codigos"][59]);
te elimina la variable de sesión "contenedor".?

Eso te devuelve :

iseet($_SESSION["contenedor"]["codigos"][59]) => true

y yo necesito:

iseet($_SESSION["contenedor"]["codigos"][59]) => false

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 08 May 2008 09:02 pm
Pero no se preocupen, si ya lo solucione.-

Maikel escribió:

session_register es de la vieja escuela... y ademas la gente de PHP recomienda no usarlo si estas usando $_SESSION.
saludos


No entendi a que te referias Maikel.

Yo entiendo que para registrar una variable de session tengo que usar session_register ("nombrevariable"); y para tomas esa variable tengo que usar $_SESSION["nombrevariable"].-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 09 May 2008 02:20 am

york3rs escribió:

Pero no se preocupen, si ya lo solucione.-

Maikel escribió:

session_register es de la vieja escuela... y ademas la gente de PHP recomienda no usarlo si estas usando $_SESSION.
saludos


No entendi a que te referias Maikel.

Yo entiendo que para registrar una variable de session tengo que usar session_register ("nombrevariable"); y para tomas esa variable tengo que usar $_SESSION["nombrevariable"].-


Ese primer paso es innecesario, solamente debes asignar el valor de $_SESSION['nombrevariable'] como harías con cualquier variable de php.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 09 May 2008 02:22 am

york3rs escribió:

mauril26 escribió:


al hacer

Código :

unset ($_SESSION["contenedor"]["codigos"][59]);
te elimina la variable de sesión "contenedor".?

Eso te devuelve :

iseet($_SESSION["contenedor"]["codigos"][59]) => true

y yo necesito:

iseet($_SESSION["contenedor"]["codigos"][59]) => false


En mi experiencia, al usar unset para borrar la variable el isset debería de devolverte false

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 09 May 2008 05:56 am
a ver, sospecho que no nos estamos entendiendo... yo hablo de la función unset

Código :

<?php
session_start();
$_SESSION["vector"][1]="prueba 1";
$_SESSION["vector"][2]="prueba 2";
$_SESSION["vector"][3]="prueba 3";

print_r($_SESSION["vector"]);

unset ($_SESSION["vector"][2]);

if (isset($_SESSION["vector"][2])) 
   echo "ni php ni clab sirven para nada";
else
   echo "bue... al menos php si funciona";

print_r($_SESSION["vector"]);
?>


la salida de eso efectivamente es


Array
(
[1] => prueba 1
[3] => prueba 3
[2] => prueba 2
)



bue... al menos php si funciona

Array
(
[1] => prueba 1
[3] => prueba 3
)


por cierto, disculpen lo largo del post. solo que necesitaba imperiosamente exponer mi punto desde hace unos dias.

PD: Eso es de la vieja escuela.? (Responder urgentemente a esta posdata)

Por mauril26

161 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 09 May 2008 02:44 pm

york3rs escribió:

[Ese comando lo tengo en el codigo expuesto.- Y no sirve para eliminar lo que yo necesito, por que elimina eliminar la variable de session, no datos guardados dentro de esa variable.-


Odin lo que tu estas elimando es una variable de Sesion y yo lo que necesitaba era eliminar una variabla de un arreglo que estaba guardado sentro de la sesion.-

Ej.:
Te elimina que que es del tipo:
$_SESSION["vector"][3]="prueba 3";
Pero yo tengo:
$_SESSION["vector"]["variable"][1]="prueba 3";

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7
Citar            
MensajeEscrito el 09 May 2008 07:15 pm

york3rs escribió:


Odin lo que tu estas elimando es una variable de Sesion y yo lo que necesitaba era eliminar una variabla de un arreglo que estaba guardado sentro de la sesion.-


Creo que no he dado a entender correctamente mi punto, desde el inicio me refería a que unset puede eliminar una variable dentro de un arreglo o matriz, sea de sesión o no. La función unset simplemente destruye una variable, no tiene nada que ver con las sesiones.

mauril26 escribió:

PD: Eso es de la vieja escuela.? (Responder urgentemente a esta posdata)


Me parece que tu código se encuentra actualizado, talvez alguien con más experiencia pueda decir lo contrario.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 10 May 2008 02:41 pm
Correcto, disculpa no entender. Lo que yo explicaba que al aplicar el unset en sesiones lo que hace es eliminar la variable de session completa, no se puede eliminar un dato guardado dentro de esa variable de Sesion, osea Sesion.variable si y sesion.variable.array no se puede.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.