Anasayfa » Codeigniter, Php

Codeigniter Dersleri – 5 – Database Bağlantısı ve Veri Çekme

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

Öncelikle database bağlantısı için standart ayarları yapmamız gerekiyor. Bunun için application/config/database.php dosyasını aşağıdaki gibi düzenliyoruz. Standart olarak  ilk dört numaralı ayarları güncellesek yeterlidir.

$active_group = 'default';
$active_record = TRUE;
 
$db['default']['hostname'] = 'localhost'; //1
$db['default']['username'] = 'root';      //2
$db['default']['password'] = '';			//3
$db['default']['database'] = 'codeigniter';//4
$db['default']['dbdriver'] = 'mysql';
$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;

Bu ayarları yaptıktan sonra phpmyadmine giriyorum ve kendime göre tablo oluşturacağım. Pizza isimli tablomda 8 alan olacak bunlar aşağıdaki resimde görünmekte. Bunlar ileride değişiklik gösterebilir.

Database elle bir kaç tane değer girelim ve bunları nasıl sitemize çekeceğimizi görelim.

Verilerimizi de girdikten sonra şimdi kodlarımızı yazmaya geldi sıra.

Application/models klasörüne pizza_model.php dosyası oluşturuyoruz ve içine alttaki kodları yazıyoruz.

<?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.
	}
}
?>

Object-oriented dan construct ın ne olduğunu biliyorsunuz varsayıyorum ( kısaca class tanımlandığında çağrılan fonksiyon ).

__construct() içindeki

$this->load->database();//database bağlantısı yapıyoruz.

satır, class çağrıldığında database bağlantısını açmamızı sağlıyor.

$query = $this->db->get('pizza');//pizza tablosundaki bütün verileri çekiyoruz.

satırı ise pizza tablosunda ki tüm verileri $query değişkenine atıyor.

Şimdi controller dosyamızı yani application/controllers/pizza.php dosyamızı alttaki şekilde güncelliyoruz.

<?php
 
