Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > alt.php.sql > #32

PHP class based database system with some sql features(some queries)

Newsgroups alt.php.sql
Date 2020-05-04 01:33 -0700
References <7f7c9834-7067-4985-9115-07f5a98f9f69@googlegroups.com> <6d01fd9a-4116-4d76-8aa4-9ba6303272fb@googlegroups.com>
Message-ID <eaac2039-fefc-4b28-ad50-e2be126143af@googlegroups.com> (permalink)
Subject PHP class based database system with some sql features(some queries)
From kristjan1291983@gmail.com

Show all headers | View raw


SQL allowed queries:

select * from classa;

select a from classa;

select * from classa join classb on (classa.a=classb.c);

select * from classa where a=abc and b=abcd;

select * from classa where a=abc;


databasesystem.php:

<?php

class Dbobj {
   function getNameOfClass()
   {
      return static::class;
   }
}

class Easydbsystem {
	
    var $dbtables;

    function gettime() {
       return date("d.m.Y H:i:s");
    }
    
    function saveobjecttables() {
        $tabls=$this->dbtables;
        for($i=0; $i<count($tabls); $i++) {
              $oc=$tabls[$i][0]->getNameOfClass();
              if (file_exists($oc.".edb")) {
                    unlink($oc.".edb");
              }              
              $b=serialize($tabls[$i]);
              $fh = fopen($oc.".edb", "a");
              fwrite($fh, $b);
              fclose($fh);
              chmod($oc.".edb", 0700);
	}
        return true;
    }

    function saveobjecttable($objcl) {
        $tabls=$this->dbtables;
        $obclindex=-1;
        for($i=0; $i<count($tabls); $i++) {
           if($tabls[$i][0]->getNameOfClass()==$objcl) {
              $obclindex=$i;
              break;
           }
        }
        if (file_exists($objcl.".edb")) {
           unlink($objcl.".edb");
        }
        $b=serialize($tabls[$obclindex]);
        $fh = fopen($objcl.".edb", "a");
        fwrite($fh, $b);
        fclose($fh);
        chmod($objcl.".edb", 0700);
        return true;
    }


    function makearrayunique($array){
        $duplicate_keys = array();
        $tmp = array();
        
        foreach ($array as $key => $val){
           if (is_object($val))
            $val = (array)$val;
        
           if (!in_array($val, $tmp))
            $tmp[] = $val;
            else $duplicate_keys[] = $key;
        }
        
        foreach ($duplicate_keys as $key)
          unset($array[$key]);
         return $array;
    }

    function deleteduplicates() {
        $ob=$this->dbtables;
        for($i=0; $i<count($ob); $i++) {
           $o12=$this->makearrayunique($ob[$i]);
           $ob[$i]=$o12;
        }
        $this->saveobjecttables();
    }

    function deleteduplicatescl($objcl) {
        $ob=$this->dbtables;
        $obclindex=-1;
        for($i=0; $i<count($ob); $i++) {
           if($ob[$i][0]->getNameOfClass()==$objcl) {
              $obclindex=$i;
              break;
           }
        }        
        $o12=$this->makearrayunique($ob[$obclindex]);
        $ob[$obclindex]=$o12;
        $this->dbtables=$ob;
        $this->saveobjecttable($objcl);
    }


    function loadobjecttables() {	
		$dbtables = array();
		foreach (glob("*.edb") as $file) {
                $path_parts = pathinfo($file);
                if(!class_exists($path_parts['filename'])) {
                 continue;
                }
                $file1 = file_get_contents($file, true);
		  $dbtables[] = unserialize($file1);
		}
		$this->dbtables=$dbtables;
    }
    function deleteotable($otabname) {	
        if (file_exists($otabname.".edb")) {
            unlink($otabname.".edb");
        }
        $this->loadobjecttables();
    }
	
    function insertobject($obj) {
        $this->loadobjecttables();
        $oclass=$obj->getNameOfClass();
        $tabls=$this->dbtables;
        $oarridx=-1;
        for($i=0; $i<count($tabls); $i++) {
			if($tabls[$i][0]->getNameOfClass()==$oclass) {
				   $oarridx=$i;
			}
		}
		if($oarridx==-1) return false;
        $tabls[$oarridx][]=$obj;
        unlink($tabls[$oarridx][0]->getNameOfClass().".edb");
        $b=serialize($tabls[$oarridx]);
        $fh = fopen($tabls[$oarridx][0]->getNameOfClass().".edb", "a");
        fwrite($fh, $b);
        fclose($fh);
        chmod($tabls[$oarridx][0]->getNameOfClass().".edb", 0700);
    }
    function objectClassestoarray($objectA, 
                        $objectB) {      
       $new_object = array(); 
          
       foreach($objectA as $property => $value) { 
           $new_object[$property]=$value;
       } 
              
       foreach($objectB as $property => $value) { 
           $new_object[$property]=$value;
       } 
          
       return $new_object; 
    } 
        

