Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter-重定向后变量未定义_Php_Codeigniter_Variables_Redirect - Fatal编程技术网

Php Codeigniter-重定向后变量未定义

Php Codeigniter-重定向后变量未定义,php,codeigniter,variables,redirect,Php,Codeigniter,Variables,Redirect,在做项目时遇到一些问题。事情就是这样:通过选择,我选择了一个我想要编辑的用户。一个表包含该用户发布的所有消息。单击“编辑”后,使用Ajax会出现一个窗口,其中包含可编辑字段。然后,在提交信息后,将显示以下消息: 消息:未定义变量:数据 此时,在提交之后,我添加了一个重定向,它通过url(用户id)再次将我发送到表视图 以下代码更好地显示了这种情况: function traer_tabla(){ //Here is the function that loads the table aft

在做项目时遇到一些问题。事情就是这样:通过选择,我选择了一个我想要编辑的用户。一个表包含该用户发布的所有消息。单击“编辑”后,使用Ajax会出现一个窗口,其中包含可编辑字段。然后,在提交信息后,将显示以下消息:

消息:未定义变量:数据

此时,在提交之后,我添加了一个重定向,它通过url(用户id)再次将我发送到表视图

以下代码更好地显示了这种情况:

   function traer_tabla(){ //Here is the function that loads the table after post
     $nombre = $this->input->post('nombre');
     $data['titulo'] = 'Update con codeIgniter';
    $data['mensajes'] = $this->datos_model->mensajes($nombre);
    $this->load->view('datos_view', $data);

}
重定向到traer_tabla的函数

       function actualizar_datos()    
       {        
           $id = $this->input->post('id_mensaje');
           $nombre = $this->input->post('nombre');
           $email = $this->input->post('email');
           $asunto = $this->input->post('asunto');
           $mensaje = $this->input->post('mensaje');

           $actualizar = $this->datos_model->actualizar_mensaje($id,$nombre,$email,$asunto,$mensaje);
           if($actualizar)
           {
            $this->session->set_flashdata('actualizado', 'El mensaje se actualizó correctamente');
            redirect(base_url().'datos/traer_tabla/'.$id, 'refresh'); 
           }
}
  function mostrar_datos()
{

    $id = $this->input->post('id'); //This post is from the table when the user click edit button

    $edicion = $this->datos_model->obtener($id);

        $nombre = array(
            'name' => 'nombre',
            'id' => 'nombre',
            'value' => $edicion->nombre
        );
        $email = array(
            'name' => 'email',
            'id' => 'email',
            'value' => $edicion->email
        );
        $asunto = array(
            'name' => 'asunto',
            'id' => 'asunto',
            'value' => $edicion->asunto
        );
        $mensaje = array(
            'name' => 'mensaje',
            'id' => 'mensaje',
            'cols' => '50',
            'rows' => '6',
            'value' => $edicion->mensaje
        );
        $submit = array(
            'name' => 'editando',
            'id' => 'editando',
            'value' => 'Editar mensaje'
        );
        $oculto = array(
            'id_mensaje' => $id
           );

        ?>
        <?= form_open(base_url() . 'datos/actualizar_datos','', $oculto) ?>
        <?= form_label('Nombre') ?>
        <?= form_input($nombre) ?>
        <?= form_label('Email') ?>
        <?= form_input($email) ?>
        <?= form_label('Asunto') ?>
        <?= form_input($asunto) ?>
        <?= form_label('Mensaje') ?>
        <?= form_textarea($mensaje) ?>

        <?= form_submit($submit) ?>
        <?php    
        }    
最后,模型中正在失去价值的函数:

function mensajes($nombre){        
   $this->db->where('id', $nombre);
$query = $this->db->get('mensajes');
    foreach ($query->result() as $fila)
    {
        $data[] = $fila;
    }
return $data;}
如果我尝试直接访问函数,而不是首先通过select表单,则会出现相同的问题

选择要编辑的用户后,如何返回到表视图

编辑:添加了重定向到traer_tabla()的表单

函数mostrar\u datos() { $id=$this->input->post('id');//当用户单击编辑按钮时,此post来自表 $edicion=$this->datos_model->obtener($id); $nombre=数组( 'name'=>'nombre', 'id'=>'nombre', 'value'=>$edicion->nombre ); $email=array( “名称”=>“电子邮件”, 'id'=>'email', 'value'=>$edicion->email ); $asunto=数组( 'name'=>'asunto', 'id'=>'asunto', 'value'=>$edicion->asunto ); $mensaje=数组( 'name'=>'mensaje', 'id'=>'mensaje', 'cols'=>'50', “行”=>“6”, “值”=>$edicion->mensaje ); $submit=数组( 'name'=>'editando', 'id'=>'editando', “值”=>“Editar mensaje” ); $oculto=数组( 'id_mensaje'=>id$ ); ?>
如果将浏览器指向另一个脚本,则当前脚本定义的所有变量都将 当它完成执行时将被销毁

要跨脚本持久化变量,需要使用会话或cookie

script1.php

session_start();
$data['titulo'] = 'Update con codeIgniter';
$_SESSION['data']=$data;
header('location:script2.php');
die();
session_start();
echo $_SESSION['data']['titulo'];
script2.php

session_start();
$data['titulo'] = 'Update con codeIgniter';
$_SESSION['data']=$data;
header('location:script2.php');
die();
session_start();
echo $_SESSION['data']['titulo'];

正如上面andrew所述,当重定向时,变量数据丢失,所以解决方案是将数据存储在会话中

在您的情况下,您可以使用session来存储“nombre”,因为我看到您正试图访问
$nombre=$this->input->post('nombre');
,我想这是行不通的

在这样的会话中存储“nombre”

$this->session->set_userdata('number',$nombre);
并在任何您想要的地方访问它,如下所示:

$this->session->userdata('number');
还要注意,您的重定向是

redirect(base_url().'datos/traer_tabla/'.$id, 'refresh');
这意味着您正在将参数“id”传递给函数traer_tabla。如果您希望传递该变量,您希望使函数像这样接收该变量

function traer_tabla($id,$number)
{
//code goes here
}
类似地,如果您不想在会话中存储您的号码,您可以如上所述通过url传递它


如果有任何疑问,请随时告诉我。

找到了解决方案。我使用的不是set\u flashdata(),而是set\u userdata()。现在,它返回到表中,刷新时,表继续显示

当我选择要编辑的用户时,还添加了unset_userdata()


感谢您的帮助。

无任何内容。如果功能中有die,单击“提交”后,将显示一个空白页。如果没有,编辑后将显示相同的未定义变量消息。并且,script2是Realizar_datos还是视图?那么您是否使用表单重定向?也许您应该将表单标记添加到已发布的表单中。已管理到页面但是我相信这不是问题的真正解决方案。显然,如果用户刷新,数据将丢失,未定义的变量消息将重新出现。这就是我在回答中建议您接受的答案,因为它将帮助其他需要的用户。