class Pizza extends CI_Controller 
{
	function __construct()
	{
		parent::__construct();
	}
	function index()
	{
		$data['title']='Kodmerkezi.net Pizza Sipariş Sayfası';
		$data['header']='<h1>Siparişler</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 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 bu satırda;

$this->load->model('pizza_model');//pizza_model classımızı projemize yüklüyoruz.

model dosyamızı projemize yüklüyoruz. Eğer bütün fonksiyonlarda kullanıyorsak, her defasında yüklemektense construct içinde kullanabiliriz bu komutu.

Bu satırda ise;

$data['orders']=$this->pizza_model->get_all_orders();//get_all_orders fonksiyonunu çağırıyoruz ve sonucu $data değişkenimize atıyoruz.

Fonksiyonumuzdan dönen değerleri (tüm pizza tablosu dönüyor) view dosyasına göndermek üzere değişkene ($data[‘orders’]) atıyoruz.

Şimdi de view dosyamızı yani pizza_view.php dosyamızı alttaki şekilde güncelleyelim.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
<title><?=$title?></title>
</head>
 
<body>
<?=$header ?>
 
<table border="1">
<tr><th>İsim</th><th>Pizza</th><th>İnce Kenar</th><th>Adet</th><th>Adres</th><th>Tip</th><th>Fiyat</th></tr>
<?php foreach($orders as $row){ ?>
<tr>
<td>
<?php echo $row->name;?>
</td>
<td>
<?php echo $row->pizza;?>
</td>
<td>
<?php if($row->thin_edge)
{
	echo "Evet";
}
else
{
	echo "Hayır";
}
?>
</td>
<td>
<?php echo $row->unit;?>
</td>
<td>
<?php echo $row->address;?>
</td>
<td>
<?php 
if($row->type=="1")
{
	echo "Küçük";
}
else if($row->type=="2")
{
	echo "Normal";
}
else if($row->type=="3")
{
	echo "Büyük";
}
?>
</td>
<td>
<?php echo $row->cost;?>
</td>
</tr>
<?php } ?>
 
</table>
</body>
</html>

view dosyasına gelen veriyi foreach döngüsü ile kullanabiliriz. Böylece içindeki tüm bilgileri alıyoruz. Burada 11-58. satırlar arası databaseden gelen verilerin ekrana yansıtıldığı kod parçası.

Gelen verileri view dosyasında açmak yerine controller dosyasında açıp aynı işlemleri yapıp değişkene atarakta istediğimiz verileri yollayabiliriz.

Ekran çıktısı aşağıdaki gibi olacaktır.

Siparisler

İsim Pizza İnce Kenar Adet Adres Tip Fiyat
Gurcan Kavakci cilgin pizza Evet 2 ev adresi Küçük 4
Mehmet tavuklu Hayır 3 is adresi Büyük 12
Zeynep margarita Evet 1 okul adresi Normal 3

 

<<< Önceki:

Sonraki: >>>


Facebookta Paylaş

37 yorum »

  • fatih dedi ki:

    emeğinizden dolayı tşk ederim.Bukadar güzel bilgilere neden kimse yorum yapmıyor onuda anlamış değilim.Ellerinize sağlık.Tşk.

  • ayis dedi ki:

    elinize saglık gerçekten iyi anlatmısınız yalnız örneği denerken bende database hatası verdi..

  • admin dedi ki:

    Tam olarak nasıl bir hata aldınız?

  • ayis dedi ki:

    A Database Error Occurred

    Unable to select the specified database: codeigniter

    Filename: C:wampwwwcodeignitersystemdatabaseDB_driver.php

    Line Number: 140
    böyle bir hata veriyor

  • admin dedi ki:

    sql dosyasını yüklediğiniz databasein ismi ile config/database.php dosyasında bululnan $db[‘default’][‘database’] =satırı aynı olmalı, burayı düzeltin lütfen . Büyük ihtimalle sorun buradan kaynaklanıyor.

  • ayis dedi ki:

    tesekkürler hata kalktı..tekrar elinize sağlık …

  • Mehmet Doğan dedi ki:

    Elinize Emeğinize Sağlık… Database bilgileri harika anlatım ve kolay anlaşılır şekilde :))

  • Emre dedi ki:

    selam

    Fatal error: Call to a member function get() on a non-object in C:wampwwwpizzaciapplicationmodelspizza_model.php on line 17

    şeklinde bir hata aldım çözümünü bulmamda yardımcı olursanız sevinirim.

  • admin dedi ki:

    pizza_model.php dosyasındaki 17. satırı yazabilirmisiniz?

  • Emre dedi ki:

    $query = $this->db->get(‘pizza’); // 17.satır

    şeklinde buradaki get metodu ile ilgili bir sorun mu var acaba. ayrıca aşağıdaki gibi hata alıyorum

    A PHP Error was encountered

    Severity: Notice

    Message: Undefined variable: db

    Filename: models/pizza_model.php

    Line Number: 17

    Fatal error: Cannot access empty property in C:\wamp\www\pizzaci\system\core\Model.php on line 50 seklinde

  • admin dedi ki:

    Öncelikle php sürümünüz 5.0 ve üzeri olmalı, boş bir sayfaya phpinfo(); yazarak öğrenebilirsiniz. Eğer böyleyse __construct() içindeki $this->load->database(); satırını kopyalayıp sorun yaratan satırın üstünde bir yere yapıştırabilirmisiniz ($query = $this->db->get(‘pizza’);). Classlar la ilgili bir sorun olabalilir.

  • Emre dedi ki:

    Apache Version :
    2.2.17
    PHP Version :
    5.3.4
    MySQL Version :
    5.1.53

    wamp’in en gncel sürümü. dediğiniz gibi $this->load->database(); ilgili yere yapıştırdım ve düzeldi ilginize teşekkürler 🙂 dersler için çok teşekkür ederim. çk yararlı.

  • Memo dedi ki:

    Tesekkür etmeden gecemeyecegim…

  • Huseyn Ege dedi ki:

    Tesekur edioyorum gercek guzel ve muthis bir calisma olmus .

  • Yahya dedi ki:

    Bu kadar emek vererek bizimle paylaştığınız için teşekkür ederim. Yerli yabancı tüm kaynaklardan daha iyi olmuş bu. elinize sağlık.

  • serdar dedi ki:

    emeğiniz için teşekkürler
    arkadaşlara da başarılar

  • eren dedi ki:

    öncelikle dersler için teşekkür ediyorum.

    ben veri tabanın dan verileri okutamadım hatada almıyorum tablonun üst kısmı oluşuyor fakat veri tabanında oluşturduğum tablodaki verileri ekranda göremiyorum.sebebi ne olabilir???

  • admin dedi ki:

    eren, bunun bir çok sebebi olabilir. Siz sitemizdeki kodların aynısını yazdığınız halde hata alıyor musunuz?

  • eren dedi ki:

    evet aynısı yaptım.veri tabanını da aynen dediğiniz gibi oluşturdum.
    sadece ilk başda localhost/codigniter a erişirken hata aldığım için application/config/database.php dosyasında db_debug kısmını FALSE olarak değiştirmiştim.

  • eren dedi ki:

    tamam sorunu hallettim.’username’ i yanlış yazmışım şimdi gördüm:)
    teşekkürler .

  • Mehmet Küçük dedi ki:

    Fatal error: Call to a member function get() on a non-object in C:wampwwwpizzaciapplicationmodelspizza_model.php on line 17

    bu tarz bi hata bende aldım sanırım sorun

    control slasındaki $this->load->view(“pizza_goster”,$data);

    bu satırda class ismini büyük yazarsanız (Pizza_Goster) gibi hata veriyo ama küçük harf yaptığınızda sorun gidiyor. Sanırım büyük harf küçük harf ayrımı var. sanırım tüm class isimlerini kullanırken küçük yazmak gerekiyor.

  • Esra Kayikci dedi ki:

    Tebrik ederim, dersler hem çok bilgilendirici hem de çok basit bir dille anlatılmış. Çok yardımcı oldunuz. Teşekkürler.

  • Hilal dedi ki:

    Teşekkür ederim yeni öğrenmeye başlayan biri için gerçekten çok yararlı çok anlaşılır oluyor

  • Emre dedi ki:

    Merhaba,
    Çalışmalaranız için teşekkürler, elinize sağlık. Hepsi çok güzel ve yalın anlatımlı çalışmalar olmuş.

    Bu çalışmayı uyguladıktan sonra bir önceki derste uyguladığımız ve sorunsuz çalışan;

    http://localhost/codeigniter/index.php/pizza/get_method/mexico/3

    bağlantısına tekrar girdim ve şöyle bir hata aldım:

    A PHP Error was encountered

    Severity: Warning

    Message: Invalid argument supplied for foreach()

    Filename: core/Loader.php(829) : eval()'d code

    Line Number: 13

    İlgili fonksiyonda bir değişiklik yapmadık ama şimdi bu hatayı vermesinin nedeni ne olabilir?

  • faruk8001 dedi ki:

    Gelen verileri view dosyasında açmak yerine controller dosyasında açıp aynı işlemleri yapıp değişkene atarakta istediğimiz verileri yollayabiliriz. Demişsiniz örneğini yayınlayabilir misiniz?

  • arif dedi ki:

    Hocam emeğinize sağlık gerçekten çok güzel dersler, kıymetini bilmek lazım bunların. Kolay gelsin.

  • esra dedi ki:

    böyle güzel ve anlaşılır bir paylaşımda bulunduğunuz için çok teşekkür ederim. elinize emeğinize sağlık

    Hata alan arkadaşlar http://localhost/CodeIgniter/ bu şekilde çağırmanız gerekiyor. tekrar denerseniz projeniz çalışacaktır

  • Rohan dedi ki:

    Yeni başlayanlar için altın bilgiler. Teşekkürler…

  • ömer dedi ki:

    http://localhost/CodeIgniter/ a girince 404 veriyor neden eksiksiz yaptım

  • uğur dedi ki:

    Çok güzel bir kaynak ve çok güzel anlatmışsınız herşeyi ilk dersten şu an ki derse kadar herşey süper elinize sağlık

  • Mehmet dedi ki:

    config/database ayarlarını değiştirdim phpmyadminden hangi veritabanını seçmeliyim yada kendim mi oluşturacağım

  • kübra dedi ki:

    A PHP Error was encountered

    Severity: Warning

    Message: Invalid argument supplied for foreach()

    Filename: views/pizza_view.php

    Line Number: 12

    böyle bir hata alıyorum saatlerdir uğrasıyorum ama hallademedim yardımcı olasanız sevınrım.

  • zeki özer dedi ki:

    makalenin tamamını heyecanla okuyacağım. yararlı ve çok güzel iş olmuş

  • Agah dedi ki:

    Dersleriniz için çok teşekkürler, elinize sağlık. Bu derste resimler görünmüyor. Veritabanı alanlarını oluştururken acemi olduğum için sanırım, varchar mı boolean mı seçeceğime falan karar veremedim. Bu resim yollarını güncellerseniz, acemiler için daha anlaşılır olur diye düşünüyorum.

  • Halil dedi ki:

    Selamun Aleykum, hocam bu paylaşımı takip ediyomusunuz hala bilmiyorum ama resimler gözükmüyor. Bilginize

  • Zamin dedi ki:

    Merhaba,
    Çalışmalaranız için teşekkürler, elinize sağlık.
    şöyle bir hata aldım:

    A PHP Error was encountered

    Severity: Warning

    Message: Invalid argument supplied for foreach()

    Filename: core/Loader.php(829) : eval()’d code

    Line Number: 22

    Bu hatayı vermesinin nedeni ne olabilir?

  • furkan dedi ki:

    hocam fotoğraflar silinmiş tekrar yüklermisiniz

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.