Hello Világ Model és Controller


Adatok lekérése adatbázisból, Active Record és egyszerű SQL kéréssel. A cikk az első Model és Controller-re épülő modult mutatja be.A post-ban elkészítjük az első Model és Controller alap programunkat, amiben adatbázisból fogunk adatokat lekérni.

A lekérésnek 2 módját mutatom be, az egyik a CodeIgniter Active Record-jával történik, a másik egyszerű kérés használatával.



A cikkhez tartozik egy cimke táblát és teszt adatokat tartalomzó sql fájl, amit letöltés után futtassunk az adatbázis kapcsolat résznél leírát install_test adatbázisunkon.

A CodeIgniter adatbázis abstrakciós rétege, rendkívül egyszerűen használható és nagyon jó dokumentációval rendelkezik. Ha letöltötted a keretrendszert akkor a dokmentációkbana database Class menüponton részletes példákkal illusztrálja egy-egy utasítás működését, és szinte az összes felmerülő SQL-el kapcsolatos kérdésünkre megtaláljuk benne a választ.

A cimke controller létrehozása:

Hozz létre egy PHP fájlt a system/application/controllers mappában cimke.php néven. A fájl neve mindig az osztály neve legyen jelen esetbena cimke. Figyeld meg a controller lérehozásakor milyen metódusokat használok.

  1. <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2.  
  3. class cimke extends Controller {
  4.  
  5.     function cimke(){
  6.         parent::Controller();
  7.     }
  8.  
  9.     //az index metódus fut le, ha nincs egyéb kérés
  10.     function index(){
  11.  
  12.         //model betöltése a models mappából
  13.         //lehet mappába is akkor elé kell tenni cimke/cimke_model
  14.         $this->load->model("cimke_model");
  15.  
  16.         //adatok lekérése
  17.         $acitve_record=$this->cimke_model->active_record_osszes_cimke();
  18.         $this->_p($acitve_record, "active record lekérés");
  19.         //select * ..
  20.         $egyszeru_keres=$this->cimke_model->egyszeru_keres();
  21.         $this->_p($egyszeru_keres, "egyszerű kérésel");
  22.        
  23.     }
  24.  
  25.     function _p($array, $title){
  26.         echo "<pre><h1>{$title}</h1>";
  27.         var_dump($array);
  28.         echo "<hr>";
  29.         echo "</pre>";
  30.     }
  31.  
  32. }
  33.  
  34. /* End of file cimke.php */
  35. /* Location: ./system/application/controllers/cimke.php */

 

A model létrehozása:

A modelt a system/application/models mappába kell elhelyezni jelen esetben cimke_model.php néven. Ahhoz hogy használhasd a kontrollerben az adott modelt be kell tölteni. Ehhez nézd meg a conroller-ben a ezt az utasítást:

  1. $this->load->model("cimke_model");


Ezzel töltöm be használatra a modelt, de persze be lehet tölteni egyéb módon is. Fontos hogy ilyenkor és függvény híváskor is mindig kisbetűvel hivatkozunk rá.
 

  1. <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2.  
  3. /**
  4. * @property CI_Loader $load
  5. * @property CI_Form_validation $form_validation
  6. * @property CI_Input $input
  7. * @property CI_Email $email
  8. * @property CI_DB_active_record $db
  9. * @property CI_DB_forge $dbforge
  10. * @property CI_Table $table
  11. * @property CI_Session $session
  12. * @property CI_FTP $ftp
  13. * @property CI_Table $table
  14. * @property CI_Validation $validation
  15. * @property CI_Pagination $pagination
  16. */
  17.  
  18. class Cimke_model extends Model{
  19.  
  20.     function Cimke_model(){
  21.         parent::Model();
  22.     }
  23.  
  24.     //active record használatával minden adat
  25.     function active_record_osszes_cimke(){
  26.         //SELECT * FROM cimke;
  27.         $query=$this->db->get("cimke");
  28.  
  29.         //megvizsgáljuk vannek-e sorok ha nincs akkor szia
  30.         if(!$query->num_rows){
  31.             return false;
  32.         }
  33.         //feldolgozzuk tömb formályában a kérést és visszadjuk a $lista-ban
  34.         $lista=array();$row=$lista;
  35.         foreach ($query->result_array() as $row){
  36.             $lista[]=$row;
  37.         }
  38.         return $lista;
  39.     }
  40.  
  41.     //használhatunk kéréseket is ha ahhoz van kedvünk
  42.     function egyszeru_keres(){
  43.         $sql="SELECT * FROM `cimke`";
  44.         $query=$this->db->query($sql);
  45.  
  46.         if(!$query->num_rows){
  47.             return false;
  48.         }
  49.  
  50.         $lista=array();$row=$lista;
  51.         foreach ($query->result_array() as $row){
  52.             $lista[]=$row;
  53.         }
  54.         return $lista;
  55.     }
  56.  
  57. }
  58.  
  59. /* End of file cimke_model.php */
  60. /* Location: ./system/application/models/cimke_model.php */

Ha elhelyeztük mindkét fájlt a helyére akkor hívjuk meg http://localhost/install-test/index.php/cimke oldalt. Mivel nincs megadva a controller után metódus ezért az index() fog lefutni.

Ha ügyesek voltunk, akkor ezt kéne látnunk a böngészőben

 

A keretrendszerben használhatod az SQL kérések irogatását, ha neked az szimpatikusabb, de az Active record-os megoldás is rendelkezésedre áll. Javaslom hogy az utóbbival kössél mélyebb barátságos, mert nagyszerű dolog ha ráérzel az ízére.

Mivel a Framework rugalmas, ezért saját oszályokat is használhatsz erre a célra, annyid dolgod van, hogy az adatbázis kapcsolódáskor kapott erőforrás azonosítót átadod neki.


Acitve Record, SQL, Codeigniter, MVC codeigniter, adatbazis






Letöltések

SQL adatok a példa programhoz
A cikkhez tartozó cimke tábla és adatok, amit az előzményekben (adatbázis kapcsolat résznél leírt táblán futtatni kell.)
cimke controller php fájl, ezt használjuk a példában
A példa program cimke.php controller fájlja.
A leírás modelje
A cimke_model.php fájlt tartalmazza.


Hozzászólás beküldése:


http://domain.tld (nofollow)
 _  _  __  __  __      __    __  __  _____ 
( \/ )(  )(  )(  )    /__\  (  \/  )(  _  )
 \  /  )(__)(  )(__  /(__)\  )    (  )(_)( 
  \/  (______)(____)(__)(__)(_/\/\_)(_____)



 
 
 
 
Powered By: PHP, Smarty, MySQL, CodeIgniter, jQuery, ArtH2O