Turbo DB With Php & Codeigniter Framework and No Server Plugin Online Description NoSQL and Sphinx Full Text Search

(2014-10-14 22:14)

Turbo DB With Php & Codeigniter Framework Description NoSQL and Sphinx Full Text Search

Turbo DB Eklentisi Php Tabanlı NoSQL Database Ayrıca Sphinx Full Text Arama Motoru 

  •   import($tablo,$sorgu) metodu ile Codeigniter frameworküyle bağlandığınız hangi veritabanı ise onun query metoduna gönderilmek üzere ilk parametre olarak saklanan sorgunun dosya adı mantıken tablo adı olacak şekilde tablo adı, 2. parametresi ise full sql komutu olacak şekilde gönderilerek databaseden gelen dataların array() halini alıp ful metin olacak şekilde ister serialize(), isterse json_encode() ile saklayabilirsiniz.
    public function import($tablo,$sorgu){
            #dataların yedeklendiği kısım
            $query=$this->db->query($sorgu);
            $query=$query->result_array();
            if(count($query)>0){
                    $data=serialize($query);
                    $filepath=DBPATH.$tablo.'.php';
                    $dosya=fopen($filepath, 'r');

                    if ( write_file($filepath, $data)){
                            return true;
                    }else{
                        return false;
                    }

            }else{
                    return false;
            }
    }
  • save($tablo,$array) metodu ile de sql sorgusu ile metot iççerisinde uğraşmadan tablo adı 1. parametre, array() data 2. parametre olarak gönderilerek de saklanması mümkündür.
    public function save($tablo,$array=array()){
        $data=serialize($array);
        $filepath=DBPATH.$tablo.'.php';
        $dosya=fopen($filepath, 'r');

        if ( write_file($filepath, $data)){
            return true;
        }else{
            return false;
        }
     }
  • get($tablo) metodu ilede saklamış olduğumuz mevcut datların okunma işlemi yapılır biz eğer serialize() ederek data saklamış isek bunu unserialize() şeklinde okur array() data elde ederiz. Eğer json_encode() ile sakladıysak bunu json_decode() ile çözerek array() datayı alıp foreach ile gösterime alabiliriz.
    public function get($tablo){
            #yedeklenen dosyanın okunduğu kısım
            $filepath=DBPATH.$tablo.'.php';
            if(file_exists($filepath)){
                    $data = read_file($filepath);
                    $data = unserialize($data);
                    return $data;
            }else{
                    return false;
            }
    }
 
  • get_where($tablo,$where) metodu ile koşullu sorgulama yaparak saklanan tablo adı 1. parametre, where koşulu array('menu_id'=>1) şeklinde array() olarak gönderilebilir veya metot içerisindeki where() metoduna da gönderilebilir. Yalnız sorgulama eğer login işlemi içinse  class içerisinde $netice, $true  isminde public string değer $result=array() değişken tanımlanmalıdır. Metot içerisindeki sorgulama sonucu $netice ile true veya false olarak döner $result ise where koşuluna uyan dataları array() olarak gönderir
    public function get_where($tablo,$where=array()){
        $array=$this->get($tablo);
        $sayac=0;
        foreach($array as $data) {
                #datalar parse edildi
                $true=0;
                foreach($where as $name=>$value){
                    #arama yapılacak sütular çekildi                    
                    if ($data[$name]==$value){
                        //pa($value[$kolon]);
                        $sonuclar[]=$array[$sayac];
                        $true=$true+1;
                    }
                }
                if(count($where)==$true){
                    $this->netice=true;
                    $this->result[]=$array[$sayac];
                }else{
                    $this->netice=false;
                }
            $sayac=$sayac+1;
        }
        //pa($sonuclar);
        return array_unique($sonuclar);
    }
 
  • search($array,$sutunlar,$search) metodu ile saklanan data içerisinden Full text olarak Sphinx gibi arama yapabilirsiniz. 1. parametre array() saklanan arama yapılacak data, 2. parametre arama yapılacak sütunlar array('adi','soyadi','aciklama') gibi , 3. parametre ise aranacak kelimedir.
    public function search($array=array(),$sutunlar=array(),$search){
            #iç içe 2 arrayde çalışacak
        $sayac=0;
        foreach($array as $value) {
            #datalar parse edildi
            foreach($sutunlar as $kolon){
                #arama yapılacak sütular çekildi                    
                if (strstr($value[$kolon],$search)){
                    //pa($value[$kolon]);
                    $sonuclar[]=$array[$sayac];
                }
            }  
            $sayac=$sayac+1;
        }
        //pa($sonuclar);
        return array_unique($sonuclar);
    }
 
  • insert($tablo,$array) metodu ile saklanan  Turbo db ye veri eklemesi yapılır. 1. parametre tablo adı, 2. parametre array() olarak gönderilen kaydedilecek dataları ifade eder. 
    public function insert($tablo,$array=array()){
        $data=$this->get($tablo);
        $data[]=$array;
        $save=$this->save($tablo,$data);
       // var_dump($save);
        if($save){
            return true;
        }else{
            return false;
        }
    }
 
  • where($array) metodu ile update, delete ve get_where metotlarına da gönderilebilecek array() koşulu ifade eder. array('adi'=>'Birol','soyadi'=>'Kahraman') şeklinde kullanılır.
    public function where($array){
        $this->where=$array;
     }
  • update($tablo,$sutunlar,$where) metodu ile saklanan dataların üzerinde güncelleme yapılır. 1. parametre tablo adı, 2. parametre güncellenecek alanlar, 3. parametre ister where metodundan isterse buradan array() olarak koşul olarak gönderilebilir
    public function update($tablo,$sutunlar=array(),$where=array()){
        if(count($where)==0){
            $where  =  $this->where;
        }
        /* 
           $tablo= saklanan dosya adı , 
           $sutunlar= güncelleme yapılacak alan arrayi , 
           $where= where koşulunda sorgulanacak array sütunlar , 
           $text= where koşulundaki sütunlarda aranacak değer
        */
        $array= $this->get($tablo);
        $bul=$this->get_where($tablo,$where);
        $bulunan=$bul[0];
        #güncelleme yapılacak alanlar ayrıldı
        foreach ($sutunlar as $name => $value) {
            # code...
            $bulunan[$name]=$value; # bulunan datanın güncellemesi yapıldı
        }
        $id=$this->get_id($array,$where); # Güncellenen kaydın saklandığı array data id si alındı
        $array[$id]=$bulunan; # saklanan arrayde güncelleme işlendi
        $save=$this->save($tablo,$array); # son hali save edildi
        if($save){
            return true;
        }else{
            return false;
        }
    }
 
  • delete($tablo,$where) metodu ile saklanan datalar üzerinde silme işlemi yapılır.
    public function delete($tablo,$where=array()){
        if(count($where)==0){
            $where  =  $this->where;
        }
        $array= $this->get($tablo);
        $id=$this->get_id($array,$where); # silinecek kaydın id si alındı
        unset($array[$id]); # silinmesi istenen array silindi

        $save=$this->save($tablo,$array); # son hali save edildi
        if($save){
            return true;
        }else{
            return false;
        }
    }
 
  • join($ilk,$son,$where) metodu ile ilk ve son array datalarda where koşuluna göre karşılaştırma yapılır. Array sonuç döner. where koşulu array olarak array('ilk_array_alani'=>'son_array_alani') şeklinde sıralı gönderilmeli!
    public function join($ilk=array(),$son,$where=array()){
        /*
        $ilk=ilk array,
        $where = karşılaştırılacak alanlar array('ilkalan'=>'sonalan')
        */
        $true=0;
        foreach ($where as $ilki=>$sonu) {
            # code...
            if($ilk[$ilki]==$son[$sonu]){
                $id=array_search($ilk[$ilki], $ilk);
                $sonuc[]=$ilki[$id];
                $true=$true+1;
            } 
        }
                   
        if(count($where)==$true){
            $this->netice=true;
        }else{
            $this->netice=false;
        }        

        return array_unique($sonuc);
    }
 
  • set_id($data) metoduyla array olarak saklanan datalara otomatik sayı mantığı ile id ataması yapar
    public function set_id($data=array()){
        $say=count($data);
        $sayi=$say+1;
        return $sayi;
    }
 
  • insert_id($data) metodu ile ekleme yapılan datanın id alınır.
    public function insert_id($data=array()){
        $sayi=count($data);
        return $sayi;
    }
 
  • get_id($array,$where) metoduyla güncelleme ve silme işleminde kullanılmak üzere ilgili datanın array id alınır.
    public function get_id($array=array(),$where=array()){
        /*
            $array = saklanan datanın array hali,
            $where = arama yapılacak alanlar,
            $text = aranan değer.
        */
        $sayac=0;
        foreach($array as $data) {
                #datalar parse edildi
                foreach($where as $name=>$value){
                    #arama yapılacak sütular çekildi                    
                    if ($data[$name]==$value){
                        //pa($value[$kolon]);
                         $s
                    }
                }  
                $sayac=$sayac+1;
        }
        //pa($sonuclar);
        return $sonuc;
    }
 
  • desc($tablo) metodu ile tablo bilgisi alınır. (Sütun olarak)
    public function desc($tablo){
        #tablo sütun bilgilerini gönderir
        $array= $this->get($tablo);
        foreach ($array as $value) {
            foreach ($value as $name => $key) {
                $sonuc[]=$name;
            }
        }
        return array_unique($sonuc);
    }
 
  • alter($tablo,$alan) ile ilgili dataların array kalıbına sütun eklemesi yapılır. alanlar array olarak array('menu_id','kayit_tarihi');
    public function  alter($tablo,$alan=array()){
        #tabloya sütun ekler
        $array= $this->get($tablo);
        $sayac=0;
        foreach ($array as $value) {
            foreach ($value as $name => $key) {
                foreach ($alan as $kolon) {
                    if($name!=$kolon){
                        $array[$sayac][$kolon]='';
                    }
                }
            }
            $sayac=$sayac+1;
        }
        $save= $this->save($tablo, $array);
        return true;
    }
 
  • drop_alter($table,$alan) metodu ile eklenmiş alanlar veya silinmek istenen saklanan datadaki array alanlar drop_alter metodu ile silinir. Alanlar array olarak array('menu_id','kayit_tarihi'); olarak gönderilir.
    public function drop_alter($tablo,$alan=array()){
        #tablodan sütun kaldırır
                $array= $this->get($tablo);
        $sayac=0;
        foreach ($array as $value) {
            foreach ($value as $name => $key) {
                foreach ($alan as $kolon) {
                    if($name==$kolon){
                        unset($array[$sayac][$kolon]);
                    }
                }
            }
            $sayac=$sayac+1;
        }
        $save= $this->save($tablo, $array);
        return true;
    }
 
  • drop($table) metodu ilgili saklanan datanın silinmesini sağlar
    public function drop($table){
        $file_path=DBPATH.$table.'.php';
        if(file_exists($file_path)){
            if(unlink($file_path)){
                return true;
            }else{
                return false;
            }
        }else{
            return false;
        }
    }

Kullanım Notları: * Codeigniter Framewoküne uyumlu olarak çalışır , 

* Application Dizininde Appdata isimli klasör açılmalı , 

* Define ile index.php de path edildiği dizin DBPATH olarak isimlendirilmeli define("DBPATH",FCPATH."application/Appdata/"); , 

* Yazma ve okuma izinleri ayarlanmalı

* Helper class ından dosya işlemleri için "file" çağrılmalı ve write_file metodundan fopen kısmı ya kapatılmalı yada return değerinin kapatılması gerekmektedir. 

* Güvenlik için Appdata klasörünüze .htaccess dosyası açıp içine " Denny from all " ile http isteklerini engellemeniz daha güvenli olacaktır.

 

Turbo DB CEO = Birol Kahraman - Yazılım Geliştirici (Software Developer)

Contact : info@birolkahraman.com

Support : support@birolkahraman.com