加载控制器codeigniter时如何保存信息?

时间:2013-05-11 21:19:31

标签: php codeigniter

我在Codeigniter做了一个项目。我有一个观点需要选择学生和帐户。学生和帐户处于不同的视图和控制器中。我成功选择了学生,并在一些字段中填写了学生信息,但后来我想选择该帐户并填写该帐户的字段,但学生的信息消失了。

以下是我正在研究的观点:

<?php

    /*******Information for the student ********/
    $parametroExpediente = "";
    $parametroNombre = "";
    $parametroPrimerApellido = "";
    $parametroSegundoApellido = "";
    $parametroCedula = "";


    if (isset($expediente))
    {
        $parametroExpediente = set_value('expediente', $expediente);
        $parametroNombre = set_value('nombre', $nombre);
        $parametroPrimerApellido = set_value('primerApellido', $primerApellido);
        $parametroSegundoApellido = set_value('segundoApellido', $segundoApellido);
        $parametroCedula = set_value('cedula', $cedula);
    }
    /************************************/

    /*******Information for the account********/
    $parametroIDPlan = "";
    $parametroDescripcionPlan = "";
    $parametroTotalAPagarPlan = "";
    $parametroCuantosPagosPlan = "";
    $parametroFrecuenciaPagoPlan = "";
    $parametroAcivoPlan = "";
    $parametroIDCursoPlan = "";
    $parametroMultiGrupoPlan = "";

    if (isset($idPlan))
    {
        $parametroIDPlan = set_value('idPlan', $idPlan);
        $parametroDescripcionPlan = set_value('descripcion', $descripcion);
        $parametroTotalAPagarPlan = set_value('totalApagar', $totalApagar);
        $parametroCuantosPagosPlan = set_value('cuantosPagos', $cuantosPagos);
        $parametroFrecuenciaPagoPlan = set_value('cadaCuantosDiasPaga', $cadaCuantosDiasPaga);
        $parametroAcivoPlan = set_value('activo', $activo);
        $parametroIDCursoPlan = set_value('idCurso', $idCurso);
        $parametroMultiGrupoPlan = set_value('multiGrupo', $multiGrupo);    
    }
    /************************************/
?>

<!--BUTTON TO SELECT A STUDENT -->
<a href="http://localhost/ProyectoNetbeans/CodeIgniter_2.1.3/index.php/Alumnos_controller/loadAlumnoView/seleccionarParaCuenta" class="btn btn-primary">Seleccionar alumno</a>
<span class="badge badge-info">Expediente: <?php echo $parametroExpediente ?></span>
<!---------------------------------->
<br/>
<br/>
<br/>

<!--BUTTON TO SELECT AN ACCOUNT -->
<a href="http://localhost/ProyectoNetbeans/CodeIgniter_2.1.3/index.php/PlanDePago_controller/loadPlanDePagoView/seleccionarParaCuenta/" class="btn btn-primary">Seleccionar plan de pago</a>
<span class="badge badge-info">Plan escogido: <?php echo $parametroDescripcionPlan ?></span>

当选择学生和帐户时,他们都会将信息重定向到同一个控制器,具体如下:

<?php
class Cuentas_controller extends CI_Controller {

   public $data = array();

   public function __construct()
   {
        parent::__construct();
        // Your own constructor code

        $this->load->helper('url');

        $this->load->helper('form');

        $this->load->helper('url');

        $this->load->model('Alumnos_model');
        $this->load->model('PlanDePago_model');

    }

   function index()
   {
        $this->load->view('cuentas_view');
   }

   /*Take the information for the student*/
   function setStudent($elExpediente)
   {
       $query = $this->Alumnos_model->getAllData($elExpediente);
       foreach ($query->result_array() as $row)
       {
           $this->data = array(
                //'expediente' => $row['expediente'],
                'expediente' => $elExpediente,
                'primerApellido' => $row['primerApellido'],
                'segundoApellido' => $row['segundoApellido'],
                'nombre' => $row['nombre'],
                'cedula' => $row['cedula']
            );
       }
       $this->load->view('cuentas_view',$this->data);
   }

   /*Take the information for the account*/
   function setAccount($id)
   {           
       $query = $this->PlanDePago_model->getAllDataNoParameters($id);
       foreach ($query->result_array() as $row)
       {
           $this->data = array(
                'idPlan' => $id,
                'totalApagar' => $row['totalApagar'],
                'descripcion' => $row['descripcion'],
                'cuantosPagos' => $row['cuantosPagos'],
                'cadaCuantosDiasPaga' => $row['cadaCuantosDiasPaga'],
                'activo' => $row['activo'],
                'idCurso' => $row['idCurso'],
                'multiGrupo' => $row['multiGrupo']
            );
       }
       $this->load->view('cuentas_view',$this->data);
   }
}

