#php #mysql #codeigniter
#php #mysql #CodeIgniter
Вопрос:
Здесь кошмар, и я не могу понять, что не так. В принципе, у меня есть настройка codeigniter, которая выполняет пару запросов к базе данных, но по какой-то причине она, похоже, не работает в первый раз после обновления.
Итак, это то, что происходит в данный момент: я отправляю форму, и данные формы поступают в базу данных правильно, однако $property_id заканчивается пустым в функции createInitialTenancy(), а $ tenancy_id заканчивается пустым в функции insertBasicInfo() .
Если я затем снова отправлю форму (либо отправив без обновления, либо обновив), то оба эти значения будут заполнены.
Кто-нибудь может объяснить причину этого?
Контроллер:
public function new($property_id) {
// Check for a property ID. Redirect to dashboard if none present.
if(!$property_id) {
redirect(base_url());
}
// Check for the form having been submitted
if ($this->input->post()) {
// Strip form data for XSS
$form_data = $this->security->xss_clean($this->input->post());
// Create the initial tenancy entry in the database
$tenancy_data['property_id'] = $property_id;
$tenancy_id = $this->tenancy_model->createInitialTenancy($tenancy_data);
// Empty tenant array. We've dealt with this elsewhere
unset($form_data['tenant']);
// Insert the data to the tenancy.basic_info database
$form_data['lead_tenant_id'] = $_SESSION["tenant_id"];
$form_data['property_id'] = $property_id;
$form_data['tenancy_id'] = $tenancy_id;
$this->tenancy_model->insertBasicInfo($form_data);
}
// Security token required for the form
$csrf = array(
'name' => $this->security->get_csrf_token_name(),
'hash' => $this->security->get_csrf_hash()
);
$this->load->view('header-signin');
$this->load->view('tenant/tenancy/new', $csrf);
$this->load->view('footer-signin');
}
Модель:
class Tenancy_model extends CI_Model {
function __construct() {
$this->load->database();
parent::__construct();
}
public function insertBasicInfo($form_data) {
$this->db->insert('tenancy_basic_info', $form_data);
}
public function createInitialTenancy($data) {
$this->db->insert('tenancy_tenancy', $data);
return $this->db->insert_id();
}
public function getTenancyByPropertyID($property_id) {
$this->db->select('id');
$this->db->from('tenancy_tenancy');
$this->db->where('property_id', $property_id);
$tenancy = $this->db->get()->result();
return $tenancy;
}
}
Таблица tenancy_tenancy:
CREATE TABLE `tenancy_tenancy` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`property_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8;
Таблица tenancy_basic_info:
CREATE TABLE `tenancy_basic_info` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`tenancy_id` int(11) DEFAULT NULL,
`lead_tenant_id` int(11) NOT NULL,
`property_id` int(11) NOT NULL,
`more-tenants` int(11) NOT NULL,
`pets` int(11) NOT NULL,
`pets_info` text,
`cars` int(11) NOT NULL,
`number_of_cars` int(11) NOT NULL,
`information` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8;
Комментарии:
1. Может быть или не быть проблемой, но
new
это ключевое слово PHP, и поэтому его не следует использовать в качестве имени функции. Документация2. @DFriend не исправил это: (
3. Слишком много вопросов относительно того, чего вы пытаетесь достичь здесь … поэтому для начала я предлагаю вам сначала изучить формы Codeigniters и проверку формы в руководстве пользователя. т.е. Вы не выполняете никакой проверки.
4. @TimBrownlaw Я думаю, что я только что обнаружил, что это проблема Sequel Pro. Я думаю, что данные на самом деле там просто не отображаются по какой-то причине!
5. Итак, этот метод является действием вашей формы?