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
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;
}
}
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;
}
}
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;
}
}
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);
}
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);
}
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;
}
}
public function where($array){
$this->where=$array;
}
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;
}
}
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;
}
}
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);
}
public function set_id($data=array()){
$say=count($data);
$sayi=$say+1;
return $sayi;
}
public function insert_id($data=array()){
$sayi=count($data);
return $sayi;
}
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;
}
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);
}
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;
}
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;
}
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