Anasayfa » Codeigniter, Php

Codeigniter Dersleri – 17 – Seçili Bilgiyi Forma Gönderme

16 Temmuz 2011 4.456 kez okundu 11 yorum
1 Star2 Stars3 Stars4 Stars5 Stars (2 oy,5 üzerinden : 5,00 )
Loading ... Loading ...

Bu dersimizde düzenlemek istediğimiz siparişin yanındaki düzenle butonuna bastığımızda, sipariş formumuzun ilgili alanlarının, gelen bilgiyle nasıl doldurulacağını anlatacağım. Bunun için model dosyamızda ilgili siparişi çekebilmek için fonksiyon oluşturacağız. Aslında projenin başlarında oluşturduğumuz bir fonksiyonu tekrar düzenleyerek işe yarar hale getireceğiz.

Bunun için pizza_model.php dosyamızda bulunan get_specific_order() fonksiyonunu aşağıdaki şekilde tekrar düzenleyelim. (Bu fonksiyon mevcut değilse sizde ekleyin)

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 = $id olan verileri seçiyoruz sadece.
		return $query->row_array();	//ilgili sorgunun tablo alanlarını arraya döküyoruz.
	}

Şimdi hazırladığımız model dosyasını controller dosyamızdan çağıralım. Bunun için pizza.php (controller) dosyamızdaki order() fonksiyonuna bir if yapısı ekleyelim. Bu yapı yeni bir sipariş mi oluşturmak istiyoruz, yoksa mevcut siparişi düzenlemek mi istiyoruz, onu belirlemek için kullanılacak.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function order($id = 0) //default olarak yeni bir sipariş oluşturduğumuzda id=0 olacak
	{
 
		$this->load->helper('form');
		$this->load->helper('html');
		$this->load->model('pizza_model');
 
		if($this->input->post('mysubmit'))/
		{  
			$this->pizza_model->insert_new_entry(); 
		}
		$data=$this->pizza_model->genel();
		if((int)$id > 0){// id sıfırdan büyükse, mevcut siparişi düzenleyeceğimiz anlamına geliyor.
 
			$query = $this->pizza_model->get_specific_order($id);//model dosyamızdaki fonksiyonumuzu çağırıyoruz.
			$data['temiz_id']['value'] = $query['id'];//tablodan verileri çekip arraya atıyoruz.
			$data['temiz_isim']['value'] = $query['name'];
			$data['temiz_pizza']['value'] = $query['pizza'];
			$data['temiz_tip']['value'] = $query['type'];
			$data['temiz_adet']['value'] = $query['unit'];
			$data['temiz_adres']['value'] = $query['address'];
			if($query['thin_edge']=='yes'){
			$data['temiz_kenar']['checked'] = TRUE;
			}else{
			$data['temiz_kenar']['checked'] = FALSE;	  
			}
 
	}
 
 
		$this->load->view('pizza_order',$data);
	}

order() fonksiyonumuz artık parametre alan bir fonksiyon oldu. Bu şekilde fonksiyona parametre yolladığımızda eğer bu parametre sıfırdan büyükse, bu parametreyle eşleşen siparişi database den çekip forma aktarıyoruz. Eğer parametre göndermezsek default olarak $id=0 oluyor ve boş bir sipariş form sayfasıyla karşılaşıyoruz. Artık url den veri yollayacağız ve GET methodu ile bu veriyi almış olacağız.

Şimdi de form sayfamızda biraz düzenleme yapalım. pizza_order.php (view) dosyamızın yeni hali şöyle olacak.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<html>
<head>
<link rel="stylesheet" type="text/css" 
      href="<?php echo $base.'css/'.$css?>">
</head>
<body>
<div id="header">
<?php $this->load->view('pizza_header'); ?>
</div>
<div id="menu">
<?php 	$this->load->view('pizza_menu'); ?>
</div>
 
<?php echo heading($baslik,2)//ilk fonksiyonumuz bu ?>  
 
<?php echo form_open('pizza/order'); ?>
<?php echo $isim .':'.form_input($temiz_isim).br(); ?> 
<?php echo form_hidden('id',$temiz_id['value']); ?>  
 
 
<?php echo $pizza.':'.form_dropdown('pizza',$pizzalar,$temiz_pizza['value']).br(); ?>
 
<?php echo $tip.':'.form_dropdown('tip',$tipler,$temiz_tip['value']).br(); ?>
 
<?php echo $adet.':'.form_input($temiz_adet).br(); ?>
 
<?php echo $kenar.':'.form_checkbox($temiz_kenar).br(); ?> 
 
