PHP 8.6.0 Beta 1 is available for testing

Funciones dBase

Ejemplos

La mayoría de los ejemplos de esta documentación requieren una base de datos dBase. Se utilizará /tmp/test.dbf que es creada en el ejemplo de la función dbase_create() .

Tabla de contenidos

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes 2 notes

up
11
bi.idan AT gmail.com
19 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
<?php
set_time_limit (0);
// site_path defined by parent
require_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
-2
bi.idan [at] gmail.com
17 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
+add a note

AltStyle によって変換されたページ (->オリジナル) /