PHP - Problema al guardar los datos en una sesion

 
Vista:

Problema al guardar los datos en una sesion

Publicado por PM (2 intervenciones) el 29/01/2019 17:13:50
Tengo un problema al guardar los datos en una sesión, si añado un nuevo objecto me lo muestra pero si quiero añadir otro al recargar la página desaparace ese objecto añadido.

Supongo que la lógica esta bien hecha, cuando añado un nuevo alumno este se guarda en la session['alumno'] y cuando recargo la página con la función cargarDatosAlumno() debería cargar los datos guardados.

Tengo hecho lo siguiente :

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
26
27
28
29
30
31
32
33
34
<?php session_start();
 
include_once("alumno.php");
 
class Secretaria{
 
    public $alumnos = array();
 
    public function __construct(){
 
    }
 
    public function cargarDatosAlumno(){
        return isset($_SESSION['alumno']) ? $_SESSION['alumno'] : new Alumno();
    }
 
    //Guarda los datos del alumno en la sesion
    function guardarDatosAlumno($alumno){
        $_SESSION['alumno'] = $alumno;
    }
}
 
$secretaria = new Secretaria();
 
// Cargamos los nuevos datos al recargar.
$secretaria->cargarDatosAlumno();
 
// Añadimos Alumnos.
$alumno = new Alumno($_POST['nombre'],$_POST['apellido'],$_POST['dni']);
array_push($secretaria->alumnos,$alumno);
 
//Guardamos los datos en la session.
$secretaria->guardarDatosAlumno($alumno);
}
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
Imágen de perfil de Alejandro
Val: 1.627
Plata
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Problema al guardar los datos en una sesion

Publicado por Alejandro (664 intervenciones) el 29/01/2019 20:05:09
En ningún momento estas poblando el array de alumnos

La primera vez que ejecutas el script:
Instancias un nuevo objeto Secretaria en la variable $secretaria en este instante el array $alumnos esta vació.
después ejecutas el método cargarDatosAlumno(); que para mi no tiene sentido pues retorna un objeto Alumno pero no haces nada con eso.
Seguido instancias un objeto Alumno en la variable $alumno
Agregas el objeto anterior al array de $alumnos que contiene el objeto $secretaria, en este momento solo tienes 1 elemento en el array es el que se acabo de agregar.
Por ultimo guardas el objeto $alumno en la sessión.

Nuevamente ejecutas el script:
Instancias un nuevo objeto Secretaria en la variable $secretaria y nuevamente el array $alumnos esta vació.
después ejecutas el método cargarDatosAlumno(); esta vez retornas la sessión pero igual no haces nada con ella
Seguido instancias un objeto Alumno en la variable $alumno
Agregas el objeto anterior al array vació de $alumnos que contiene el objeto $secretaria, nuevamente solo tienes el elemento que se acabo de agregar.
Por ultimo sobrescribes la sessión con el nuevo objeto $alumno
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