Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss
Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

Includable simple object based relational php database, that saves data to files and uses only 1 file (the database system php file)

12 views
Skip to first unread message

Kristjan Robam

unread,
Mar 21, 2020, 12:43:50 PM3/21/20
to
Author: Kristjan Robam
Tel. 372 6861327
E-mail: robam man 20 20 @ hot mail . com

includablesimpleobjectbasedrelationalphpdb.php :

<?php

class Myobj {
public $a;
public $a2;
public function getNameOfClass()
{
return static::class;
}
}

class Myobj2 {
public $a2;
public $a3;
public function getNameOfClass()
{
return static::class;
}
}

class Easyphpdb {

private $dbtables;
function setvalue($a) {
$this->dbtables=$a;
}
function getvalue() {
return $this->dbtables;
}

function saveobjecttable($obj, $name) {
if (file_exists($name)) {
return false;
}
$b=serialize($obj);
$fh = fopen($name.".edb", "a");
fwrite($fh, $b);
fclose($fh);
return true;
}
function loadobjecttables() {
$dbtables = array();
foreach (glob("*.edb") as $file) {
$file1 = file_get_contents($file, true);
$dbtables[] = unserialize($file1);
}
$this->setvalue($dbtables);
}
function deleteotable($otabname) {
if (file_exists($otabname.".edb")) {
unlink($otabname.".edb");
}
$this->loadobjecttables();
}

function insertobject($obj) {
$this->loadobjecttables();
$oclass=$obj->getNameOfClass();
echo $oclass;
$tabls=$this->getvalue();
$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);
}
function convertObjectClass($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->getvalue();
for($i=0; $i<count($objects); $i++) {
$ovars[]=array_keys(get_object_vars($objects[$i][0]));
}
$mches=false;
$results=null;

for($i=0; $i<count($objects); $i++) {
for($j=0; $j<count($ovars); $j++) {
if(preg_match("/^select ".$ovars[$i][$j]." from ".$objects[$i][0]->getNameOfClass().";$/",$query)) {
return array_column($objects[$i], $ovars[$i][$j]);
$mches=true;
break;
}
}
}


for($i=0; $i<count($objects); $i++) {
for($j=0; $j<count($ovars); $j++) {
for($k=0; $k<count($objects); $k++) {
for($l=0; $l<count($ovars); $l++) {
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)) {

$outp=array();

$oobj = $this->convertObjectClass($objects[$i][0], $objects[$k][0]);
$outp[]=$oobj;
$mches=true;
return $outp;
break;
}
}
}
}
}


return $mches;
}

}

$aone=array();

$a1=new Myobj();
$a1->a="11111";
$a1->a2="22222";
$aone[]=$a1;

$a1=new Myobj();
$a1->a="33333";
$a1->a2="44444";
$aone[]=$a1;

$atwo=array();

$a1=new Myobj2();
$a1->a2="22222";
$a1->a3="12345";
$atwo[]=$a1;

$a1=new Myobj2();
$a1->a2="44444";
$a1->a3="67890";
$atwo[]=$a1;

$mydb=new Easyphpdb();

//$mydb->saveobjecttable($aone, "Myobj");
//$mydb->saveobjecttable($atwo, "Myobj2");

$a1=new Myobj();
$a1->a="333335";
$a1->a2="444445";

//$mydb->insertobject($a1);
//$mydb->deleteotable("Myobj");

print_r($mydb->query("select a from Myobj;"));
//print_r($mydb->query("select a2 from Myobj2;"));

//print_r($mydb->query("select * from Myobj join Myobj2 on (Myobj.a2=Myobj2.a2);"));



?>

Kristjan Robam

unread,
Mar 22, 2020, 2:34:53 AM3/22/20
to
Corrected function name.

File:
function objectClassestoarray($objectA,
$oobj = $this->objectClassestoarray($objects[$i][0], $objects[$k][0]);

Kristjan Robam

unread,
Mar 25, 2020, 4:11:07 PM3/25/20
to
Code update.

dbsys.php:

<?php

class Myobj {
public $a;
public $a2;
public function getNameOfClass()
{
return static::class;
}
}

class Myobj2 {
public $a2;
public $a3;
public function getNameOfClass()
{
return static::class;
}
}

class Easyphpdb {

private $dbtables;
function setvalue($a) {
$this->dbtables=$a;
}
function getvalue() {
return $this->dbtables;
}

function saveobjecttable($obj, $name) {
if (file_exists($name)) {
return false;
}
$b=serialize($obj);
$fh = fopen($name.".edb", "a");
fwrite($fh, $b);
fclose($fh);
chmod($name.".edb", 0700);
return true;
}
function loadobjecttables() {
$dbtables = array();
foreach (glob("*.edb") as $file) {
$file1 = file_get_contents($file, true);
$dbtables[] = unserialize($file1);
}
$this->setvalue($dbtables);
}
function deleteotable($otabname) {
if (file_exists($otabname.".edb")) {
unlink($otabname.".edb");
}
$this->loadobjecttables();
}

function insertobject($obj) {
$this->loadobjecttables();
$oclass=$obj->getNameOfClass();
$tabls=$this->getvalue();
$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->getvalue();
for($i=0; $i<count($objects); $i++) {
$ovars[]=array_keys(get_object_vars($objects[$i][0]));
}
$mches=false;
$results=null;
for($i=0; $i<count($objects); $i++) {
for($j=0; $j<count($ovars); $j++) {
if(preg_match("/^select ".$ovars[$i][$j]." from ".$objects[$i][0]->getNameOfClass().";$/",$query)) {
return array_column($objects[$i], $ovars[$i][$j]);
$mches=true;
break;
}
}
}

$outp=array();

for($i=0; $i<count($objects); $i++) {
for($j=0; $j<count($ovars[$i]); $j++) {
for($k=0; $k<count($objects); $k++) {
for($l=0; $l<count($ovars[$k]); $l++) {
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;
}
}
}
}
}
}
}
}
if(count($outp)>0) {
return $outp;
}


return $mches;
}

}

$aone=array();

$a1=new Myobj();
$a1->a="11111";
$a1->a2="22222";
$aone[]=$a1;

$a1=new Myobj();
$a1->a="33333";
$a1->a2="44444";
$aone[]=$a1;

$atwo=array();

$a1=new Myobj2();
$a1->a2="22222";
$a1->a3="12345";
$atwo[]=$a1;

$a1=new Myobj2();
$a1->a2="44444";
$a1->a3="67890";
$atwo[]=$a1;

$a1=new Myobj2();
$a1->a2="11111";
$a1->a3="67888";
$atwo[]=$a1;


$mydb=new Easyphpdb();

/*
$mydb->saveobjecttable($aone, "Myobj");
$mydb->saveobjecttable($atwo, "Myobj2");
*/
/*
$a1=new Myobj();
$a1->a="333335";
$a1->a2="444445";

$a1=new Myobj2();
$a1->a2="44444";
$a1->a3="67800";

//$mydb->insertobject($a1);
//$mydb->deleteotable("Myobj");

var_dump($mydb->query("select a from Myobj;"));
var_dump($mydb->query("select a2 from Myobj2;"));
*/
var_dump($mydb->query("select * from Myobj join Myobj2 on (Myobj.a2=Myobj2.a2);"));
var_dump($mydb->query("select * from Myobj join Myobj2 on (Myobj.a=Myobj2.a2);"));



?>


Kristjan Robam
E-mail: rob am man 20 20 @ hot mail . com
(Please remove spaces...)

kristja...@gmail.com

unread,
May 4, 2020, 4:35:07 AM5/4/20
to
New version available now….

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

0 new messages