Home / Programmazione / PHP / Connessione a database con Codeigniter
Mattepuffo

Connessione a database con Codeigniter

Connessione a database con Codeigniter

In un altro articolo ho parlato di come creare un sistema di login con Codeigniter (CI).

Non ho molto approfondito la questione connessione a database e query.

Lo faccio oggi.

Dando sempre per scontato che l'installazione sia andata a buon fine, partiamo dalla configurazione di base.

In application -> config -> autoload.php:

$autoload['libraries'] = array('database');

Poi i parametri di connessione al db (che suppongo sia Mysql) in application -> config -> database.php:

$db['default']['hostname'] = 'YOUR_HOST;
$db['default']['username'] = 'YOUR_USER';
$db['default']['password'] = 'YOUR_PWD';
$db['default']['database'] = 'YOUR_DB';
$db['default']['dbdriver'] = 'mysqli';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

Mettete i vostri parametri e dovreste stare a posto.

A questo punto passiamo al controller:

<?php
// home.php

class Home extends CI_Controller {

    public function index() {
            $this->load->model('home_model');
            $data = array();
            $data['titolo'] = 'Banca';
            $data['entrate'] = $this->home_model->getEntrate();
            $this->load->view('header', $data);
            $this->load->view('home_view', $data);
            $this->load->view('footer');
    }

}

Prima di tutto carichiamo il relativo model che gestisce le query.

Carichiamo i vari dati da passare alla view.

$data['entrate'] verrà caricata con i dati presi dalla funzione getEntrate() che si trova nel model e che esegue la query.

Questo il model:

<?php
// home_model.php

class Home_model extends CI_Model {

    public function getEntrate() {
        $this->db->select('*');
        $this->db->from('entrate');
        $this->db->join('causali', 'entrate.causale_id = causali.causale_id');
        $this->db->join('conti', 'entrate.conto_id = conti.conto_id');
        $this->db->order_by('entrata_data', 'desc');
        $this->db->limit(50);
        $query = $this->db->get();
        return $query->result();
    }

}

C'è una sola funzione che esegue la query.

Prima indichiamo i campi da prelevare (in questo caso tutti).

Poi indichiamo la tabella.

Poi ci sono due join, l'ordinamento e il limit.

Insomma già qua potete vedere la maggior parte delle cose utili.

Manca solo il where.

La funzione ritorna il risultato della funzione get(), ed è un array.

Questo array lo scandagliamo nella view:

           // home_view.php

           <?php foreach ($entrate as $var): ?>
                <tr>
                    <td><?php echo $var->entrata_valore; ?></td>
                    <td><?php echo $var->causale_nome; ?></td>
                    <td><?php echo $var->conto_nome; ?></td>
                    <td><?php echo $var->entrata_data; ?></td>
                    <td><?php echo $var->entrata_note; ?></td>
                </tr>
            <?php endforeach; ?>

Un pò diverso dal PHP classico.

Però direi che dovreste stare a posto.