Linkedin Instagram Facebook Twitter Mail Youtube Whatsapp

CodeIgniter ile Veritabanına Veri Ekleme

CodeIgniter framework ile ufak ufak projeler alıştırmalar yapmaya başlayanlar için güzel bir örnek geliyor. Bu projede standart php öğrenirken de yaptığımız ilk şeylerden birisi olan veritabanına veri ekleme işlemini yapalım.Framework mantığını kavramak adına Mvc mantığını anlamanız gerekir.  Daha önce bu konulara, codeigniter’i kavramaya çalıştıysanız zaten birçok kod bloğu görmüşsünüzdür. Bazı örnekler veritabanı kaynaklı , model ,view , controller kavramlarının bilinmemesi gibi sebepler ile oluşabilir. Ancak bu sefer oldukça basit bir CodeIgniter ile Veritabanına Veri Ekleme örneği yapacağız. Öncelikle Application/config/database.php içerisine girip gerekli veritabanı ayarlarımızı yapalım. Not: Şimdi metodların düzgün çalışması için siteadi.com/index.php yolundaki index.php ibaresini kaldıralım ki rahatça çalışabilelim. Siteadi.com/controller şeklinde çalışmak için şu makaleyi okuyarak 3 farklı yöntem ile index.php kaldırabilirsiniz. Şimdi ilk adım olarak mvc sisteminden view yani görünüm sayfasını ayarlayalım ve bir kayıt formu oluşturalım.
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">

	<title>Kayıt Formu</title>
</head>
<body>
<p>Aşağıdaki formu doldurarak kayıt olabilirsiniz</p>
<div id="container">
	<form action="<?=base_url()?>Anasayfa/kaydet" method="post">
			<table>
				<tr>
					<td>Kullanıcı Adı</td>	
					<td><input type="text" name="kadi"></td>
				</tr>
				<tr>
					<td>Şifre</td>
					<td><input type="password" name="sifre"></td>
				</tr>
				<tr>
					<td>Eposta</td>	
					<td><input type="text" name="eposta"></td>
				</tr>
			</table>
			<input type="submit" value="Kaydol">
	</form>
<div>
</div>
</body>
</html>
Yukarıdaki formda anlaşılmayacak pek bir şey yok. Base url kullanımında eğer sorun yaşarsanız Application/Config/autoload.php sayfasına gelin ve ;
$autoload['helper'] = array();
bölümünü aşağıdaki gibi güncelleyin.
$autoload['helper'] = array('url');
Burada url sınıfını kullanacağımızı belirtiyoruz. Şimdi bu formumuz bir controller ve bir metodun sayesinde bizi bir model dosyası yardımıyla kayıt işlemine sokacak. Anasayfa controller’i içine kaydet metodu çalışmış olacak. Şimdi Controller sayfamızın kodlarına bakalım. (Gerekli bütün açıklamalar mevcuttur.)
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
//Sayfaya doğrudan erişimi engeller
function __construct()
	{
		parent::__construct();
	}
class Anasayfa extends CI_Controller {
//index metodu sayfa ilk yüklendiğinde çalışacak metoddur. 
//Burada formun olduğu görünüm sayfasını yüklüyoruz.
	public function index(){
		$this->load->view('anasayfa_view.php');
	}
	public function kaydet()
	{
		/*
Kaydet metodu ile formdan gelen verileri array şeklinde alıp
birer değişkenlere atıyoruz. 
		*/
		$form_data = array(
			'name' => $this->input->post('kadi'),
			'pass' => $this->input->post('sifre'),
			'eposta' => $this->input->post('eposta')
		);
// Model sınıfımızı yüklüyoruz.(Onu şuan oluşturmadık.)
		$this->load->model('verimodel');
		$sonuc = $this->verimodel->ekle($form_data);
		/*
		Sonuçlar yani gelen veriler verimodel adındaki bir model
		sayfasındaki ekle metodunu harekete geçirecek. Formdan gelen
		verileri de burada yolladık.
		*/
		if($sonuc=1){
			echo'Kayıt Başarılı';
		}else{
			echo'Sorun var';
		}
	}
	
}
Şimdi geriye bir model dosyası ve bir metod kaldı. Sayfamızı aşağıdaki gibi oluşturalım.
<?php

class verimodel extends CI_Model{

	function __construct(){
		parent:: __construct();
		$this->load->database();
		//database sınıfını yüklüyoruz
	}
	/*formdan gelen verileri ekle fonksiyonu ile aldık
    artık ekleme işlemini yapabiliriz.
	*/
	function ekle($form_data){
		$this->db->insert('users',$form_data);
		/*$this->db->insert('users',$form_data); bu kullanım
		şeklini bilmiyorsanız bir basicdb sınıfını araştırmanızda
		fayda var.
		*/
	}

}
Evet böylece bir kayıt işlemi gerçekleştirmiş olduk. Controller sayfasında ekle metoduna verileri yollarken $form_data değişkenini kullanmıştık.Burada da aldık ve işledik. Burada herhangi bir güvenlik önlemi alınmamıştır çünkü buna şimdilik gerek yok.

Bir Yorum Yaz