function xbase_create($filename, $fields) { // - Creates a dBase database if ($xbase =& XBaseWritableTable::create($filename, $fields)) { return xbase_addInstance($xbase); } return false; }
function create($filename, $fields) { if (!$fields || !is_array($fields)) { trigger_error("cannot create xbase with no fields", E_USER_ERROR); } $recordByteLength = 1; $columns = array(); $columnNames = array(); $i = 0; foreach ($fields as $field) { if (!$field || !is_array($field) || sizeof($field) < 2) { trigger_error("fields argument error, must be array of arrays", E_USER_ERROR); } $column = new XBaseColumn($field[0], $field[1], 0, @$field[2], @$field[3], 0, 0, 0, 0, 0, 0, $i, $recordByteLength); $recordByteLength += $column->getDataLength(); $columnNames[$i] = $field[0]; $columns[$i] = $column; $i++; } $result = new XBaseWritableTable($filename); $result->version = 131; $result->modifyDate = time(); $result->recordCount = 0; $result->recordByteLength = $recordByteLength; $result->inTransaction = 0; $result->encrypted = false; $result->mdxFlag = chr(0); $result->languageCode = chr(0); $result->columns = $columns; $result->columnNames = $columnNames; $result->backlist = ""; $result->foxpro = false; if ($result->openWrite($filename, true)) { return $result; } return false; }
function xbase_open($filename, $flags = 0) { // - Opens a dBase database - flags : Typically 0 means read-only, 1 means write-only, and 2 means read and write if ($flags == 0) { $xbase = new XBaseTable($filename); if (!$xbase->open()) { return false; } } else { $xbase = new XBaseWritableTable($filename); if (!$xbase->openWrite()) { return false; } } return xbase_addInstance($xbase); }
* * -------------------------------------------------------------- * * Demonstration how to clone table meta-data to another and copy records * **/ /* load the required classes */ require_once "Column.class.php"; require_once "Record.class.php"; require_once "Table.class.php"; require_once "WritableTable.class.php"; /* open a template table object and read it */ $tableParent = new XBaseTable("test/bond.DBF"); $tableParent->open(); /* create a new table */ $tableNew = XBaseWritableTable::cloneFrom($tableParent); $tableNew->openWrite("test/created.dbf", true); while ($record = $tableParent->nextRecord()) { $tableNew->appendRecord(); $tableNew->record->copyFrom($record); $tableNew->writeRecord(); } $tableNew->close(); $tableParent->close(); /* open created file*/ $table = new XBaseTable("test/created.dbf"); $table->open(); /* xml output */ echo "<pre>\n"; echo htmlspecialchars($table->toXML()); echo "</pre>\n";
require_once "Column.class.php"; require_once "Record.class.php"; require_once "Table.class.php"; require_once "WritableTable.class.php"; /* sample data */ $fields = array( array("bool" , DBFFIELD_TYPE_LOGICAL), array("memo" , DBFFIELD_TYPE_MEMO), array("date" , DBFFIELD_TYPE_DATE), array("number" , DBFFIELD_TYPE_NUMERIC, 3, 0), array("string" , DBFFIELD_TYPE_CHAR, 50), ); /* create a new table */ $tableNew = XBaseWritableTable::create("data.dbf",$fields); /* insert some data */ $r =& $tableNew->appendRecord(); $r->setObjectByName("bool",true); $r->setObjectByName("date",time()); $r->setObjectByName("number",123); $r->setObjectByName("string","String one"); $tableNew->writeRecord(); $r =& $tableNew->appendRecord(); $r->setObjectByName("bool",false); $r->setObjectByName("date",time()/2); $r->setObjectByName("number",321); $r->setObjectByName("string","String two"); $tableNew->writeRecord();
* Info? Mail to info@cyane.nl * * -------------------------------------------------------------- * * Demonstration how to create a dbf from scratch * **/ /* load the required classes */ require_once "Column.class.php"; require_once "Record.class.php"; require_once "Table.class.php"; require_once "WritableTable.class.php"; /* sample data */ $fields = array(array("bool", DBFFIELD_TYPE_LOGICAL), array("memo", DBFFIELD_TYPE_MEMO), array("date", DBFFIELD_TYPE_DATE), array("number", DBFFIELD_TYPE_NUMERIC, 3, 0), array("string", DBFFIELD_TYPE_CHAR, 50)); /* create a new table */ $tableNew = XBaseWritableTable::create("test/created.dbf", $fields); /* insert some data */ $r =& $tableNew->appendRecord(); $r->setObjectByName("bool", true); $r->setObjectByName("date", time()); $r->setObjectByName("number", 123); $r->setObjectByName("string", "String one"); $tableNew->writeRecord(); $r =& $tableNew->appendRecord(); $r->setObjectByName("bool", false); $r->setObjectByName("date", time() / 2); $r->setObjectByName("number", 321); $r->setObjectByName("string", "String two"); $tableNew->writeRecord(); $r =& $tableNew->appendRecord(); $r->setObjectByName("bool", true);