Я использую CodeIgniter для получения элементов JSON из базы данных, а также их вставки. Я изначально создал его после учебника на сайте CodeIgniter, который использует форму для отправки данных в базу данных и работает правильно. Я пытаюсь изменить этот код, чтобы вы могли писать в базу данных, поместив значения полей в строку URL. Итак, чтобы получить данные, это http://www.mcbiscuit.com/index.php/robots/. Это вызывает контроллер Robots.Как вставить элементы в базу данных с помощью параметров URL с помощью CodeIgniter?
Вы также можете поставить http://www.mcbiscuit.com/robots/(Name), чтобы увидеть запись базы данных для этого робота. Мне нужно исправить метод set, чтобы вы могли использовать такой URL-адрес http://www.mcbiscuit.com/robots/create/(Name)/(StarsIn)/(Function), чтобы записать запись с этими данными в базу данных, но что бы я ни делал, она передает значения NULL для них. Как я могу правильно вставить записи? Я прочитал все, что могу, о написании в базах данных с PHP и вызовах API CodeIgniter и т. Д., И я не могу найти решение.
контроллер код:
<?php
class Robots extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('robot_model');
$this->load->helper('url_helper');
}
public function index()
{
header('Content-type: application/json');
echo json_encode($this->robot_model->get_robots(), JSON_PRETTY_PRINT);
//$data['Robots'] = $this->robot_model->get_robots();
//$data['title'] = 'Robots';
$this->load->view('robots/index');
}
public function view($name = NULL)
{
header('Content-type: application/json');
echo json_encode($this->robot_model->get_robots($name), JSON_PRETTY_PRINT);
$this->load->view('robots/view');
}
public function create($name, $starsIn, $function)
{
$this->robot_model->set_robots($name, $starsIn, $function);
$this->load->view('robots/success');
}
}
Код модели:
<?php
class Robot_model extends CI_Model {
public function __construct()
{
$this->load->database();
}
public function get_robots($name = FALSE)
{
if ($name === FALSE)
{
$query = $this->db->get('Robots');
return $query->result_array();
}
$query = $this->db->get_where('Robots', array('Name' => $name));
return $query->row_array();
}
public function set_robots($name, $starsIn, $function)
{
//$data = parse_str($_SERVER['QUERY_STRING'], $_GET);
$data = array(
'Name' => $this->input->post('name'),
'StarsIn' => $this->input->post('starsIn'),
'Function' => $this->input->post('function')
);
var_dump($data);
return $this->db->set('Robots', $data);
}
}
код маршрутизации, потому что я не уверен, что это правильно:
$route['robots/create'] = 'robots/create';
$route['robots/(:any)'] = 'robots/view/$1';
$route['robots'] = 'robots';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
Вы можете использовать [$ this-> uri- > сегмент ($ n)] (https://codeigniter.com/userguide3/libraries/uri.html#CI_URI::segment) или [$ this-> uri-> rsegment ($ n)] (https: // codeigniter .com/userguide3/libraries/uri.html # CI_URI :: rsegment), чтобы достичь этих значений. Кроме того, поместите контроллер по умолчанию в начало файла ** routes.php **. [Последняя строка в документе] (https://codeigniter.com/userguide3/general/routing.html): * Зарезервированные маршруты должны появляться перед любыми шаблонами подстановочных знаков или регулярных выражений. * – Tpojka
Спасибо! Я изменил маршрут. –
Нет проблем. Самое главное, что вы решили свою проблему. #SOreadytohelp – Tpojka