w bazie:
szklenia - głowna tabela gdzie jest ID, DATA_szkolenia, IDszkolenia, IDnauczyciela, IDrodzaj_szkolenia które łączę za pomocą Lft JOIN z następnymi
szkolenia_rodzaje - tabela gdzie są wylistowane wszystkie szkolenia, łącznie z opisami itd
szkolenia_miasta, nauczyciele - oczywiście miasta i nauczyciele szkolący, mało ważne tutaj
w kontrolerze mam:
function index() { if($_GET == null) { $this->loadModel('index'); } $count = $this->model->select_one("SELECT COUNT(*) FROM szkolenia_rodzaje WHERE pokaz=1;"); //echo $count[0]; for($i = 1; $i <= $count[0]; $i++) { $this->view->szkolenia_daty[$i] = $this->model->select_one( "SELECT * FROM szkolenia es LEFT JOIN szkolenia_rodzaje esr ON es.idszkolenia = esr.id_szkolenia LEFT JOIN szkolenia_miasto esm ON es.idmiasto = esm.id_miasto LEFT JOIN szkolenia_nauczyciel est ON es.idnauczyciel = est.id_nauczyciel WHERE es.dataszkolenia >= NOW() AND es.idszkolenia = ".$i." AND es.idszkolenia LIMIT 1"); } $this->view->render('index/index'); }
select_one w modelu to nic innego jak
$result = $this->db->select_one($query); return $result;
w widoku wyciągam już bez kombinowania:
<div id="boxes_tit"><h2>Daty Najbliższych szkoleń</h2></div> <?php foreach ($this->szkolenia_daty as $rodzaje) : ?> <?php if($rodzaje['idszkolenia'] != null) : ?> <div id="box_szk_l"> <div class="box_szk_btm"><a href="<?php echo $this->_baseurl . 'szkolenia/szkolenie/' . $rodzaje['idszkolenia']; ?>">Więcej...</a></div> </div> <?php endif; ?> <?php endforeach; ?>
przypuszczalnie moim błedem jest to że chcę to wyciągnąć jednym zapytaniem i kombinuję z PHP w nim, bo gdy wcześniej miałem to w strukturalce zrobione na zasadzie - jedno zapytanie o rodzaje szkoleń, a w nim w pętli zapytanie o najbliższe dat z danego szkolenia to wszystko grało... przechodzę teraz całą stroną na MVC i mnie to nieco przytłoczyło, a nie chce dziadować, poradźcie bardziej doświadczeni panowie i panie.