    function query($query) {
		$this->loadobjecttables();
        $ovars=array();
        $objects=$this->dbtables;
        for($i=0; $i<count($objects); $i++) {
            $ovars[]=array_keys(get_object_vars($objects[$i][0]));       
        }
        $mches=array();
        $results=null;
		$exitf=false;
		
        for($i=0; $i<count($objects); $i++) {
			if($exitf) break;
            for($j=0; $j<count($ovars); $j++) {
				if($exitf) break;
                                if(!class_exists($objects[$i][0]->getNameOfClass())) continue;
                if(preg_match("/^select \* from ".$objects[$i][0]->getNameOfClass().";$/",$query)) {
                    $objectsList = [];
					foreach ($objects[$i] as $obj) {        
						$objectsList[] = (array)$obj;
					}
					return $objectsList;
					$exitf=true;
                }   
            }
        }
		
        for($i=0; $i<count($objects); $i++) {
			if($exitf) break;
            for($j=0; $j<count($ovars); $j++) {
				if($exitf) break;
                                if(!class_exists($objects[$i][0]->getNameOfClass())) continue;                                
                if(preg_match("/^select ".$ovars[$i][$j]." from ".$objects[$i][0]->getNameOfClass().";$/",$query)) {
                    return array_column($objects[$i], $ovars[$i][$j]);
					$exitf=true;
                }   
            }
        }
        
        $outp=array();
        for($i=0; $i<count($objects); $i++) {
			if($exitf) break;			
            for($j=0; $j<count($ovars[$i]); $j++) {
				if($exitf) break;
				for($k=0; $k<count($objects); $k++) {
					if($exitf) break;
                    for($l=0; $l<count($ovars[$k]); $l++) {
						if($exitf) break;
                                if(!class_exists($objects[$i][0]->getNameOfClass())) continue;
                                if(!class_exists($objects[$k][0]->getNameOfClass())) continue;
                                                
                        if(preg_match("/^select \* from ".$objects[$i][0]->getNameOfClass()." join ".$objects[$k][0]->getNameOfClass().
                        " on \(".$objects[$i][0]->getNameOfClass()."\.".$ovars[$i][$j]."\=".$objects[$k][0]->getNameOfClass().
                        "\.".$ovars[$k][$l]."\);$/",$query)) {
                            for($ii=0; $ii<count($objects[$i]); $ii++) {
                                    for($ii2=0; $ii2<count($objects[$k]); $ii2++) {
                                          if($objects[$i][$ii]->{$ovars[$i][$j]}==$objects[$k][$ii2]->{$ovars[$k][$l]}) {                                             
                                             $oobj = $this->objectClassestoarray($objects[$i][$ii], $objects[$k][$ii2]); 
                                             $outp[]=$oobj;
                                          }
                                    }
                            }
						$exitf=true;
                        } 
                    }
                }
            }
        }

        for($k=0; $k<count($objects); $k++) {
            if($exitf) break;
            for($l=0; $l<count($ovars[$k]); $l++) {
                if($exitf) break;
				for($l2=0; $l2<count($ovars[$k]); $l2++) {
					if($exitf) break;	
                                if(!class_exists($objects[$k][0]->getNameOfClass())) continue;
                                        
					if(preg_match("/^select \* from ".$objects[$k][0]->getNameOfClass()." where ".$ovars[$k][$l]."\=(.*) and ".$ovars[$k][$l2]."\=(.*);$/",$query, $matches)) {
								for($ii2=0; $ii2<count($objects[$k]); $ii2++) {
									  if($objects[$k][$ii2]->{$ovars[$k][$l]}==$matches[1]&&$objects[$k][$ii2]->{$ovars[$k][$l2]}==$matches[2]) {   
										 $oobj = (array)$objects[$k][$ii2]; 
										 $outp[]=$oobj;
									  }
								}
								$exitf=true;
					} 
				}
            }
        }

        
        for($k=0; $k<count($objects); $k++) {
            if($exitf) break;
            for($l=0; $l<count($ovars[$k]); $l++) {
                if($exitf) break;
                if(!class_exists($objects[$k][0]->getNameOfClass())) continue;
                if(preg_match("/^select \* from ".$objects[$k][0]->getNameOfClass()." where ".$ovars[$k][$l]."\=(.*);$/",$query, $matches)) {
                            for($ii2=0; $ii2<count($objects[$k]); $ii2++) {
                                  if($objects[$k][$ii2]->{$ovars[$k][$l]}==$matches[1]) {   
                                     $oobj = (array)$objects[$k][$ii2]; 
                                     $outp[]=$oobj;
                                  }
                            }
                            $exitf=true;
                } 
            }
        }
        
        if(count($outp)>0) {
           return $outp;
        }


        return $mches;        
    }

}

?>

Who wants me to add features to it, e-mail me. It will cost at least 100 $-s. 

Kristjan Robam
372 6861327
kri st ja n 12 9 19 83 @ g ma il . c o m

Back to alt.php.sql | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Easy php db system, that saves data to files and needs only one file( itself) Kristjan Robam <robamman2020@hotmail.com> - 2020-03-20 12:28 -0700
  Re: Easy relative php db system, that saves data to files and needs only one file( itself) Kristjan Robam <robamman2020@hotmail.com> - 2020-03-20 22:29 -0700
  Easy object based relational php database system that saves data to files only needing 1 file (the system php file) Kristjan Robam <robamman2020@hotmail.com> - 2020-03-21 06:00 -0700
    PHP class based database system with some sql features(some queries) kristjan1291983@gmail.com - 2020-05-04 01:33 -0700
      Re: PHP class based database system with some sql features(some queries) "J.O. Aho" <user@example.net> - 2020-05-04 15:21 +0200
        Re: PHP class based database system with some sql features(some queries) "J.O. Aho" <user@example.net> - 2020-05-04 17:29 +0200
          Re: PHP class based database system with some sql features(some queries) kristjan1291983@gmail.com - 2020-05-05 02:45 -0700
            Re: PHP class based database system with some sql features(some queries) kristjan1291983@gmail.com - 2020-05-05 08:01 -0700
            Re: PHP class based database system with some sql features(some queries) "J.O. Aho" <user@example.net> - 2020-05-05 18:33 +0200
              Re: PHP class based database system with some sql features(some queries) kristjan1291983@gmail.com - 2020-05-05 19:35 -0700
          Re: PHP class based database system with some sql features(some queries) "J.O. Aho" <user@example.net> - 2020-05-05 18:19 +0200

csiph-web