#php #codeigniter
#php #codeigniter
Вопрос:
Когда я нажимаю сохранить значение обслуживания, если я нажимаю да, изменения сохраняются в db 1 и и 0 для no.
Но теперь он по какой-то причине застрял на 1 и не изменит значение строки обслуживания конфигурации с 1 на 0
Контроллер
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Setting extends MX_Controller {
public function __construct(){
parent::__construct();
$this->load->library('user');
$this->load->library('form_validation');
$this->lang->load('english', 'english');
$this->lang->load('setting/setting', 'english');
$this->load->model('setting/model_setting');
if($this->session->userdata('logged_in') == FALSE) {
redirect('/');
}
}
public function index() {
$data['title'] = $this->lang->line('heading_title');
if (($this->input->server('REQUEST_METHOD') == 'POST') amp;amp; $this->validate()) {
$this->model_setting->editSetting('config', $this->input->post());
redirect('store');
}
$data['heading_title'] = $this->lang->line('heading_title');
$data['text_yes'] = $this->lang->line('text_yes');
$data['text_no'] = $this->lang->line('text_no');
$data['entry_maintenance'] = $this->lang->line('entry_maintenance');
$data['help_maintenance'] = $this->lang->line('help_maintenance');
$data['button_save'] = $this->lang->line('button_save');
$data['button_cancel'] = $this->lang->line('button_cancel');
$data['tab_general'] = $this->lang->line('tab_general');
$data['tab_server'] = $this->lang->line('tab_server');
$data['breadcrumbs'] = array();
$data['breadcrumbs'][] = array(
'text' => $this->lang->line('text_home'),
'href' => site_url('dashboard')
);
$data['breadcrumbs'][] = array(
'text' => $this->lang->line('heading_title'),
'href' => site_url('setting')
);
$data['action'] = site_url('setting');
if (null !==($this->input->post('config_maintenance'))) {
$data['config_maintenance'] = $this->input->post('config_maintenance');
} else {
$data['config_maintenance'] = $this->input->get('config_maintenance');
}
$this->load->view('setting/setting', $data);
}
public function validate() {
}
}
Модель
<?php
class Model_setting extends CI_Model {
public function getSetting($group, $store_id = 0) {
$data = array();
$query = $this->db->query("SELECT * FROM " . $this->db->dbprefix . "setting
WHERE store_id = '" . (int)$store_id . "' AND `group` = " . $this->db->escape($group) . "
");
foreach ($query->row() as $result) {
if (!$result['serialized']) {
$data[$result['key']] = $result['value'];
} else {
$data[$result['key']] = unserialize($result['value']);
}
}
return $data;
}
public function editSetting($group, $data, $store_id = 0) {
$this->db->query("DELETE FROM " . $this->db->dbprefix . "setting
WHERE store_id = '" . (int)$store_id . "' AND `group` = " . $this->db->escape($group) . "
");
foreach ($data as $key => $value) {
if (!is_array($value)) {
$this->db->query("INSERT INTO " . $this->db->dbprefix . "setting
SET store_id = '" . (int)$store_id . "',
`group` = " . $this->db->escape($group) . ",
`key` = " . $this->db->escape($key) . ",
`value` = " . $this->db->escape($value) . "
");
} else {
$this->db->query("INSERT INTO " . $this->db->dbprefix . "setting
SET store_id = '" . (int)$store_id . "',
`group` = " . $this->db->escape($group) . ",
`key` = " . $this->db->escape($key) .",
`value` = " . $this->db->escape(serialize($value)) . ",
serialized = '1'
");
}
}
}
public function editSettingValue($group = '', $key = '', $value = '', $store_id = 0) {
if (!is_array($value)) {
$this->db->query("UPDATE " . $this->db->dbprefix . "setting SET `
value` = ". $this->db->escape($value) ."
WHERE `group` = " . $this->db->escape($group) . "
AND `key` = " . $this->db->escape($key) . " AND store_id = '" . (int)$store_id . "'");
} else {
$this->db->query("UPDATE " . $this->db->dbprefix . "setting SET `
value` = ". $this->db->escape(serialize($value)) ."
WHERE `group` = ". $this->db->escape($group) ."
AND `key` = " . $this->db->escape($key) . " AND store_id = '" . (int)$store_id . "'
AND serialized = '1'");
}
}
}
Ответ №1:
Я не буду утверждать наверняка, но похоже, что у вас нет никаких проверок при вызове вашей функции editSettings:
if($this->input->server('REQUEST_METHOD') == 'POST')
Возможно, вам следует добавить переменную URL или «удалить»? Установите флажок, чтобы убедиться, что оно установлено как соответствие, которое вы хотите что-то удалить. При вызове этой функции каждый раз, когда форма отправляется, независимо от каких-либо значений в форме, вызывается эта функция editSettings, которая удаляет объекты.
Комментарии:
1. Мне не нужно проверять, это не обязательно
2. ну, тогда я не уверен в вашей проблеме. Вы заявили, что строки удалялись из таблицы при отправке, и это была проблема, основанная на вашем единственном
DELETE FROM
заявлении, которое можно было бы ожидать, и я хотел бы отметить, что я считаю грубым с вашей стороны -1 ваш первый и все еще единственный ответ только потому, что вопрос был неправильно понят, время все еще ушло на попытку ответить на ваш вопрос.3. Я изменил if (($this-> input-> server(‘REQUEST_METHOD’) == ‘POST’) amp;amp; $this-> validate()) и прекратил удаление строк. но когда я нажимаю на кнопку сохранения, значение config_maintenance не изменяется с 1 на 0 ноль, что означает отключение обслуживания
4. Итак, проверка устранила первоначальную проблему, но вызвала другую проблему?
5. ДА. Не изменяет значение с 1 на 0 и не перенаправляет после сохранения. обслуживание конфигурации не требует каких-либо проверок проверки, я создал функцию под индексом с именем public function validate()