Я использую сеанс базы данных Codeigniter. У меня есть поисковая навигация в заголовке моей страницы, которая содержит поиск с и по дате и текстовое поле.
У меня также есть разбиение на страницы на странице. Я использую настраиваемый контроллер (MY_Controller), и я устанавливаю здесь и из дат. Смотри ниже.
public function __construct()
{
parent::__construct();
$this->load->model('News_model');
$this->set_dates();
}
function set_dates()
{
if (empty($this->input->post('from_date')))
{
$this->session->set_userdata('sel_from_date', date('Y-m-d'));
}
else
{
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$this->session->set_userdata('sel_from_date', $this->input->post('from_date'));
}
}
if (empty($this->input->post('to_date')))
{
$this->session->set_userdata('sel_to_date', date('Y-m-d'));
}
else
{
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$this->session->set_userdata('sel_to_date', $this->input->post('to_date'));
}
}
}
Это прекрасно работает, даже когда я вводил даты в поля и/или в поле и нажимаю "Отправить", правильные даты остаются в полях поиска. Однако, когда я нажимаю на ссылку для следующей страницы (в разбивке на страницы), которая в основном добавляет другой сегмент к URL-адресу (т.е. mysite/news/policy/1) и загружает страницу, даты в сеансе user_data сбрасываются. Я подумал, что, возможно, логика выше для пустых дат ввода была выполнена снова в этом случае, но это не так.
HTML:
<div class="form-group">
<label for="from_date" class="col-sm-2 control-label">From Date:</label>
<div class="col-sm-6">
<input type="text" placeholder="From Date" class="form-control" name="from_date" id="from_date" width=10" value="<?php echo $this->session->userdata('sel_from_date'); ?>" />
</div>
</div>
<div class="form-group">
<label for="to_date" class="col-sm-2 control-label">To Date:</label>
<div class="col-sm-6">
<input type="text" placeholder="To Date" class="form-control" name="to_date" id="to_date" value="<?php echo $this->session->userdata('sel_to_date'); ?>" />
</div>
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
<button type="submit" class="btn btn-default" name="go" id="go">Go</button>
</div>
Я решил проблемы со следующим кодом.
if (empty($this->input->post('from_date')) && !$this->session->userdata('sel_from_date'))
{
....
}
Проверьте, уже установлена ли переменная сеанса 'sel_from_date'. Если да, не устанавливайте его снова. Попробуйте ниже в своем контроллере:
if($this->session->userdata('sel_from_date') != '')
{
// Do not set the session variable 'sel_from_date'
}
else
{
// Execute the function $this->set_dates()
}