#php #codeigniter
#php #codeigniter
Вопрос:
Получил код из старой системы, но я не могу изменить его, чтобы он НЕ отображал срок действия, когда дата равна нулю или 0000-00-00 из базы данных. Вот код.
Я попробовал функцию IF в $ expiry_date, но получил белый экран
function select_expiry_dates($set_select_name='expiry_date', $set_default_code='', $set_default_expiry_date='')
{
$ci =amp; get_instance();
$ci->load->model('Expiry_dates_model');
$expiry_dates = $ci->Expiry_dates_model->get_expiry_dates();
if($expiry_dates->num_rows() > 0)
{
foreach ($expiry_dates->result() as $row)
{
$expiry_date = $row->code .' ('. date('d M Y', strtotime($row->expiry_date)) .')';
$default_value = ($row->code == $set_default_code amp;amp; $row->expiry_date == $set_default_expiry_date) ? TRUE : '';
$set_select_option = set_select($set_select_name, $expiry_date, $default_value);
echo '<option value="'. $expiry_date .'" data-expiry="'. $expiry_date .'" data-expiry-rate="'. $row->rate .'" '. $set_select_option .'>'. $expiry_date .'</option>';
}
}
return TRUE;
}
Мне нужна дата истечения срока действия ($expiry_dates), чтобы при выборе из базы данных не отображалось НИ истечения срока действия, ни даты. В настоящее время он отображается как 01 января 1970 года, даже если данные в базе данных равны нулю.
Комментарии:
1. «Я попробовал функцию IF в $ expiry_date, но получил белый экран», что означает, что вы допустили простую синтаксическую ошибку. Попробуйте еще раз и найдите ошибки.
Ответ №1:
Пожалуйста, проверьте перед отображением, является ли этот формат даты допустимым или нет.
Вот код для проверки:
function validateDate($date, $format = 'Y-m-d')
{
$d = DateTime::createFromFormat($format, $date);
// The Y ( 4 digits year ) returns TRUE for any integer with any number of digits so changing the comparison from == to === fixes the issue.
return $d amp;amp; $d->format($format) === $date;
}
Результаты:
var_dump(validateDate('2018-15-01')); // false
var_dump(validateDate('20184-16-01')); // false
var_dump(validateDate('2018-22-04')); // true
Надеюсь, это решит вашу проблему
Ответ №2:
Попробуйте это
if($expiry_dates->num_rows() > 0)
{
foreach ($expiry_dates->result() as $row)
{
if(is_null($row->expiry_date)){
$date = 'No Date';
}else{
$date = $row->expiry_date;
}
//Use $date in the code...
}
}