&GT;

正如您所看到的,setStudent和setAccount方法获取这些视图发送的信息,然后打开我正在处理的视图并填写一些信息,但它没有按预期工作,我选择的第一个消息当我选择第二个时。

有什么建议让这个工作?我希望学生和帐户在我选择时显示信息。

2 个答案:

答案 0 :(得分:1)

你不保存Expediente。 在我的示例中,我们将$ elExpediente和$ idPlan保存在会话变量中,并重定向到视图。 然后在$ this-&gt; load-&gt; view('cuentas_view')中,我们从模型中加载有关此Expediente和idPlan的数据,每个模型为一行。

试试这样,以为我帮助了你。

控制器

class Cuentas_controller extends CI_Controller 
{
   public function __construct()
   {
        parent::__construct();

        $this->load->helper('url');
        $this->load->helper('form');
        $this->load->helper('url');

        $this->load->model('Alumnos_model');
        $this->load->model('PlanDePago_model');

    }

    function index()
    {
         $this->load->view('cuentas_view', array(
             'elExpediente' => $this->session->userdata('elExpediente'),
             'idPlan'       => $this->session->userdata('idPlan'),
         ));
    }

    function flashParams()
    {
        // to erase session data elExpediente and idPlan
        $this->session->unset_userdata('elExpediente');
        $this->session->unset_userdata('idPlan');
    }

    function setAccount($id)
    {
        $this->session->set_userdata('idPlan', $id);
        redirect('http://localhost/ProyectoNetbeans/CodeIgniter_2.1.3/index.php/Cuentas_controller');
    }

    function setStudent($elExpediente)
    {
        $this->session->set_userdata('elExpediente', $id);
        redirect('http://localhost/ProyectoNetbeans/CodeIgniter_2.1.3/index.php/Cuentas_controller');
    }   
}

Alumnos_model:

class Alumnos_model extends CI_Model
{
    public function getItem($elExpediente)
    {
        $this->db->select('*');
        $this->db->where('someColumn', $elExpediente);
        $this->db->limit(1);
        $this->db->from('someTable');
        return $this->db->get()->row_array();
    }
}

PlanDePago_model:

class PlanDePago_model extends CI_Model
{
    public function getItem($id)
    {
        $this->db->select('*');
        $this->db->where('someIdColumn', $id);
        $this->db->limit(1);
        $this->db->from('someTable');
        return $this->db->get()->row_array();
    }
}

cuentas_view.php 档案:

<?php

    /*******Information for the student ********/
    $parametroExpediente      = "";
    $parametroNombre          = "";
    $parametroPrimerApellido  = "";
    $parametroSegundoApellido = "";
    $parametroCedula          = "";

    /*******Information for the account********/
    $parametroIDPlan             = "";
    $parametroDescripcionPlan    = "";
    $parametroTotalAPagarPlan    = "";
    $parametroCuantosPagosPlan   = "";
    $parametroFrecuenciaPagoPlan = "";
    $parametroAcivoPlan          = "";
    $parametroIDCursoPlan        = "";
    $parametroMultiGrupoPlan     = "";


    if($row = $this->Alumnos_model->getItem($elExpediente))
    {
        $parametroExpediente      = set_value('expediente',      $elExpediente);
        $parametroNombre          = set_value('nombre',          $row['nombre']);
        $parametroPrimerApellido  = set_value('primerApellido',  $row['primerApellido']);
        $parametroSegundoApellido = set_value('segundoApellido', $row['segundoApellido']);
        $parametroCedula          = set_value('cedula',          $row['cedula']);
    }

    if($row = $this->PlanDePago_model->getItem($idPlan))
    {
        $parametroIDPlan             = set_value('idPlan',              $idPlan);
        $parametroDescripcionPlan    = set_value('descripcion',         $row['descripcion']);
        $parametroTotalAPagarPlan    = set_value('totalApagar',         $row['totalApagar']);
        $parametroCuantosPagosPlan   = set_value('cuantosPagos',        $row['cuantosPagos']);
        $parametroFrecuenciaPagoPlan = set_value('cadaCuantosDiasPaga', $row['cadaCuantosDiasPaga']);
        $parametroAcivoPlan          = set_value('activo',              $row['activo']);
        $parametroIDCursoPlan        = set_value('idCurso',             $row['idCurso']);
        $parametroMultiGrupoPlan     = set_value('multiGrupo',          $row['multiGrupo']);    
    }
?>

your html code here

在set_value中不确定,我从不使用它

答案 1 :(得分:0)

我发布这个答案只是为了取出我的一些Stackoverflow点:

Codeigniter不是为了理解西班牙语变量而设计的。

你去......