Codeigniter Dersleri – 18 – Database Veri Güncelleme (Updating Data)
Bir önceki dersimizde verileri düzenlemek için forma göndermiştik. Ama bir sorunla karşı karşıya kaldık. pizza_order.php (view) dosyamıza yeni değişkenler ekledik ancak bunlara default değerler atamadık. Böyle olunca düzenleme değilde direk sipariş verme sayfasında girdiğimizde hatayla karşılaşıyoruz. Bunun çözümü dediğim gibi çok basit. Bu değişkenlere default değerler vermek. Bunun için pizza_model.php dosyamıza giriyoruz ve genel() fonksiyonumuzun herhangi bir yerine aşağıdaki kodları ekliyoruz. (Ben kodlarımı $data[‘menu’] = $menu->show_menu(); satırından sonra ekliyorum.)
Şimdi istediğimiz gibi formumuzu kullanabiliriz. İster yeni sipariş için isterse sipariş düzenlemek için, ancak bir sorun daha var aslında. Sipariş düzenlemek için tıkladığınızda ve yeniden submit ettiğinizde kodlarımız düzenleme işi yerine yeni bir sipariş ekliyor olacak. Bugünkü dersimizde bunu halledeceğiz.
Öncelikle siparişimizi düzenlediğimizde düzenleme işini yapacak fonksiyonu yazacağız. Bunu model dosyamıza aşağıdaki fonksiyonu ekleyerek hallediyoruz.
Şimdi de controller dosyamızda gelen submitin yeni sipariş mi yoksa düzenleme mi olduğuna karar veren bir if-else yapısı yazacağız. Bunun için pizza.php(controller) dosyamızdaki order() fonksiyonunda bulunan if($this->input->post(‘mysubmit’)) {} yapısını aşağıdaki şekilde tekrar düzenliyoruz.
Şimdi denemelerimizi yapabiliriz, Önce yeni bir sipariş girin daha sonra girdiğiniz siparişi düzenlemeyi deneyin. Update dersimizde bugünlük bu kadar. İyi günler…
Bunlara da Göz Atmak İsteyebilirsiniz.
<<< Önceki: Codeigniter Dersleri – 17 – Seçili Bilgiyi Forma Gönderme
Sonraki: Codeigniter Dersleri – 19 – Database Veri Silme (Deleting Data) >>>
order_upadete() fonksiyonunda daha önce yazmış olduğumuz insert_new_entry() fonksiyonundan farklı olarak $this->load->database(); satırını kullanmadık ve buna rağmen database sınıfının fonksiyonu olan where ve update fonksiyonlarını kullanabildik. Yani model dosyasının herhangi bir yerinde 1 kere $this->load->database(); database sınıfını yükleyince başka fonksiyonlarda yüklemeye gerek kalmıyor mu?
Aynı şekilde insert_new_entry den de sildim dediğim satırı kodlar çalıştı. Sorun yok. Peki biz neden database sınıfını yüklüyoruz o zaman_?
Haklısınız, dediğiniz satıra gerek yok. Ben onu yanlışıkla yazmış olabilirim. Normalde database işlemi yapacağınız zaman her fonksiyonun içinde çağırmanız gerekiyor. Ancak biz her fonksiyonda sıklıkla kullanılan kodları. function __construct() fonksiyonu içine yazıyoruz. Böylece o komutun bir kere çağrılması yeterli oluyor ve heryerden kullanabiliyoruz. Ama dediğiniz gibi classın herhangi bir yerinde değil construct içinde kullanılırsa geçerli. Yazıyı düzelttim.
Admin, teşekkürler. Bir soru:
Ben ısrarla db’deki varchar’ı değişikliğini yapmadım. Kayıt oluştururken sıkıntı yok. 1 ya da 0 yazdırıyorum.
Seçili datayı çekerken controller’da:
if($query['pizzaThinEdge'] == 1)
{
$data['kenar']['checked'] = TRUE;
}else{
$data['kenar']['checked'] = FALSE;
}
diyorum ama işe yaramıyor.
Form oluştururken:
diye oluşturuyorum. Tabii ki bu arada controllerda
if ($selectedID > 0> {
...
$data['kenar']['value'] = $query['pizzaThinEdge'];
}
demeyi ihma etmiyorum. Echo edildiğinde 1 ya da 0 doğru olarak geliyor. Sorun nerede olabilir?
Eğer database de değişiklik yapmayıp, int olarak kullanmak istiyorsanız, 3 yerde değişiklik yapmanız gerekiyor. pizza.php içerisinde order fonksiyonunda ilgili yeri
if ( $ query['thin_edge ']== 1){
şeklinde pizza_model.php içerisinde order_update fonksiyonunda ve insert_new_entry fonksiyonundaki ise ilgili yerleri
'thin_edge' = >$this - >input- >post( 'kenar )= ='yes '? 1:0,
şeklinde düzenlemen gerekiyor. Çünkü checkbox seçildiğinde yes değeri döndürür.
Teşekkür ederim admin, cevapsız soru bırakmamak için harcadığınız emeğe teşekkür ederim.
deneme yanılmalarla ben de şöyle bir yol buldum, sadece view’da değişlik yaptım, sorun olur mu bilmiyorum ama çalışıyor gibi:
echo form_checkbox('kenar',1,$kenar['checked']);
Tekrar teşekkür ederim,
merhabalar.
veri tabanına veri ekleme ve veri güncelleme fonksiyonlarında tanımladığımız ‘cost’ değerleri ne işe yarıyor??
ben kendi projemi geliştirmeye çalışıyorum ve kendi sitemde ‘cost’ değerleri tanımladığımda düzgün çalışan site hata veriyor.
Merhaba eren,
cost değeri sadece bizim projeye ait bir özellik. Kullanmak zorunda değilsin. Şöyleki orada bulunan cost değeri sipariş verilen pizzanın tutarı. Projeyi geliştirirken aslında cost değeri seçilen pizzaya göre bir fonksiyonda hesaplanıp database e o şekilde yazılacak. Ancak bununla zaman kaybetmemek için cost değeriyle uğraşmıyoruz ve her pizzanın cost değerini 20 yapıyoruz. Çok önemli bir şey değil sonuçta.
Merhaba,
düzenle dedikten sonra bütün alanlar dolu geliyor ancak “ince kenar” checkbox işaretli gelemiyor. Bunun bir çözümü var mı acaba?
Yorum Bırakın!
En Son Yazılanlar
Codeigniter Dersleri
Kategoriler
Teknoloji Haberleri
Android Dersleri
Arşiv
Sitemizin QR Kodu
Yeniliklerden İlk Sizin Haberiniz Olsun
KodMerkezi.Net Facebookta
En Çok Okunanlar
En Son Aranan Kelimeler
En Çok Oy Alanlar
Etiket Bulutu
İlginizi Çekecek Siteler
Arşiv
Yönetim
En Son Yapılan Yorumlar
En Çok Okunanlar