使用Codeigniter将具有会话数据的数据插入数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Codeigniter将具有会话数据的数据插入数据库相关的知识,希望对你有一定的参考价值。

我在解决这个问题时遇到了麻烦,我想使用输入函数保存搜索到的数据并将其id传递给控制器​​,但是我遇到了问题,

这是我的控制器:

function add($id){
            $this->point_m->addStudentSection($id);
            redirect('admins_view/points/index');
        }

这是我的模特:

function addStudentSection($id){
        $arr['section_id'] = $this->session->userdata('section_id');
        $arr['dateadded'] = $this->input->post('dateadded');
        $arr['schoolyear'] = $this->input->post('schoolyear');
        $arr['semester'] = $this->input->post('semester');
        $arr['point'] = $this->input->post('point');

        $this->db->where('student_id',$id);
        $this->db->insert('section_student',$arr);


    }

如果上面的模型是错误的,这里是我正在使用的其他模型函数,我也在使用sqlsrv作为我的数据库。

function addStudentSection($id){
            $arr['section_id'] = $this->session->userdata('section_id');
            $arr['dateadded'] = $this->input->post('dateadded');
            $arr['schoolyear'] = $this->input->post('schoolyear');
            $arr['semester'] = $this->input->post('semester');
            $arr['point'] = $this->input->post('point');

            $query = $this->db->query("

                INSERT INTO [dbo].[section_student]
               ([student_id]
               ,[section_id]
               ,[dateadded]
               ,[schoolyear]
               ,[semester]
               ,[point])
                VALUES
               ('$id'
               ,'$section_id'
               ,'$dateadded'
               ,'$schoolyear'
               ,'$semester'
               ,'$point')

                ");


        }

所以在这个模型中我想使用我的section_id这是一个会话

这是我的看法:

<table class="table">
  <tr>
    <th>ID Number</th>
    <th>Firstname</th>
    <th>Middlename</th>
    <th>Lastname</th>
    <th>Total Points</th>
    <th>Action</th>
  </tr>
  <?php
    foreach ($pt as $p) {
  ?>
    <tr>
      <!-- echo query with join -->
      <td><?php echo $p->idnumber ?></td>
      <td><?php echo $p->firstname ?></td>
      <td><?php echo $p->middlename ?></td>
      <td><?php echo $p->lastname ?></td>
      <td><?php echo $p->point ?></td>
      <td>
        <a href="<?php echo site_url('admins/point/add').'/'.'$p->id';?>" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">Add</a> 
        <a href="#" class="btn btn-danger">Redeem</a>
      </td>
    </tr>
    <?php
    }
  ?>
</table>

在此表中显示了来自我的显示功能的所有搜索和检索数据,因为您可以看到切换按钮是一个模态。这是我的模态:

<!-- Modal -->
<form method="post" action="<?php echo base_url();?>admins/point/add">
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Add Point/s</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
          <label>Date</label>
          <input type="date" name="dateadded" class="form-control">
          <label>School year</label>
          <select name="schoolyear" class="form-control">
          <option value="2018-2019">2018-2019</option>
          <option value="2019-2020">2019-2020</option>
          </select>
          <label>Semester</label>
          <select name="semester" class="form-control">
            <option value="1st">First Semester</option>
            <option value="2nd">Second Semester</option>
            <option value="summer">Summer</option>
          </select>
            <label>Points</label>
            <input type="text" name="point" class="form-control">
      </div>
      <div class="modal-footer">
        <button type="submit" class="btn btn-primary">Save changes</button>
        <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>
</form>

这是错误回应.. this is the error希望社区中的任何人都可以帮助我。

答案

因为你的控制器添加($ id)预期的1个参数,那么在模态视图中你不能像这样设置表单动作:

<form method="post" action="<?php echo base_url();?>admins/point/add">

将表单操作更改为:

<form method="post" action="<?php echo base_url();?>admins/point/add/$id">

用你的参数改变$id

这里是docs

另一答案

您应该在视图的表单操作末尾添加id。

或者您可以将其从控制器中的功能中删除并将其作为隐藏输入发布

所以改变你的观点

<form method="post" action="<?php echo base_url();?>admins/point/add/$id">

或转到您的控制器并将其更改为

function add($id = null){
    if($id == null){
        $id = $this->input->post('id');
    }
}

然后在形成这样的关闭标记之前,为您的视图添加一个新的隐藏输入

<?php echo form_hidden('id',$the_id);?>

以上是关于使用Codeigniter将具有会话数据的数据插入数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 codeigniter 将具有相同输入名称的表单输入插入数据库行

如何使用 Codeigniter 将 JQuery datepicker 中的值插入 MySQL 日期数据类型?

Codeigniter 3 - 会话库

Codeigniter:如何使用数据库和用户会话数据构建多语言网站?

codeigniter 覆盖来自非 ci 应用程序的会话数据

使用codeigniter将数据插入数据库