Codeigniter e la lettura dei dati passivi da una tabella: SELECT semplici

web design umbria

All’ indirizzo http://umbriawayformazione.altervista.org/ci_project_chess/index.php/chess/bg7 ci sono due esempi di lettura dei dati passivi da una tabella, ossia senza richiesta di parametri, applicando una semplice istruzione SELECT. Vediamo come Codeigniter risolve questa spinosa questione tenendo conto che deve fare un lavoro sporco basato sul concetto di UNO e TRINO neanche fosse una divinità (ma poco di manca senza essere eretici perché CI Framework https://www.codeigniter.com/ ci dà la possibilità di applicare la MAGIA del FARE mettendo a disposizione strumenti semplici). Partiamo dal fondo dove all’ interno di quattro colonne vengono materializzati quattro record dal DB MYSQL. Per comodità abbiamo spezzato la pagina in tre pezzi, soluzione che ci consente il massimo controllo chirurgico sugli elementi, per cui abbiamo un HEADER un BODY o un CORPO del documento e un FOOTER dove abbiamo delegato alla pagina corrispondente anche l’onere di chiudere il BODY:


		//nel codice che segue viene caricata la parte superiore senza dati dal model
		$this->load->view('paginaheader');
		
		//carichiamo il content prelevando i dati dal modello
		$data['result'] = $this->Nome_Model->getLeggiTabella();
		$this->load->view('ag7', $data);
		
		//nel codice che segue viene caricata la parte inferiore senza dati dal model
		$this->load->view('paginafooter');

Nella pagina paginafooter mi ritrovo il profilo di forti giocatori di scacchi che giocano i sistemi con il fianchetto al TOP e che quindi sono da valorizzare e prendere come punto di riferimento nello studio agonistico. Come girano questi record dunque?

MODEL:

  public function getChessGuru()
  {
    $this->db->select('*');
    $this->db->from('nometabella');
    $query = $this->db->order_by('agonista')->get();
    return $query->result();
  }

Analizziamo il tutto innanzitutto creo un set di istruzioni che all interno delle graffe conterrà le disposizioni da impartire al DB per la visualizzazione a video in basso consentita grazie all’ invocazione SELECT, questo metodo (funzione è un termnine riferito a PHP procedurale ma non OOP) ha un nome identificativo che é getChessGuru senza parametri in ingresso , altrimenti le tonde sarebbero piene). Poi con la tipica annotazione codeigniter framework con PHP ad oggetti dico all’ oggetto corrente che deve pescare tutti i record della tabella (asterisco) DA e nella seconda riga faccio presente DA DOVE. Quando ho afferrato tutto il contenuto desiderato alla terza riga definisco una query per ordinare gli elementi e rilascio con il metodo GET un array di dati che nella riga 4 vengono rilasciati per l’uso. Nulla di trascendentale, quindi. A questo punto la logica è definita, ossia il comportamento, ma l’azione dell’ applicare passa al CONTROLLER che fa mediazione con la VISTA, la parte di interfaccia utente, per rendere i DATI FRUIBILI. Vediamo quindi cosa ho nel CONTROLLER dopo una doverosa modifica per attingere ai nuovi dati:

CONTROLLER 

		//nel codice che segue viene caricata la parte superiore senza dati dal model
		$this->load->view('paginaheader');
		
		//carichiamo il content prelevando i dati dal modello
		$data['result'] = $this->Nome_Model->getLeggiTabella();
		$this->load->view('ag7', $data);
		
		//nel codice che segue viene caricata la parte inferiore questa volta CON I DATI DEL MODEL
		$data1['result'] = $this->Nome_Model->getChessGuru();
		$this->load->view('paginafooter', $data1);

Ho sostanzialmente caricato i dati rendendoli buoni per la paginafooter della VISTA. E Nella vista che cosa mi ritrovo? Quello che ho modellato, ossia avrà l’apertura del flusso e la chiusura del flusso dati con tutti i campi disponibili per essere stampati a video con l’istruzione ECHO. Tutto il codice compreso tra apertura flusso e chiusura flusso deve essere ponderato con attenzione, perchè ad esempio un BR, una istruzione di riga a capo, se messo nel punto sbagliato può creare stravolgimenti nella visualizzazione, quindi verrà DELIIMITATO dai DUE MARCATORI solo quello che è univoco e RIPETIBILE senza creare complicazioni, per esempio:

VIEW

          <?php foreach ($result as $res) : ?>
          <a href="<?php echo $res->collegamento ?>" target="_blank"><?php echo $res->agonista1 ?> vs <?php echo $res->agonista2 ?></a>
            <p class="lead"><?php echo $res->nomecampodaestrarre ?></p>
              <a href="<?php echo base_url();?>index.php/nomedelcontroller/nomedelmetodo?id=<?php echo $res->id ?>" class="btn btn-sm btn-dark">
                <img class="img-responsive img-rounded" src="<?php echo base_url();?>assets/img/<?php echo $res->img ?>" alt="fwd">
              </a>
          <?php endforeach; ?>

A questo punto posso fare tutto ciò che voglio, stampare immagini se vi é nella tabella un campo immagine, linkare tutto ciò che voglio dinamicamente per esempio se ho anche un campo link nella tabella e il risultato finale, con CSS integrati o STILI in LINEA, è quello che si vede per l’appunto all’ indirizzo http://umbriawayformazione.altervista.org/ci_project_chess/index.php/chess/bg7 . Noteremo anche che compare un ?id= e questo ci introduce in uno dei prossimi approfondimenti su CODEIGNITER, ossia il tema delle SELECT che ricevono dei PARAMETRI in INGRESSO. Infine, nella stesa pagina di assemblaggio vista prima abbiamo anche un:

		//carichiamo il content prelevando i dati dal modello
		$data['result'] = $this->Nome_Model->getLeggiTabella();
		$this->load->view('nomepaginacontentsucuicaricareidati', $data);

A questo punto abbiamo fatto trenta, facciamo trentuno, vediamo lo schema principale Model / Controller / View anche di questa pagina con un altra query SELECT:

Model: 

  public function getLeggiTabella()
  {
    $this->db->select('*');
    $this->db->from('nomedellatuatabella');
    $query = $this->db->order_by('id')->get();
    return $query->result();
  }
-----------------------------------------------------------------------------------------------------------------------------
Controller:

		//carichiamo il content prelevando i dati dal modello
		$data['result'] = $this->Nome_Model->getLeggiTabella();
		$this->load->view('nomepaginacontentsucuicaricareidati', $data);

-----------------------------------------------------------------------------------------------------------------------------

View:

codice HTML con inclusioni come quelle simili a quelle sopra:

          <?php foreach ($result as $res) : ?>
          <a href="<?php echo $res->collegamento ?>" target="_blank"><?php echo $res->agonista1 ?> vs <?php echo $res->agonista2 ?></a>
            <p class="lead"><?php echo $res->nomecampodaestrarre ?></p>
              <a href="<?php echo base_url();?>index.php/nomedelcontroller/nomedelmetodo?id=<?php echo $res->id ?>" class="btn btn-sm btn-dark">
                <img class="img-responsive img-rounded" src="<?php echo base_url();?>assets/img/<?php echo $res->img ?>" alt="fwd">
              </a>
          <?php endforeach; ?>

Per quanto riguarda le SELECT passive senza parametri in ingresso al momento vi é una traccia utile per poter fare il copia e incolla senza dover ogni volta reinventare l’acqua calda, in uno dei prossimo post analizzeremo il meccanismo di richiamo di una SELECT che riceve in ingresso un parametro

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...