New question

Question:

Date: 02-11-2016 12:58:22 (In Spanish)

Lectura de archivo DBF con extensión dBase en PHP[Resolved]

Hola comunidad!

Estoy empezando con CodeIgniter y quisiera encontrar una forma de obtener cierta información de un sistema antiguo en Visual FoxPro (más precisamente una tabla .dbf). Es decir, necesito capturar las liquidaciones de pago que se hacen en otro sistema.

Utilizo xampp 5.6.24 para Windows 7 de 64 bits, PHP version 5.6.24. y quiero utilizar la libreria "php_dbase"

libreria dbase para php 5.6 Non Thread Safe (NTS) x86

Tengo un problema con la instalación de la extensión de dBase en XAMPP con PHP. Añadí php_dbase.dll a la carpeta "php/ext" y añadi la siguiente línea al archivo "php.ini":

extension=php_dbase.dll

Cómo instalar correctamente la extension dBase?
Alguna ayuda??

Muchas gracias
Tags: CodeIgniter - Database - dBase - DBF - Development - PHP - Question - Visual FoxPro - XAMPP Votes: 2 - Answers: 3 - Views: 27 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 02-11-2016 14:17:56 Hola Adrian

    Tu pregunta me traslado a los finales de los 80 y principio de los 90, cuando programaba con CLIPPER 5.1 utilizando las bases de dbf, y tambien usaba dBase III, después de los 90 nunca mas he visto los dbf y ndx (archivo de índice)

    Si es cierto muchos sistemas aun utilizan estos archivos y no son tan viejos por ej hay un sistema contable llamado HOLISTOR que utiliza DBF.

    Luego del prólogo...
    No he utilizado PHP con DBF.

    Has descomentado en el archivo php.ini la linea ;extension=php_dbase.dll dejandola sin el punto y comas extension=php_dbase.dll ?

    Doc oficial de PHP Funciones de dBase

    Te dejo un copy & paste (lo público con el motivo de que quede registrado en la comunidad para otros interesados)


    PHP y los archivos dBase (dbf)

    Hasta ahora nunca había tenido la necesidad de acceder a ficheros de extensión .dbf, y aunque sea bastante viejo (sin ofender), algunas aplicaciones (hechas con Visual FoxPro por ejemplo) hacen uso de ésta tecnología. Esta extensión pertenece a archivos de base de datos y uno sólo de ellos viene siendo una tabla, por así decirlo.

    Desde PHP podemos acceder a los ficheros de formato dBase(dbf), para conseguirlo, necesitamos habilitar la librería.

    nota:
    A partir de PHP 5.3.0. php_dbase ha sido movido al repositorio de PECL de php.net, por lo que su instalación debe hacerse manualmente.

    Los ejemplos de éste artículo, corren sobre PHP 5.4.22 (Windows7)

    Instalación y Configuración:
    Debemos ir al archivo de configuración de PHP (php.ini) y habilitar la extención de dBase:
    En Windows (c://xampp/php/php.ini en caso de que uses Xampp), buscamos y descomentamos la siguiente línea:
    // cambiar de ...
    ;extension=php_dbase.dll

    // ... a (sólo retirar el punto y coma)
    extension=php_dbase.dll

    //en ubuntu prueba extension=dbase.so ..


    y reiniciamos el servidor.. luego ya podemos empezar a trabajar.

    - Si no se encuentra la librería instalada (en el directorio ../php/ext), entonces tocará ,buscarla, descargarla e instalarla.

    Archivo php_dbase.dll
    Descripción dBase
    Tamaño 28kb aprox.
    Oficial pecl.php.net/package/dbase

    - Descargamos la DLL, descomprimimos y la movemos al directorio de librerías de PHP, en este caso c://xampp/php/ext

    Trabajando con los .DBF

    La librería dBase tiene varias funciones para trabajar. Veamos un ejemplo:
    <?php
    $fichero_dbf = 'mi_dbf.dbf';
    $conex       = dbase_open($fichero_dbf, 0);
    if($conex){
        $arrData = array();
        $total_registros = dbase_numrecords($conex);
        for ($i = 1; $i <= $total_registros; $i++){
            $arrData[] = dbase_get_record($conex,$i);
        }
        echo '<pre>',print_r($arrData),'</pre>';
    }else{
        echo 'No se pudo acceder al fichero dbf';
    }
    ?>

    Fuente

    Espero que te sea de utilidad.

    Comentanos tu progreso

    saludos
      Votes: 1 - Link answer
     
  • Date: 02-11-2016 17:32:40 Hola Walter como estas? gracias por responder.
    Te cuento que la version php que uso no tiene la linea: ";extension=php_dbase.dll" en el archivo php.ini
    Asi que tube que agregarla al final, quedando de esta forma: "extension=php_dbase.dll"

    Tambien copie la libreria "php_dbase.dll" que descargue de 5.6 Thread Safe (TS) x86 y la pegue dentro de la carpeta "\xampp\php\ext".

    Finalmente reinicie el servidor Apache y con eso quedo funcionando.

    Ahora puedo acceder a leer los registros con el siguiente codigo:

    $fichero_dbf = 'mi_dbf.dbf';
    $conex       = dbase_open($fichero_dbf, 0);
    if($conex){
        $arrData = array();
        $total_registros = dbase_numrecords($conex);
        for ($i = 1; $i <= $total_registros; $i++){
            $arrData[] = dbase_get_record($conex,$i);
        }
        echo '<pre>',print_r($arrData),'</pre>';
    }else{
        echo 'No se pudo acceder al fichero dbf';
    }


    Gracias por tu respuesta!
      Votes: 2 - Link answer
     
  • Date: 02-11-2016 17:41:23 Adrian:
    Efectivamente como lo has comentado que te faltaba la linea extension=php_dbase.dll en el archivo de configuracion de PHP php.ini
    Mil disculpa por no haberte comentado que podría no estar tal linea y en tal caso agregarla; se me ha escapado.

    Pero te ha servido como guía como para agregar la linea.

    Te agradezco que hayas publicado tu codigo para futuras referencias para otros usuarios, has contribuido con tu grano de arena a la comunidad, ya con ello ya me doy por agradecido.

    Me alegra que te haya servido mi colaboración y que hayas podido resolver el problema.
    Te doy +1 a tu pregunta y respuesta.

    Al finalizar no olvides dar la pregunta como resuelta.

    Que tengas un buen dia.

    Saludos
      Votes: 2 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In