Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517

    Leggere file dbf con php

    Salve ragazzi avrei la necessità di leggere alcuni campi da un file dbf con php, ho trovato questo script:

    codice:
    set_time_limit(0);
    $db=dbase_open("TABELLA.DBF",0);
    $num=dbase_numrecords($db);
    $fp = fopen("tabella.sql","w");
    for ($i=1; $i <= $num; $i++) {
    $ar=dbase_get_record_with_names ($db, $i);
    foreach($ar as $k=>$v)
    $ar[$k]=addslashes(trim($v));
    extract($ar);
    fwrite($fp, "INSERT INTO tabella (Nome,Cognome,Eta) VALUES('$NOME','$COGNOME','$ETA');\n");
    }
    fclose($fp);
    dbase_close($db);
    non l'ho eseguito ma ad occhio vedo che questo file recupera tutti i campi del file tabella.dbf, come posso fare una selezione mirata dei campi?

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230

    Re: Leggere file dbf con php

    Originariamente inviato da il pupo
    non l'ho eseguito ma ad occhio vedo che questo file recupera tutti i campi del file tabella.dbf, come posso fare una selezione mirata dei campi?
    con l'estensione del php non puoi.
    li prendi tutti, poi dall'array del record prendi quelli che ti servono.

    in alternativa puoi fare tutto con qualche binario tipo cdbflite

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    ok grazie,

    ho provato ad eseguirlo , ma mi da questo errore:


    Fatal error: Call to undefined function dbase_open() in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\prova dbf\principale.php on line 6

    quindi è un'errore di dll mancante giusto?

    ho provato a trovare php_dbase.dll ma niente , mi potete aiutare?

  4. #4
    ciao,

    se ti interessa ho scritto un reader per file DBF direttamente in PHP, ma non supporta tutti i tipi di campi e non supporta tutte le varie versioni e sottoversioni dei formati DBF.

    Se ti interessa te lo metto online e lo provi.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    si grazie, gentilissimo

  6. #6
    http://www.daccii.it/private/DbfReader.zip

    All'interno è presente la classe, un file test.php che ne fa uso per visualizzare una tabella html contenente i records del file, con la possibilità di limitarne il numero, ed infine sono presenti due database di test (presi dal sito dell'istat).

    Il codice è un po vecchiotto, ma funziona discretamente bene

    Ho aggiunto qualche messaggio d'errore, cosi da permetterti di capire se ci sono problemi e se si quali sono.

    Nel caso ti dicesse che il file non è supportato, puoi provare a decommentare dal file DbfReader.class.php la parte commentata dell'array che sta all'inizio del file che contiene i tipi di file supportati.
    Avendolo testato solo con un formato specifico ho preferito disabilitare tutti gli altri, ma in generale dovrebbe funzionare (credo :P)

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    ora provo e ti dico grazie mille

  8. #8
    giusto per fare 2 precisazioni

    Il parsing del database è progressivo, non carica in memoria nulla, di conseguenza è anche se avessi un DBF di centinaia e centinaia di mb la memoria usata dalla classe si aggirerebbe sempre e comunque intorno a pochi kb.

    La seconda precisazione riguarda le performance: per motivi di "comprensibilità" del codice, visto che la velocità di esecuzione, per quanto, importante non era il mio obiettivo primario, altrimenti usavo l'estensione di php: ci sono dei rallentamenti a causa dell'uso della funzione unpack, probabilmente avrei ottenuto tempi di esecuzione migliori parsando manualmente i dati ma il codice sarebbe diventato il caos assoluto

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    daniele ho visto il tuo codie va benissimo, anche a me non importa il tempo di esecuzione, il problema sta nel fatto mi da questo errore: se inserisco un db differente da quelli contenunti del tuo file l'errore è questo:

    Fatal error: Uncaught exception 'Exception' with message 'Il formato FFFFFF8B del database non è supportato' in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\prova dbf\DbfReader\DbfReader.class.php:103 Stack trace: #0 C:\Program Files (x86)\EasyPHP-5.3.6.0\www\prova dbf\DbfReader\DbfReader.class.php(57): DbfReader->Open() #1 C:\Program Files (x86)\EasyPHP-5.3.6.0\www\prova dbf\DbfReader\test.php(48): DbfReader->__construct('ANACF.DBF') #2 {main} thrown in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\prova dbf\DbfReader\DbfReader.class.php on line 103

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    517
    ragazzi comunque sto pensando di convertire in file in xml e poi leggerlo cosa ne pensate?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.