2015-06-10 3 views
0

Когда я нажимаю кнопку отправки, я продолжаю получать сообщение «Ваше меню не было добавлено, попробуйте еще раз», пока код работал правильно, но после того, как он зафиксировал его на svn, его не работает и данные, вставляемые в БДcodeigniter- вставить данные в db не работает

контроллер:

public function addmenu() { 

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

    $data = array(

       $data['email']=$this>session>userdata('email'); 
       'menu_name' => $posted_data['menu name'], 
       'price' => $posted_data['price'] 
      ); 

      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'); 
    } 

} 

Модель:

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; 
    } 

} 

Вот вид:

<div class="widget-body"> 
       <?php echo $this->session->flashdata('message'); ?> 

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

        <div class="control-group"> 
        <label class="control-label" for="name"> 
        Menu Name 
        </label> 
        <div class="controls controls-row"> 
         <input class="span3" name="data[menu name]" 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> 
    </div> 
+0

У вас нет электронной почты в массиве $ data, поэтому запрос возвращает 0 строк. Проверьте это –

+0

отредактировал его в соответствии. – ahmad

ответ

0

Прежде чем идти дальше в своем проекте; turn on error reporting

array(
    $data['email']=$this>session>userdata('email'); 
    'menu_name' => $posted_data['menu name'], 
    'price' => $posted_data['price'] 
); 

Это не правильный синтаксис.

Что вы, скорее всего, хотели этого.

array(
    'email' => $this->session->userdata('email'), 
    'menu_name' => $posted_data['menu name'], 
    'price' => $posted_data['price'] 
); 
+1

Получил его, но я все еще сохраняю ошибку Неопределенная переменная: posted_data для обоих имя_имя и цена – ahmad

+0

Попробуйте изменить его на 'menu_name' = $ this-> input-> post ('menu name'); и другой, а также –

+0

Я не знаю, откуда должен вызываться '$ published_data'. Вам нужно будет предоставить эту переменную 'addmenu()' каким-то образом. – castis

0

Проверка

Убедитесь, что вы загрузите форму помощник и помощник URL.

Убедитесь, что вы используете проверку формы при отправке формы в codeigniter на контроллере.


С этого PHP руководство пользователя здесь http://php.net/manual/en/reserved.variables.post.php

примера на вашем входе будет как человека [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

Также вы должны перейти на новую загрузку, я вижу, что вы используете ol й версии.