Intereting Posts
Включить все функции в php-файл, который мне нужен, или только те функции, которые мне нужны? Установите сеанс / файл cookie на 24 часа, чтобы показывать что-то только один раз в день пользователям PHP-почта с кодировкой utf-8 отображается неправильно в почтовых клиентах Microsoft Как вы можете сравнивать наборы чисел и получать наиболее релевантные результаты с использованием MySQL и PHP? Предупреждение: входные переменные превысили 1000 Лучший способ обрабатывать парсинг / декодирование электронной почты в PHP? Laravel 5 Class 'Collective \ Html \ HtmlServiceProvider' не найден на AWS PHP RegEx Группировка нескольких совпадений Почему «эхо» 2? print (2) + 3 "print 521? как сделать печатную версию веб-страницы? Изоляция в PHP? я могу добавить массив в предложение where для update_batch в codeigniter как сохранить профиль пользователя pic в facebook с помощью php Как заполнить modified_by с помощью user_id того, кто сделал обновление записи, используя laravel 5.1? php удаляет дубликаты из массива

codeigniter- вставить данные в db не работает

Когда я нажимаю кнопку отправки, я продолжаю получать сообщение «Ваше меню не было добавлено, попробуйте еще раз», пока код работал должным образом, но после того, как он зафиксировал его на svn, он не работал, и данные вставлялись в 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> 

Solutions Collecting From Web of "codeigniter- вставить данные в db не работает"

Прежде чем идти дальше в своем проекте; включить отчет об ошибках

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

проверки

Убедитесь, что вы загрузите помощника формы и помощника 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

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