簡體   English   中英

Codeigniter表單未提交數據

[英]codeigniter form not submitting data

我已經嘗試了所有可以想到的方法,但是每當我單擊“提交”時,表單都會傳遞一個空值,我不知道這是表單,控制器還是視圖的問題。 我將this-> input-> post更改為已發布數據,但收到未定義變量已發布數據的錯誤,請幫忙。

控制器:

 public function addmenu(){

    $this->load->model('organizer_model');

    $data = array(
                'menu_name' => $this->input->post('menu name'), 
                'price' => $this->input->post('price'),
                'email' => $this->session->userdata('email')

            );

            if($this->organizer_model->insertmenu($data)) {

    $this->session->set_flashdata('message', 'Your menu has been added');
    redirect('/menu/index', 'refresh');

    } else {

    $this->session->set_flashdata('message', 'Your menu was not added, please try again');
    redirect('/menu/index', 'refresh');
    }

視圖:

              <form action="<?php echo site_url('Organizer/addmenu'); ?>" method="post" class="form-horizontal no-margin">

                  <div class="control-group">
                    <label class="control-label" for="menuname">
                     Menu Name
                    </label>
                    <div class="controls controls-row">
                      <input class="span3" name="data[menuname]" type="text" placeholder="Enter menu Name">
                    </div>
                  </div>

                  <div class="control-group">
                    <label class="control-label" for="price">
                      Price
                    </label>
                    <div class="controls controls-row">
                      <input class="span3" name="data[price]" type="text" placeholder="">
                    </div>
                  </div>

                  <div class="form-actions no-margin">
                    <button type="submit" name="submit" class="btn btn-info pull-right">
                      Add menu
                    </button>
                    <div class="clearfix">
                    </div>
                  </div>

                </form>

模型:

   public function insertmenu($data) {

    $condition = "email = '" . $data['email'] . "'";
    $this->db->select('organizer_id');
    $this->db->from('organizer');
    $this->db->where($condition);
    $this->db->limit(1);
    $query = $this->db->get();

    if ($query->num_rows() > 0){

        array_pop($data); //will remove email from data

        $row = $query->row();
        $data['organizer_id'] = $row->organizer_id;

        $this->db->insert('menu', $data);
        if ($this->db->affected_rows() > 0) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }

}

我在這里注意到相同的問題codeigniter-將數據插入數據庫不起作用

支票

確保加載表單幫助器和URL幫助器。

確保在控制器上的codeigniter中提交表單時使用表單驗證。


從這里的php用戶指南中http://php.net/manual/en/reserved.variables.post.php

您輸入的示例類似於person [0] [first_name]

<form action="" method="">
    <input type="text" name="data_posts[0][menu_name]" placeholder="Enter menu Name">
    <input type="text" name="data_posts[0][price]"  placeholder="">
</form>

模型

<?php

class Model_something extends CI_Model {

public function add_menu() {
    $data_posts = $this->input->post('data_posts');

    foreach ($data_posts as $data_post) {
        $data = array(
            'email' => $this->session->userdata('email'),
            'menu_name' => $data_post['menu_name'],
            'price' => $data_post['price']
        );

        $this->db->insert('tablename', $data);
    }
}

}

控制者

<?php 

class Add_menu extends CI_Controller {

    public function index() {
        $this->load->helper('form');
        $this->load->helper('url');
        $this->load->library('form_validation');

        $data_posts = $this->input->post('data_posts');

        foreach ($data_posts as $data_post) {
            $this->form_validation->set_rules('data_posts['.$data_post.'][menu_name]', 'Menu Name', 'required');
            $this->form_validation->set_rules('data_posts['.$data_post.'][price]', 'Price', 'required');
        }

        if ($this->form_validation->run() == FALSE) {
            $this->load->view('some_view');
        } else {
            $this->load->model('model_something');
            $this->model_something->add_menu();
            redirect('to_success_page');
        }
    }
}

您還可以使用回調函數檢查是否已插入

Codeigniter 3用戶指南表單驗證http://www.codeigniter.com/user_guide/libraries/form_validation.html

Codeigniter 2用戶指南表單驗證http://www.codeigniter.com/userguide2/libraries/form_validation.html

另外,您應該升級到新的引導程序,我看到您使用的是舊版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM