Вставка значений формы в таблицу не работает в codeigniter

Я пытаюсь вставить значения формы в свою таблицу. Я не знаю, почему он не публикует значения, которые дают мне значения ошибок, не могут быть нулевыми Я уверен, что я упомянул правильные значения таблицы в своей форме, может ли кто-нибудь проверить, какую ошибку я сделал

Вот моя кнопка:

<td><form action = "<?php echo base_url();?>Dashboard/ReviewManagement" method = "POST">
    <input type = "hidden" name = "topicid" value = "<?php echo $proview->id;?>">
    <input type = "hidden" name = "courseid" value = "<?php echo $proview->courseId;?>">
    <button type = "submit" class = "btn btn-xs btn-warning" >
        <span class = "icon-ok"></span>
    </button>
</form></td>

Вот мой контроллер:

public function ReviewManagement() {

    $username = $this->session->userdata('user_name');
    $data['userslist'] = $this->Dashboard_model->getUsers();

        $insert_data = array(
            'topicid' =>$this->input->post('topicid'),
            'stage' => $this->input->post('stage'),
            'allocatedresource' => $this->input->post('allocatedresource'),
            'status' => 1,
            'createdby' => $username,
            'createdon' => date('d/m/Y'),
            'expec' =>$this->input->post('expec')

        );

        $this->Dashboard_model->reviewmanagerInsert($insert_data);
        $this->load->view('template/header');
            $this->load->view('dashboard/reviewmanagement',$data);
            $this->load->view('template/footer'); 
        }

Here is my model:

    public function reviewmanagerInsert($data)
    {
   $this->db->insert('reviewmanager',$data); 
}

Вот мой взгляд:

  <form action = "<?php echo base_url();?>Dashboard/ReviewManagement" method = "post">
        <div class = "form-row">
            <div class = "col-md-3">Reviewer:</div>
            <div class = "col-md-9"> 
                <select name = "allocatedresource" class = "form-control">
                   <option value = "0">Select Reviewer</option>
                <?php foreach ($userslist as $users) { ?>
                    <option value = "<?php echo $users->id; ?>"><?php echo $users->username; ?></option>
                <?php } ?>
            </select>
            </div>
        </div>
        <div class = "form-row">
            <div class = "col-md-3">Stage:</div>
            <div class = "col-md-9"> 
                <select class = "form-control col-md-8" name = "stage" required = "">
                    <option value = "" selected = "">Select Stage</option>
                    <option value = "1">PB Review</option>
                    <option value = "2">PB2 Review</option>
                    <option value = "3">Alpha Review</option>
                    <option value = "4">Beta Review</option>
                    <option value = "5">Gamma Review</option>
                </select>
            </div>
        </div>

        <div class = "form-row">
            <div class = "col-md-3">Due Date:</div>
            <div class = "col-md-9">
                <div class = "input-group">
                    <div class = "input-group-addon"><span class = "icon-calendar-empty"></span></div>
                    <input type = "text" name = "expec" autocomplete = "off" required = "" class = "datepicker form-control" value = ""/>
                </div>
            </div>
        </div>
        <div class = "form-row">
            <div class = "col-md-8 col-md-offset-2">
                <button type = "submit" class = "btn btn-primary btn-block">Assign</button>             
            </div>
        </div>
    </form>

Получил эту ошибку:

Column 'topicid' cannot be null

INSERT INTO `reviewmanager` 
            (`topicid`, `stage`, `allocatedresource`, 
            `status`, `createdby`, `createdon`, `expec`) 
    VALUES (NULL, NULL, NULL, 1, 'admin', '16/08/2018', NULL)

Может ли кто-нибудь помочь мне в том, какую ошибку я совершил

Заранее спасибо.

🤔 А знаете ли вы, что...
PHP поддерживает работу с куки для управления данными между запросами.


46
3

Ответы:

Используйте только одну форму со скрытыми полями и присваивайте значения этим скрытым полям, используя jquery, например

Ваш вид кнопки

<td>
    <div id = "topicid" value = "<?php echo $proview->id;?>"></div>
    <div id = "courseid" value = "<?php echo $proview->courseId;?>"></div>
    <button type = "button" class = "btn btn-xs btn-warning" >
        <span class = "icon-ok" id = "submit"></span>
    </button>
</td>

И в вашей основной форме добавьте ниже скрытые поля

<input type = "hidden" name = "topicid" id = "topic_id">
<input type = "hidden" name = "courseid" id = "course_id">

Затем добавьте ниже js для присвоения значений

$(document).ready(function(){
    $("#submit").click(function(){
        var topicid = $("#topicid").val();
        var courseid = $("#courseid").val();
        $("#topic_id").val(topicid);
        $("#course_id").val(courseid);
    });
});

Однако этот ответ не проверен.


Просто добавьте ниже два ввода внутри вашей формы ...

<input type = "hidden" name = "topicid" id = "topic_id">
<input type = "hidden" name = "courseid" id = "course_id">

решил это, как показано ниже

<td><form action = "<?php echo base_url();?>Dashboard/ReviewManagement" method = "POST">
                                                    <input type = "hidden" name = "topicid" value = "<?php echo $proview->id;?>">
                                                    <input type = "hidden" name = "courseid" value = "<?php echo $proview->courseId;?>">
                                                    <button type = "submit" class = "btn btn-xs btn-warning" >
                                                        <span class = "icon-ok"></span>
                                                    </button>
                                                </form></td>

Изменено второе, как показано ниже

<form action = "<?php echo base_url();?>Dashboard/ReviewManagementInsert" method = "post">
                <div class = "form-row">
                    <div class = "col-md-3">Reviewer:</div>
                    <div class = "col-md-9"> 
                        <select name = "allocatedresource" class = "form-control">
                           <option value = "0">Select Reviewer</option>
                        <?php foreach ($userslist as $users) { ?>
                            <option value = "<?php echo $users->username; ?>"><?php echo $users->username; ?></option>
                        <?php } ?>
                    </select>
                    </div>
                </div>

Код контроллера1:

public function ReviewManagement() {

    if ($this->session->userdata('is_logged')) {
        if (!empty($this->input->post('topicid'))) {
            $id = $this->input->post('topicid');
            $data['userslist'] = $this->Dashboard_model->getUsers();
            $data['id'] = $this->input->post('topicid');
            $this->session->set_userdata('topicid', $data['id']);
            $this->load->view('template/header');
            $this->load->view('dashboard/reviewmanagement', $data);
            $this->load->view('template/footer');
        } elseif (!empty($this->session->userdata('topicid'))) {
            $id = $this->session->userdata('topicid');
            $data['userslist'] = $this->Dashboard_model->getUsers();
            $data['id'] = $this->session->userdata('gettopicdetails');
            $this->load->view('template/header');
            $this->load->view('dashboard/reviewmanagement', $data);
            $this->load->view('template/footer');
        } else {
            echo 'im else';
            die;
        }
    } else {
        $this->session->set_flashdata('error', 'Topic Id not captured.');
        redirect('Dashboard');
    }
}

Код контроллера 2

public function ReviewManagementInsert() {
    $topicid = $this->session->userdata('topicid');
    $username = $this->session->userdata('user_name');


    $insert_data = array(
        'topicid' => $topicid,
        'stage' => $this->input->post('stage'),
        'allocatedresource' => $this->input->post('allocatedresource'),
        'status' => 1,
        'createdby' => $username,
        'createdon' => date('d/m/Y'),
        'expec' => $this->input->post('expec')
    );

    $this->Dashboard_model->reviewmanagerInsert($insert_data);
    $this->load->view('template/header');
    $this->load->view('dashboard/reviewmanagement');
    $this->load->view('template/footer');
}