Anasayfa » Codeigniter, Php

Codeigniter Dersleri – 6 – Veritabanından Özel Veri Çekme

18 Haziran 2011 9.930 kez okundu 8 yorum
1 Star2 Stars3 Stars4 Stars5 Stars (6 oy,5 üzerinden : 4,33 )
Loading...

Bir önceki dersimizde veritabanındaki bütün pizza siparişlerini çekmiştik. Bu dersimizde ise sadece bizim belirleyeceğimiz veriler ekrana gelecek.

Hemen kodları vermeye başlayayım, application/models altındaki pizza_model.php dosyasını alttaki gibi düzenleyelim.

<?php
class Pizza_model extends CI_Model
{
	 function __construct()
     {
         parent::__construct();
         $this->load->database();//database bağlantısı yapıyoruz.
     }
 
	function get_all_orders()
	{
		$query = $this->db->get('pizza');//pizza tablosundaki bütün verileri çekiyoruz.
		return $query->result();//sonucu return ediyoruz.
	}
	function get_specific_order()
	{
		$query = $this->db->get_where('pizza',array('id'=>1));//id = 1 olan verileri seçiyoruz sadece.
		return $query->result();		
	}
}
?>

Şimdi de application/controllers altındaki pizza.php dosyasını da alttaki gibi düzenleyelim.

<?php
 
class Pizza extends CI_Controller 
{
	function __construct()
	{
		parent::__construct();
	}
	function index()
	{
		$data['title']='Kodmerkezi.net Pizza Sipariş Sayfası';
		$data['header']='<h1>Siparisler</h1>';
 
		$this->load->model('pizza_model');//pizza_model classımızı projemize yüklüyoruz.
		$data['orders']=$this->pizza_model->get_all_orders();//get_all_orders fonksiyonunu çağırıyoruz ve sonucu $data değişkenimize atıyoruz.
 
		$this->load->view('pizza_view',$data);
	}
	function a_pizza()
	{
		$data['title']='Kodmerkezi.net Pizza Sipariş Sayfası';
		$data['header']='<h1>Siparisler</h1>';
 
		$this->load->model('pizza_model');
		$data['orders']=$this->pizza_model->get_specific_order();
 
		$this->load->view('pizza_view',$data);
	}
	function get_method($name='',$unit='')
	{
		$data['title']='Kodmerkezi.net Pizza Sipariş Sayfası';
		$data['header']='<h1>Siparişler</h1>';
		if(!$name || !$unit)
		{
			$data['orders']='Sipariş Yok';
		}
		else
		{
			$data['orders']='Adı: '.$name.' Adedi: '.$unit;
		}
 
		$this->load->view('pizza_view',$data);
 
	}
 
}
?>

ardından adres çubuğuna http://localhost/CodeIgniter/index.php/pizza/a_pizza yazalım ve id si 1 olan elemanı yani Gürcanın siparişlerini görelim. Görünüm şu şekilde olacak.

Siparisler

İsim Pizza İnce Kenar Adet Adres Tip Fiyat
Gurcan Kavakci cilgin pizza Evet 2 ev adresi Küçük 4

a_pizza fonksiyonumuz model dosyasındaki get_specific_order(); fonksiyonunu çağırıyor ve orada id belirlenip fonksiyon çalıştırılıyor.

Peki istediğimiz id yi fonksiyona biz yollasak? pizza_model.php dosyamızı aşağıdaki şekilde tekrar düzenleyelim. id yi değişkene bağlayalım.

<?php
class Pizza_model extends CI_Model
{
	 function __construct()
     {
         parent::__construct();
         $this->load->database();//database bağlantısı yapıyoruz.
     }
 
	function get_all_orders()
	{
		$query = $this->db->get('pizza');//pizza tablosundaki bütün verileri çekiyoruz.
		return $query->result();//sonucu return ediyoruz.
	}
	function get_specific_order($id)//fonksiyona gelen id ye göre tablomuzdan ilgili satırı çekiyoruz.
	{
		$query = $this->db->get_where('pizza',array('id'=>$id));//id = 1 olan verileri seçiyoruz sadece.
		return $query->result();		
	}
}
?>

şimdi pizza.php controller dosyamızdaki

$data['orders']=$this->pizza_model->get_specific_order();

satırı aşağıdaki gibi değiştirelim

 $data['orders']=$this->pizza_model->get_specific_order(2);

yani fonksiyonumuza hangi değeri gönderirsek, ekrana o bilgiler basılacak. Örneğin yukarıdaki satır için ekrana

Siparisler

İsim Pizza İnce Kenar Adet Adres Tip Fiyat
Mehmet tavuklu Hayır 3 is adresi Büyük 12

basılacaktır.

Veritabanından GET Methodu ile Veri Çekme

Peki fonksiyona yollamak yerine direk url den get methodu ile istediğimiz satırı çekmek istersek?

O zaman controller dosyamız olan pizza.php dosyamızı aşağıdaki şekilde tekrar düzenliyoruz.

<?php
 
