Codeigniter Aktif Kayıt: Ekle, Seç, Güncelle, Sil
Veriler çoğu uygulamanın ana damarıdır. Verilerin, içgörü sağlamak ve iş kararlarını kolaylaştırmak için daha fazla analiz edilebilecek şekilde saklanması gerekir. Veriler genellikle veritabanında saklanır. Veritabanıyla etkileşimde bulunulurken karşılaşılan başlıca kaygılar arasında güvenlik, erişim kolaylığı ve Yapılandırılmış Sorgu Dilinin (SQL) veritabanı sağlayıcısına özel uygulamaları yer alır.
Aktif kayıt, veritabanıyla kolay, güvenli ve anlaşılır bir şekilde etkileşime geçmeyi kolaylaştıran bir tasarım modelidir.
Aktif kaydın aşağıdaki avantajları vardır
- Aktif kaydın basit yöntem zincirleriyle kayıtları ekleyin, güncelleyin ve silin
- Parametreleri kullanarak kullanıcı girişini güvenli bir şekilde gönderir
- Gibi birden fazla veritabanı motoruyla çalışmanıza olanak tanır MySQL, SQL Server vb. uygulama kodunu yeniden yazmadan
- CodeIgniter arka planda her veritabanı motoruna özel sürücüleri kullanır.
Aktif Kayıt nasıl kullanılır: Örnek
Bu eğitimde, eğitim veritabanını ele alacağız. İki tablomuz olacak, biri siparişler diğeri detaylar.
Bu eğitimde aşağıdaki bilgilere sahip olduğunuz varsayılmaktadır: MySQL veritabanı kurulu ve çalışır durumda.
Eğitim veritabanını oluşturmak için aşağıdaki betikleri çalıştırın:
CREATE SCHEMA ci_active_record; USE ci_active_record; CREATE TABLE `order_details` ( `id` int(11) NOT NULL AUTO_INCREMENT, `order_id` int(11) DEFAULT NULL, `item` varchar(245) DEFAULT NULL, `quantity` int(11) DEFAULT '0', `price` decimal(10,2) DEFAULT '0.00', `sub_total` decimal(10,2) DEFAULT '0.00', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT = 1; CREATE TABLE `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` timestamp NULL DEFAULT NULL, `customer_name` varchar(245) DEFAULT NULL, `customer_address` varchar(245) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT = 1;
Yukarıdaki kod ci_active_record adlı bir veritabanı oluşturur ve orders ve order_details adlı iki tablo oluşturur. İki tablo arasındaki ilişki orders tablosundaki sütun kimliği ve order_details tablosundaki order_id ile tanımlanır.
CodeIgniter Veritabanı Yapılandırması
Şimdi uygulamamızı bu veritabanıyla iletişim kurabilecek şekilde yapılandıracağız.
application/config/database.php dosyasında bulunan veritabanı yapılandırma dosyasını açın
Yapılandırma dosyasında aşağıdaki satırları bulun
'hostname' => 'localhost', 'username' => '', 'password' => '', 'database' => '',
Yukarıdaki kodu aşağıdakine güncelleyin
'hostname' => 'localhost', 'username' => 'root', 'password' => 'letmein', 'database' => 'ci_active_record',
Not: kullanıcı adınızı ve şifrenizi yapılandırmanıza uygun olanlarla değiştirmeniz gerekecektir. MySQL.
Veritabanı yapılandırma ayrıntılarına ek olarak, CodeIgniter'a yükleme sırasında veritabanı kitaplığını yüklemesini de söylememiz gerekiyor
) 1 Adım Aşağıdaki application/config/autoload.php dosyasını açın
) 2 Adım $autoload dizi anahtarı kitaplıklarını bulun ve veritabanı kitaplığını aşağıda gösterildiği gibi yükleyin.
$autoload['libraries'] = array('database');
İŞTE,
- Yukarıdaki kod, uygulama başlatıldığında veritabanı kitaplığını yükler.
CodeIgniter Aktif Kayıt Ekle
Test amacıyla, uygulamamızla aktif kayıt aracılığıyla etkileşimde bulunmak için kullanacağımız bir denetleyici ve tanımlanmış yollar oluşturacağız.
Yeni bir uygulama/kontrolörler/ActiveRecordController.php dosyası oluşturun
Aşağıdaki kodu ActiveRecordController.php'ye ekleyin
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class ActiveRecordController extends CI_Controller { public function store_order(){ $data = [ 'date' => '2018-12-19', 'customer_name' => 'Joe Thomas', 'customer_address' => 'US' ]; $this->db->insert('orders', $data); echo 'order has successfully been created'; } }
İŞTE,
- $data = […], veritabanı tablo adlarını dizi anahtarları olarak kullanan ve bunlara değer atayan bir dizi değişkeni verisini tanımlar
- $this->db->insert('siparişler', $veri); veritabanı kitaplığının ekleme yöntemini çağırır, tablo adı siparişlerini ve parametre olarak $data dizi değişkenini iletir. Bu satır, alan adları olarak dizi anahtarlarını ve veritabanına eklenecek değerler olarak dizi değerlerini kullanarak SQL INSERT deyimini oluşturur.
Artık aktif kayıt için denetleyici yöntemini başarıyla oluşturduğumuza göre, artık denetleyici yöntemini yürütmek için çağıracağımız bir rota oluşturmamız gerekecek.
Şimdi Routes.php dosyasını application/config/routes.php dosyasında açın.
rotalara aşağıdaki satırı ekleyin
$route['ar/insert'] = 'activerecordcontroller/store_order';
İŞTE,
- ActiveRecordController'ın Store_order'ını çağıran bir ar/insert rotası tanımlarız.
Şimdi yöntemimizi test etmek için web sunucusunu başlatalım.
PHP için yerleşik sunucuyu başlatmak için aşağıdaki komutu çalıştırın
cd C:\Sites\ci-app php -S localhost:3000
İŞTE,
- Yukarıdaki komut tarayıcısını komut satırına gidin ve yerleşik sunucuyu 3000 numaralı bağlantı noktasından başlatın.
Aşağıdaki URL'yi tarayıcınıza yükleyin
http://localhost:3000/ar/insert
Aşağıdaki sonuçları elde edeceksiniz
order has successfully been created
Açın MySQL öğretici veritabanı ve siparişler tablosunu kontrol edin
Aşağıdaki resimde gösterildiği gibi yeni oluşturulan satırı yapabileceksiniz
CodeIgniter Aktif Kaydı Seçin
Bu bölümde veritabanımızda bulunan kayıtların nasıl okunacağını ve web tarayıcısında sırasız liste halinde nasıl görüntüleneceğini göreceğiz.
ActiveRecordController'a aşağıdaki yöntemi ekleyin
public function index() { $query = $this->db->get('orders'); echo "<h3>Orders Listing</h3>"; echo "<ul>"; foreach ($query->result() as $row) { echo "<li>$row->customer_name</li>"; } echo "</ul>"; }
İŞTE,
- $query = $this->db->get('siparişler'); tüm alanları seçerek seçme sorgusunu siparişler tablosunda çalıştırır
- Eko " Sipariş Listeleme ”; 4 boyutunda bir HTML başlığı görüntüler
- Eko " ”; sıralanmamış HTML listesi için açılış etiketini yazdırır
- foreach ($query->result() as $row) {…}, veritabanından döndürülen sonuçlar arasında döngü yapmak için for döngüsünü kullandı. Eko " $row->müşteri_adı ”; müşteri_adını veritabanından yazdırır
Aşağıdaki URL'yi yüklemeden önce veritabanına birkaç kayıt daha yükleyebilirsiniz.
Şimdi SELECT sorgusu için bir rota tanımlayalım
application/config/routes.php tablosunu açın
Aşağıdaki rotayı ekleyin
$route['ar'] = 'activerecordcontroller';
İŞTE,
- Route ar, ActiveRecordController sınıfının indeks yöntemine işaret eder. Bu varsayılan olarak budur, bu nedenle kayıt ekleyen rota için yaptığınız gibi indeks yöntemini belirtmedik.
Web sunucusunun zaten çalıştığını varsayarak, aşağıdaki URL'yi yükleyin
http://localhost:3000/ar
Web tarayıcınızda aşağıdakine çok benzer sonuçlar görebilmelisiniz
CodeIgniter Aktif Kaydı Güncelle
Bu bölümde veritabanını güncellemek için aktif kaydın nasıl kullanılacağından bahsedeceğiz. Diyelim ki Joe Thomas müşteri adını Joe olarak güncellemek istiyoruz.
ActiveRecordController sınıfına aşağıdaki yöntemi ekleyin
public function update_order() { $data = [ 'customer_name' => 'Joe', ]; $this->db->where('id', 1); $this->db->update('orders', $data); echo 'order has successfully been updated'; }
İŞTE,
- $data = […] veritabanı tablosunda güncellemek istediğimiz alanları ve değerleri tanımlar
- $this->db->where('id', 1); güncelleme sorgusunun nerede yan tümcesini ayarlar
- $this->db->update('siparişler', $veri); SQL güncelleme sorgusunu oluşturur ve veritabanımızda yürütür.
Yukarıdaki kod aşağıdaki SQL ifadesini üretecektir
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Şimdi Routes.php application/config/routes.php dosyasını güncelleyelim.
Aşağıdaki rotayı ekleyin
$route['ar/update'] = 'activerecordcontroller/update_order';
Değişiklikleri kaydedin
Aşağıdaki URL'yi web tarayıcısına yükleyin
Şimdi veritabanı kayıtlarını görüntüleyelim ve değişikliklerin etkilenip etkilenmediğine bakalım.
Yukarıda verilen görselden de görebileceğiniz gibi ilk kayıt Joe Thomas'tan Joe'ya güncellendi.
CodeIgniter Aktif Kaydı Sil
Şimdi veritabanından bir kaydı sileceğiz. id numarası 3 olan kaydı sileceğiz.
ActiveRecordController'a aşağıdaki yöntemi ekleyin
public function delete_order() { $this->db->where('id', 3); $this->db->delete('orders'); echo 'order has successfully been deleted'; }
İŞTE,
- $this->db->where('id', 1); Where cümleciğini ayarlar
- $this->db->delete('siparişler'); Where cümleciği kullanılarak belirlenen kriterlere göre siparişler tablosundaki veritabanı satırını siler.
Yukarıdaki kodu çalıştırmak için web tarayıcımıza aşağıdaki URL'yi yükleyin
http://localhost:3000/ar/delete
ÖZET
Bu öğreticide, veritabanından kayıt eklemek, güncellemek, silmek ve seçmek için etkin bir kayıtla nasıl çalışılacağını öğrendiniz. Kayıt oluşturmak, güncellemek ve silmek için statik değerlerle çalıştık. Bir sonraki eğitimde kullanıcının veritabanında dinamik olarak kayıt oluşturmak için kullanabileceği bir kullanıcı arayüzü oluşturacağız.