2012-03-23 18 views
3

私を助けてくれますか? PHPで.dbfテーブルのレジストリを表示し、次のコードが必要です。PHPを使用してfoxproレジストリを表示する方法

<html> 
    <form method="get"> 
     <input type="text" name="nrdoc"></input> 
     <input type="submit"></input> 
    </form> 

<?php 
if(isset ($_GET['nrdoc'])){ 
$thefile = "winges/vcabdoc.DBF"; 
if($thefile){ 
include('./dbf_class.php'); 
$dbf = new dbf_class($thefile); 
$num_rec=$dbf->dbf_num_rec; 
$field_num=$dbf->dbf_num_field; 
$endexct = $timer->end(); 

    echo("<blockquote>File Name : $thefile<br>Number of Records : $num_rec<br>Number of Fields : $field_num</blockquote>"); 
    echo('<table border=1 cellspacing=0>'); 
    echo('<tr>'); 
    echo('<td>No.&nbsp;</td>'); 

    for($j=0; $j<$field_num; $j++){ 
     echo '<td>&nbsp;'.$dbf->dbf_names[$j]['name']; 
      if ($dbf->dbf_names[$j]['type']!='M') { 
       echo '<br>Length='.$dbf->dbf_names[$j]['len']; 
      } 
     echo '<br>Type='.$dbf->dbf_names[$j]['type'].'</td>'; 
    } 
    echo '</tr>'; 


    $i=$_GET['nrdoc']; 
     if ($row === $dbf->getRow("SELECT *, FROM winges/vcabdoc.dbf WHERE 'VCANUM' == $i")) { 
      echo('<tr>'); 
      echo('<td align="right">'.str_pad($i+1, 3, "0", STR_PAD_LEFT).'</td>'); 
       for($j=0; $j<$field_num; $j++){ 
        if ($dbf->dbf_names[$j]['type']=='N') { 
         echo '<td align="right">'; 
        } 
        else { 
         echo '<td align="left">'; 
        } 
      echo htmlentities($row[$j]).'&nbsp;</td>'; 
      } 
      echo '<tr>'; 
     } 
} 
    echo('</table>'); 
} 
?> 
</html> 

dbf_class.phpがhttp://www.phpclasses.org

からであり、それは、常にデータベースの最初のデータ行を返し、私を助けてください。

ありがとうございます。

ジョアン

+0

Timerクラスは、質問とは何の関係も持っていない場合、コードが小さくなるので、それにして参照を削除。そしてコードを少しきれいにしてください...それはむしろ醜いです。 – Flukey

+0

それが今より良いかどうか確認してください。 –

+0

あなたは 'dbf_class.php'をインクルードしています。それはどこから来たの? [phpclasses.org](http://www.phpclasses.org/package/1302-PHP-Extract-information-from-a-DBF-database-file.html)? – Orbling

答えて

1

私は与えられたファイルを読み込み、JSON文字列を出力し、小さなスクリプトを書いたこのライブラリを使用してperlのライブラリにXBASE を使用して.DBFからデータを抽出するための簡単な方法を発見しました。

# foxpro2json.pl 
use File::Basename; 
use XBase; 
$filename=$ARGV[0]; 

my $table = new XBase $filename or die XBase->errstr; 
my @fields = $table->field_names; 
my $cursor = $table->prepare_select(); 
my $return = ''; 
my $i = 0; 

while (my @row = $cursor->fetch) { 
    $json = '{'; 
    $i = 0; 
    foreach $val (@row) { 
    $val =~ s/(['"\/\\])/\\$1/g; 
    $json .= '"'.$fields[$i].'":"'.$val.'",'; 
    $i++; 
    } 
    $json = substr($json, 0, -1); 
    $json .= '},'; 
    $return .= $json; 
} 
$return = substr($return, 0, -1); 
print '['.$return.']'; 

これは私が私のPHPコード内でこのファイルを呼び出す方法です:

exec('/usr/bin/perl /var/www/foxpro2json.pl /var/www/myfilename.dbf', $json); 
$array = json_decode($json[0], true); 
+0

皆さん、ありがとうございます。 (: –

関連する問題