dBase Funciones

Ejemplos

Many examples in this reference require a dBase database. We will use /tmp/test.dbf that will be created in the example of dbase_create().

Tabla de contenidos

add a note

User Contributed Notes 2 notes

up
4
bi.idan AT gmail.com
18 years ago
I know lots of you dosent really use dbase, but i've builded a class to help the one how dose.(sorry for bad english)- dbase.php<?phpset_time_limit (0);// site_path defined by parentrequire_once (SITE_PATH. '/server/php/libs/dbase/handler.php'); /* DBase (dbf) *    manage dbf files, exports and search functionality *    with buildin optimizers for fast performance */class DBase{    private $handler = false;    private $searchopt = array (); // Search optimizer        private function unload ()    {        if ($this-> handler !== false)            unset ($this-> handler);    }        public function __construct ($file = false)    {        if ($file !== false)            $this-> load ($file);    }        public function __destruct ()    {        $this-> unload ();    }        public function load ($file)    {        $resource = dbase_open ($file, 0);        $this-> handler = new DBase_Handler ($resource);                return $this-> handler;    }        /* Search     *    search for string inside header     *    returns record number     *        false returned if not found or error occurred     *    limit_results gets int or false, limit_results equels one will limit the     *        search results for one result only, false for no limit     */    public function search ($headerText, $string, $limit_results = false, $handler = false)    {        if ($handler === false)            $handler = $this-> handler;                    if ($this-> searchopt [$headerText][$string])            return $this-> searchopt [$headerText][$string];        else         {            $size = $handler-> getSize ();            if ( ( $headerNumber = $handler-> getHeaderNumber ($headerText) ) !== false)            {                $results = array ();                for ($i = 1; $i < $size; $i++)                {                    $record = $handler-> getRecord ($i, false); // Disabled optimizer to prevent memory overflow                    if (trim ($record [$headerNumber]) == $string)                    {                        $results[] = $i;                                                if ( ($limit_results !== false) && (sizeof ($results) == $limit_results) )                            break;                    }                }                                if (sizeof ($results) > 0)                {                    $this-> searchopt [$headerText][$string] = $results;                    return $this-> search ($headerText, $string, $handler);                }                                return false;            } else                 return false;        }    }}?>- dbase_handler.php<?php/* DBase Handler (dbf) *    handles dbase resource */class DBase_Handler{    private $resource;    private $size; // Records Count    private $header = array ();    private $dataopt = array (); // Data optimizer        private function setHeader ()    {        $this-> header = dbase_get_header_info ($this-> resource);    }        public function __construct ($resource)    {        $this-> resource = $resource;        $this-> setHeader ();        $this-> size = dbase_numrecords ($this-> resource);    }        public function __destruct ()    {        dbase_close ($this-> resource);    }        public function getRecord ($record_number, $dataopt = true)    {        if ($record_number > $this-> size)            return false;        else        {            if ($this-> dataopt [$record_number])                return $this-> dataopt [$record_number];            else             {                $record = dbase_get_record ($this-> resource, $record_number);                if ($dataopt === true) // Data saving optimizer                {                    $this-> dataopt [$record_number] = $record;                    return $this-> getRecord ($record_number);                } else                     return $record;            }        }    }        public function getHeaderNumber ($headerText)    {        foreach ($this-> header as $index => $header)        {            if ($header ['name'] == $headerText)            {                return $index;                break;            }        }                return false;    }        public function getHeader ($headerNumber)    {        if ($headerNumber <= sizeof ($this-> header))            return $this-> header [$headerNumber];        else             return false;    }        public function getSize ()    {        return $this-> size;    }}?>
up
0
bi.idan [at] gmail.com
16 years ago
some of you contacted me about memo fields and my script, so i'll just post my answers on the common question here.(note: this is not an adv for any program, only what i used for myself, and it's free)so, there are 2 options if you want to create/read memo fields:1. use a library for java/c++/c# to build a bridge between php and dbf file. i've used dbf2java. althougth it's not near complete as my other option, it's a good start. (http://code.google.com/p/dbf2java-library/)2. use an external program with pipes to grab the output. i used cdbflite, (http://www.whitetown.com/cdbflite/). it's free, and pretty much gives you everything you need to handle those dbf files. i'm not sure about big databases and it seems you need to register/buy it, but it's again, a start.hope it helps some of you who needs to handle those database files,Good luck,idan
To Top