繁体中文
设为首页
加入收藏
当前位置:PHP技术首页 >> PHP基础 >> 国外好东西真的多,现在贴上一个访问ACCESS的类!

国外好东西真的多,现在贴上一个访问ACCESS的类!

2004-12-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:这是ACCESS的类

这是ACCESS的类

Class AccessDBM

{

var $COUNT = 0;

var $VALUES = array();

var $FILE = "";

var $ERROR = "";

var $EXISTS = false;

var $STATIC = false;

var $EXACT = false;

var $DBM;

// Older version of PHP can't do the 'new ClassName(args)'

// Use initilize() if this is the case.

// *******************************************************

function AccessDBM ($dbmFile, $static = 0)

{

global $php_errormsg;

if(!empty($dbmFile))

{

if(file_exists($dbmFile))

{

$this->EXISTS = true;

}

if($static != 0)

{

$this->STATIC = true;

}

$this->FILE = $dbmFile;

}

return;

}

// *******************************************************

// Identical to AccessDBM

function initialize ($dbmFile, $static = 0)

{

global $php_errormsg;

if(!empty($dbmFile))

{

if(file_exists($dbmFile))

{

$this->EXISTS = true;

}

if($static != 0)

{

$this->STATIC = true;

}

$this->FILE = $dbmFile;

}

return;

}

// *******************************************************

function add_entry ($key, $val)

{

$results = 0;

$dbm = $this->open_dbm();

if(!$dbm) { return false; }

if(!(dbmreplace($dbm,$key,$val)))

{

if(!(dbmexists($dbm,$key)))

{

$this->ERROR = "Fatal error : could not replace $key with $val";

$this->close_dbm($dbm);

return false;

}

}

$this->close_dbm($dbm);

return true;

}

// *******************************************************

function remove_entry ($Key)

{

global $php_errormsg;

$removed = false;

$dbm = $this->open_dbm();

if(!$dbm) { return false; }

if(dbmexists($dbm,$Key))

{

if(!dbmdelete($dbm,$Key))

{

if(dbmexists($dbm,$Key))

{

$this->ERROR = "Unable to remove [$Key] : [$php_errormsg]";

$this->close_dbm($dbm);

return false;

}

}

else

{

$this->close_dbm($dbm);

$removed = true;

}

}

else

{

$this->ERROR = "Key [$Key] does not exist";

$this->close_dbm($dbm);

return false;

}

return true;

}

// *******************************************************

function get_value ($Key)

{

$val = "";

$readOnly = true;

$dbm = $this->open_dbm($readOnly);

if(!$dbm) { return false; }

if(dbmexists($dbm,$Key))

{

$val = dbmfetch($dbm,$Key);

}

$this->close_dbm($dbm);

return $val;

}

// *******************************************************

function open_dbm ($readOnly = false)

{

global $php_errormsg;

if($this->STATIC)

{

if(!(empty($this->DBM)))

{

$dbm = $this->DBM;

return ($dbm);

}

}

$fileName = $this->FILE;

if(!$this->EXISTS)

{

$dbm = @dbmopen($fileName,"n");

}

else

{

if(!$readOnly)

{

// We want the warning here if we can't be

// a writer

$dbm = dbmopen($fileName,"w");

}

else

{

$dbm = @dbmopen($fileName,"r");

}

}

if( (!$dbm) or (empty($dbm)) )

{

$this->EXISTS = false;

$this->STATIC = false;

$this->ERROR = "Unable to open [$fileName] [$php_errormsg]";

return false;

}

$this->EXISTS = true;

if($this->STATIC)

{

$this->DBM = $dbm;

}

return ($dbm);

}

// *******************************************************

function find_key ($search)

{

$val = "";

$dbm = $this->open_dbm(1);

if(!$dbm) { return false; }

if(dbmexists($dbm,$search))

{

// Wow an exact match

$val = dbmfetch($dbm,$search);

$this->close_dbm($dbm);

$this->EXACT = true;

return $val;

}

else

{

$this->EXACT = false;

$key = dbmfirstkey($dbm);

while ($key)

{

// Strip the first whitespace char and

// everything after it.

$test = ereg_replace(" .*","",$key);

if(eregi("^$test",$search))

{

$val = dbmfetch($dbm,$key);

$this->close_dbm($dbm);

error_log("Test [$test] matched [$search]",0);

return $val;

}

$key = dbmnextkey($dbm,$key);

}

}

// Didn't find it

$this->close_dbm($dbm);

return false;

}

// *******************************************************

// Returns the KEY

function find_val ($search)

{

$this->EXACT = false;

$Dbase = $this->get_all();

if(empty($Dbase))

{

error_log("ERROR Dbase is empty $DB->ERROR",0);

return false;

}

while ( list ( $key, $val ) = each ($Dbase) )

{

if($search == $val)

{

$this->EXACT=true;

return $key;

}

else

{

// Strip the first whitespace char and

// everything after it.

$test = ereg_replace(" .*","",$val);

if(eregi("^$test",$search))

{

$this->EXACT = false;

return $key;

}

}

}

// Didn't find it

return false;

}

// *******************************************************

function get_all ()

{

$values = array();

$count = 0;

$readOnly = true;

$dbm = $this->open_dbm($readOnly);

if(!$dbm) { return false; }

$key = dbmfirstkey($dbm);

while ($key)

{

$val = dbmfetch($dbm,$key);

$values[$key] = $val;

$count++;

$key = dbmnextkey($dbm, $key);

}

$this->COUNT = $count;

$this->VALUES = $values;

$this->close_dbm($dbm);

return $values;

}

// *******************************************************

function close_dbm ($dbm)

{

$results = false;

if(!$this->STATIC)

{

$results = dbmclose($dbm);

}

return $results;

}

// *******************************************************

function static_close()

{

$results = false;

if(!$this->DBM)

{

$this->ERROR = "No static DBM to close";

return false;

}

$dbm = $this->DBM;

$results = dbmclose($dbm);

unset($this->DBM);

return $results;

}

// *******************************************************

}

?>

这个连接上!

include("class.AccessDBM.php3");

$static = true;

$dbase = new AccessDBM("/path/to/file.dbm",$static);

register_shutdown_function($dbase->static_close());

if(!$dbase->add_entry("cdi","cdi@thewebmasters.net))

{

echo "Error adding entry: $dbase->ERROR\n";

}

$Values = $dbase->get_all()

while ( list ($key,$val) = each ($Values) )

{

echo "Key: $key Val: $val \n";

}

exit;

责任编辑:admin
相关文章