So after comment I see what you have trouble with.
please edit return
line in your model to this one
return ($query->num_rows() > 0) ? $query->result_array() : FALSE;
so whenever you have 0 results it returns (boolean) FALSE and it is easy to work with
edit your controller so it looks like
public function future() {
$this->load->model('trainings_model');
$data['settings'] = $this->trainings_model->get_trainings_list('future');
if ($data['settings'] === FALSE) return 0; //no results or make something here that prevents looping in foreach
foreach ($data['settings'] as $setting_key => $setting) {
//now grab code that you want to move from view and put it here ;)
$data['settings'][$setting_key]['format_start_date'] = date('d/m/Y', strtotime($setting['start_date']));
$data['settings'][$setting_key]['format_end_date'] = date('d/m/Y', strtotime($setting['end_date']));
$data['settings'][$setting_key]['cal_date'] = explode('/', date('j/M', strtotime($setting['start_date'])));
}
$this->load->view('trainings_list_view',$data);
}
and now your view file edit, you do not need to check $settings if it is set because we took care about it in controller by if/else statement
<?php foreach ($settings as $item): ?>
<div class='evlist'>
<div class='evdate'>
<span class='day'><?=$item['cal_date'][0];?></span>
<span class='month'><?=$item['cal_date'][1];?></span>
</div>
<div class='evdesc'>
<div class='thumb'>
<a href='<?=base_url();?>trainings/view_training/id=<?=$item['id'];?>'>
<img src='<?=base_url();?><?=$item['img_path'];?>' width='113' height='82' alt='' />
</a>
</div>
<div class='desc'>
<h4 class='bold'>
<a href='<?=base_url();?>trainings/view_training/id=<?=$item['id'];?>'>
<?=$item['name_ru'];?>
</a></h4>
<p><?=$item['short_desc_ru'];?></p>
<div class='evdet'>
<span>Сроки проведения: <?=$item['format_start_date'];?> - <?=$item['format_end_date'];?> | </span>
<a href='<?=base_url();?>trainings/view_training/id=<?=$item['id'];?>' class='more txthover'>Read More</a>
</div>
</div>
</div>
</div>
<?php endforeach;?>