通过URL发送值并重定向到另一个URL

时间:2019-01-29 12:02:16

标签: php codeigniter

我正在Codeigniter中进行datable的工作。我想更新数据表中的值。我被卡在下面是我的代码。

下面是我的视图代码,在其中单击编辑按钮后,我已将id值传递给控制器​​App中的edituser函数。

<table id="user_table" class="display">
<thead>
 <td>Id</td>
 <td>Email</td>
 <td>Password</td>
 <td>Action</td>
</thead>
<tbody>    
 <?php 
 foreach ($rows as $row)
 {
   ?>
 <tr>
  <td>
   <?= $row->id ?>
  </td>      
  <td>
   <?= $row->email ?>
  </td>
  <td>
   <?= $row->password ?>
  </td>

  <td>
<a href="app/edituser/<?php echo $row->id ?>"><button id="btn_edit_user" type="button" class="btn btn-primary">Edit</button></a>
</td>
</table>

因此它返回一个带有此URL“ this”的404页面 它正在返回ID,但我想通过控制器重定向到另一个页面。

下面是我的控制器代码。

public function edituser(){ 
    $user_id = $this->uri->segment(3);
    //$user_id = $this->input->post("user_id");

    if(!empty($user_id)){
        $data["page"] = "edituser";
        $data["row"] = $this->crud->read_row("*", "user", array("id" => $user_id));
    }
    else{
        $data["page"] = "404";
    }

    $this->load->view("app/index", $data);
}

4 个答案:

答案 0 :(得分:1)

像这样在application/config/autoload.php文件中添加URL助手

$autoload['helper'] = array('url');

假设您已正确创建.htaccess文件,并且index.php已从您的网址中删除。

现在使用base_url()从视图中调用控制器功能

<a href="<?= base_url('app/edituser/'.$row->id)"><button id="btn_edit_user" type="button" class="btn btn-primary">Edit</button></a>

答案 1 :(得分:0)

尝试一下: id?>“>编辑 要么 ID'); ?>“>编辑

答案 2 :(得分:0)

<a href="**<?php echo base_url().index_page()."/app/edituser/".$row['id']?>**">
   <button id="btn_edit_user" type="button"class="btn btn-primary">
     Edit
   </button>
</a>

IN controller you can access this like

function edituser($id=''){
 "your query"
}

答案 3 :(得分:0)

我在这里没有得到实际的问题。为了使它起作用,您需要在Apache服务器上具有一个启用了mod_rewrite的.htaccess文件,我想您已经拥有了。当使用这样的URL时,您应该具有某种URIDispatcher类,以清楚地查看请求的URL中的每个细节。因此,这里的事情是您检查了几件事,然后根据代码对它们的响应方式对其进行纠正:

URI是否正确形成?

首先,在您的Controller脚本上,检查REQUEST_URI是否正确,并在脚本的开头键入以下内容:

<?php

die($_SERVER['REQUEST_URI']);

URI是否正确形成?提取ID

当您使用不带参数的URL(base_uri?id=1)时,让我们使用explode()方法来分隔孔URI:

$uri_array = explode('/', $_SERVER['REQUEST_URI']);

由于您的URI为/website/app/app/edituser/1,因此您现在将拥有一个位置为0的数组,其中包含一个空String。这是正常的行为,只需使用$final_uri_array = array_filter($uri_array);请注意,如果array_filter()为零,请删除ID。。如果一切正常,则ID应位于$final_uri_array[4]中。现在,让我们检查一下Controller。

检查值并重定向

您在控制器上的代码可能是这样的:

<?php

//Your stuff

public function edituser(){
  $final_uri_array = array_filter( explode('/', $_SERVER['REQUEST_URI']) );

  if(sizeof($final_uri_array) < 5){
    //400 Bad request
    http_response_code(400);
  } else {
    /*
     * Check ID existence from your database
     * Should look womething like this
     */
    $user_id = intval($final_uri_array[4]);
    $user_data = $database->search($user_id);
    if($user_data->num_rows > 0){
      //If the user was found, redirect to a page
      header('Location: /your/edit/view/uri');
    } else {
      //404 Not found
      http_response_code(404)
    }
  }

}

//More stuff