<?php echo $adres.':'.form_textarea($temiz_adres).br(); ?> 
 
<?php echo form_submit('mysubmit','Sipariş Ver!');  ?>
<?php echo form_close(); ?>
 
 
 
<div id="footer">
<?php $this->load->view('pizza_footer'); ?>
</div>
 
</body>
</html>

burada form_hidden şeklinde, siparişin id sini tutan bir eleman ekledik. Ayrıca dropdown menülerde seçili gelmesi gereken değerler için 3. parametreleri yazdık. Şimdi denemesini yapabiliriz. Adres çubuğumuza  şöyle yazarsak;
http://localhost/Codeigniter/index.php/pizza/order/1
1 id numaralı siparişimiz forma yansımış olmalı, yada ilgili siparişin yanındaki düzenle linkine tıklarsak da aynı işlemi yapmış oluruz. Tabiki hata almamak için 1 id numaralı siparişinizin olması gerekiyor.

Bu dersimizde verileri forma tekrar nasıl geri göndereceğimizi ve veritabanından nasıl çekeceğimizi gördük. Sonraki dersimizde ise bu gelen verileri değiştirdikten sonra güncelleme işlemlerini yapacağız.
Ayrıca isterseniz şu ana kadar tamamladığımız projenin kaynak kodlarını toplu halde paylaşabilirim. İyi günler…

<<< Önceki:

Sonraki: >>>


Facebookta Paylaş

11 yorum »

  • Hasan Hüseyin İŞLER dedi ki:

    Sipariş ver linkine tıklayınca hata veriyor. Güncelleme olayında sorun yok linke tıklayınca form içine veriler geliyor. Ama dediğim gibi boş sipariş girme sayfası çalışmıyor.

  • admin dedi ki:

    Evet dediğinizin olması muhtelem, çünkü yeni değişkenler tanımladık ve default değerleri yok. Ben onu bir sonraki dersin başında anlatacaktım ama bakıyorum benden hızlı çıktınız. 🙂

  • Hasan Hüseyin İŞLER dedi ki:

    Bu işler tam bana göre… Uğraşmayı seviyorum…

  • Mehmet Doğan dedi ki:

    Merhaba konu anlatımı için öncelikle teşekkürler, bu konu ile ilgili bir sorum olacak ben bu bilgileri çekip başka bir sayfada düzenlemesini yapmak istiyorum örneğin duzenle.php nasıl bir yol izlemeliyim form sayfasını aynen kopyalayarak submite komut vererek yapma şansım varmı?

  • admin dedi ki:

    Amacınız sadece düzenleme işini başka bir sayfada yapmak ise, dediğiniz gibi form sayfasının aynı yapısını kullanabilirsiniz. Anasayfadaki düzenleme linkini bu sayfaya yönlendirmeniz yeterli olur.

  • selcukhoca dedi ki:

    Merhaba,

    pizza.php’nin 22. satırında

    if($query['thin_edge']=='yes'){

    yes değeri gönderildiğinde. Kutu tıklanmış olarak gelmiyor. Bunun yerine bu değerin 1 olarak gönderilmesi gerekir.

  • admin dedi ki:

    Haklısınız selcukhoca, orada bir problem var. Ancak problem ‘yes’ den değil database den kaynaklanıyor. Çözüm için indirdiğimiz sql dosyasını import ettikten sonra pizza tablosunun yapısında küçük bir değişiklik yapacağız.thin_edge field ının türünü int yerine varchar(10) yapsak problem ortadan kalkıyor. Bu dersimizi anlatırken int kullanılmıştı, ancak ilerki derslerde bu varhcar a döndü. Şimdi geriye dönüp baktığımızda problem çıkıyor. Dediğim gibi yaparsanız düzelir.

  • Yahya dedi ki:

    Elinize sağlık admin. Çok iyi gidiyor..

  • eren dedi ki:

    merhabalar.sizin derslerinizi takip ederek kendi projemi geliştirmeye çalışıyorum.bu derste order fonksiyonuna eklediğimiz id leri tutan form_hidden kısmında hata veriyor sistem.

    bunun sebebi ne olabilir??

  • admin dedi ki:

    Eren,
    Su haliyle bir hata goremedim. Hatayi daha detayli belirtirsen yardimci olmaya calisirim.

  • Rohan dedi ki:

    pizza_order.php satırında $baslik için hata döndürüyor. $baslik değişkenini nerede tanımladık. Ek olarak gözden kaçırmış olabilirim ama heading fonksiyonunun görevi nedir? Kolay gelsin.

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.