class Pizza extends CI_Controller 
{
	function __construct()
	{
		parent::__construct();
 
	}
	function index()
	{
		$data['title']='Kodmerkezi.net Pizza Sipariş Sayfası';
		$data['header']='<h1>Siparisler</h1>';
 
		$this->load->model('pizza_model');//pizza_model classımızı projemize yüklüyoruz.
		$data['orders']=$this->pizza_model->get_all_orders();//get_all_orders fonksiyonunu çağırıyoruz ve sonucu $data değişkenimize atıyoruz.
 
		$this->load->view('pizza_view',$data);
	}
	function a_pizza($id='1')//default olarak 1 nolu id deki oyuncuyu çekiyoruz.
	{
		$data['title']='Kodmerkezi.net Pizza Sipariş Sayfası';
		$data['header']='<h1>Siparisler</h1>';
 
		$this->load->model('pizza_model');
		$data['orders']=$this->pizza_model->get_specific_order($id);//gelen id yi fonksiyona yolluyoruz.
 
		$this->load->view('pizza_view',$data);
	}
	function get_method($name='',$unit='')
	{
		$data['title']='Kodmerkezi.net Pizza Sipariş Sayfası';
		$data['header']='<h1>Siparişler</h1>';
		if(!$name || !$unit)
		{
			$data['orders']='Sipariş Yok';
		}
		else
		{
			$data['orders']='Adı: '.$name.' Adedi: '.$unit;
		}
 
		$this->load->view('pizza_view',$data);
 
	}
 
}
?>

Şimdi adres çubuğuna http://localhost/CodeIgniter/index.php/pizza/a_pizza yazdığımızda yine Gürcan ın siparişleri geldi ekrana, çünkü fonksiyona herhangi bir değer yollamadık ve default olan id=’1′ çalıştı. Şimdi fonksiyona değer yollayalım bunun için adres çubuğuna ek olarak 2 değerini ekleyelim ve çalıştıralım.

http://localhost/CodeIgniter/index.php/pizza/a_pizza/2

Şimdi ekrana 2 nolu id nin siparişi gelecektir.

http://localhost/CodeIgniter/index.php/pizza/a_pizza/3

için 3 nolu gelecektir. Bu sayede fonksiyona istediğimiz değeri yolladık ve istediğimiz veriyi çekmiş olduk.

Tabiki burada sadece get_where() fonksiyonunu kullandık. Diğer bütün komutları, ayrıntılı açıklaması ve örnekleri ileriki derslerimizde anlatılacaktır. Bu dersimizde sadece fonksiyona değer yollamayı öğrenmiş olduk.

<<< Önceki:

Sonraki: >>>


Facebookta Paylaş

8 yorum »

  • Ahmet dedi ki:

    Emegine saglik kardes.
    Sanirim su kodda ufak bir teknik sorun var; düzeltirseniz acemi arkadaslar takilip kalmazlar:
    $data[‘orders’]=$this->pizza_model->get_specific_order();

  • admin dedi ki:

    Ahmet, sorunu detaylı şekilde yazarsan düzeltebilirim. Şu anda herhangi bir sorun göremiyorum.

  • Seçkin dedi ki:

    Arkadaşım ne yazık ki Ahmet arkadaşın dediği gibi ben de çakıldım kaldım. Her ne hikmetse id=1 nolu kayıt çağırılamıyor? Daha doğrusu bir türlü id=1 nolu kaydı çağıramadım. Kaldım Bunun var mı bir hal çaresi?

  • admin dedi ki:

    Seçkin, şimdi Ahmet’in bahsettiği konuda herhangi bir problem yok. Konu anlatılırken, ilk olarak specific order ları çekerken herhangi bir id almadık. get_specific_order() fonksiyonu çağrıldığında direk 1 nolu id ye sahip veriler geliyordu. Yazının devamında ise bunu geliştirerek id yi kullanıcıdan aldık.get_specific_order($id) şeklinde çağrılır oldu. Eğer bu noktayı atladıysanız çalışmıyor olabilir. Eğer farklı bir problem ise sorunu ayrıntılı yazarsanız çözmeye çalışırız.

  • Sercan dedi ki:

    Elinize sağlık takip ediyorum çok açıklayıcı ve yararlı olmuş.

  • Link dedi ki:

    Merhaba
    Dersleriniz için teşekkür ederim bir sorum olacakti.
    Mesela database alaninda ID,Başlik,Açıklama alani var

    http://localhost/CodeIgniter/index.php/pizza/a_pizza/2
    burdaki kod kısmındaki
    http://localhost/CodeIgniter/index.php/ID/Baslik

    olarak nasıl veriyi cagirabilirim

  • admin dedi ki:

    Link,

    http://localhost/CodeIgniter/index.php/ID/Baslik yerine http://localhost/CodeIgniter/index.php/metodun/ID/Baslik şeklinde kullanabilirsin. Method olarak ta,

    function metodun($id='1',$baslik='')
    {
    //Databaseden id ve baslik a göre işlem yapılacak.
    }

    şeklinde bir yapı kullanabilirsin.

  • nuru dedi ki:

    merhabalar, önceliklere dersler için teşekkürler. fakat uygulamaya başladığımda class ları çalıştırıyo içindeki a_pizza yı gösteremiyorum http://localhost/CodeIgniter/index.php/pizza/a_pizza bunu yazdığım vakit sayfa göstermiyor, hata veriyor neden olabilir?

Yorum Bırakın!

Yorum yaz, yada kendi sitende trackback (Geri besleme) olarak ekle. Ayrıca RSS ile bu konuya üye olabilirsin. .

Nazik olun. Temiz tutun. Konu dışına çıkmayın. Spam yaratmayın.

Bu tagları kullanabilirsiniz:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Bloğumuz gavatarı desteklemektedir. Kendi gavatarınızı edinmek için lütfen Gravatar a üye olun.