function testxmlDatabaseReal()
 {
     $xmlDb = new xmlDb('databasename');
     $xmlTable = new xmlTable('table');
     $xmlTable->addField(new xmlField('field', 'name'));
     $this->assertNoErrors($xmlDb->addTable($xmlTable));
     $this->assertEqual($xmlDb->getDisplayFields(), array('name'));
     $this->assertEqual($xmlDb->getTables(), array($xmlTable));
 }
Beispiel #2
0
 function package($xmlTree)
 {
     if (isset($xmlTree[0])) {
         $dataTreeAndMeta = $xmlTree[0]['_ELEMENTS'];
         $dataTree = $dataTreeAndMeta[0]['_ELEMENTS'];
         //DB name
         $xmlDb = new xmlDb($dataTree[0]['_ELEMENTS'][0]['_DATA']);
         //DB tables
         for ($index = 1; $index < sizeof($dataTree[0]['_ELEMENTS']); $index++) {
             $xmlDb->addTable(xmlPackage::__breakupContents($dataTree[0]['_ELEMENTS'][$index]['_ELEMENTS']));
         }
     }
     return $xmlDb;
 }
Beispiel #3
0
 /**
  * constructor
  */
 private function __construct($database)
 {
     // in use database file
     $this->in_use = dirname(__FILE__) . '/data/' . $database . '.lock';
     // if file exists that means the db file is in use, so we wait - trying to prevent race condition
     $i = 20;
     while (true == file_exists($this->in_use)) {
         usleep($i += 20);
     }
     // create in use file, we are using this db now
     $i = 20;
     while (false == ($this->fh = @fopen($this->in_use, 'w'))) {
         usleep($i += 20);
     }
     // wait for file lock
     $i = 20;
     while (false == flock($this->fh, LOCK_EX)) {
         usleep($i += 20);
     }
     // register shutdown
     register_shutdown_function(array($this, '__unlock'));
     // in use file is created and locked, now we can work with database
     // db file
     $this->file = dirname(__FILE__) . '/data/' . $database . '.xml';
     if (false == file_exists($this->file)) {
         // if db file not exists, create db file with db schema
         file_put_contents($this->file, '<?xml version="1.0" encoding="utf-8"?><database></database>');
         // set permissions on db file
         xmlDb::chmodDatabase($database);
     }
     libxml_use_internal_errors(true);
     // load xml
     try {
         $this->xml = new SimpleXMLElement(file_get_contents($this->file));
     } catch (Exception $e) {
         exit('Error: ' . $e->getMessage());
     }
 }
<?php

// ADDING AND REMOVING COLUMNS FROM TABLE
// include db class
include '../xmldb/xmldb.php';
// connect to database
$db = xmlDb::connect('example_database');
// add table
$db->addTable('example_table');
// add column
// you can have unlimited number of columns in table
// note: for doing anything with table (adding columns, removing columns, selecting data, etc.)
// first you must select table by calling method table(table_name)
// example: $db->table('table_name');
// add column id and set it's value to 1
$db->table('example_table')->addColumn('id', 1);
// add another column called name
$db->table('example_table')->addColumn('name', 'John');
// add another column called lastname
$db->table('example_table')->addColumn('lastname', 'Doe');
// now we can get columns from our table
// method getColumns() returns an array of columns names
// you can get columns names like this
$columns = $db->table('example_table')->getColumns();
print_r($columns);
// or like this
$columns = $db->getColumns('example_table');
print_r($columns);
// removing column from table
/*
$db->table('example_table')->removeColumn('lastname');