note 74547 added to ref.dbase

From: Date: Mon, 16 Apr 2007 23:40:35 +0000
Subject: note 74547 added to ref.dbase
Groups: php.notes 
Request: Send a blank email to php-notes+get-125485@lists.php.net to get a copy of this message
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; } } ?> ---- Server IP: 212.199.163.191 Probable Submitter: 87.69.18.51 ---- Manual Page -- http://www.php.net/manual/en/ref.dbase.php Edit -- https://master.php.net/note/edit/74547 Del: integrated -- https://master.php.net/note/delete/74547/integrated Del: useless -- https://master.php.net/note/delete/74547/useless Del: bad code -- https://master.php.net/note/delete/74547/bad+code Del: spam -- https://master.php.net/note/delete/74547/spam Del: non-english -- https://master.php.net/note/delete/74547/non-english Del: in docs -- https://master.php.net/note/delete/74547/in+docs Del: other reasons-- https://master.php.net/note/delete/74547 Reject -- https://master.php.net/note/reject/74547 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#125485) next »