<?php
 
echo '<h1>CAUTION: This code should not be used in a production environment.</h1>';
 
if (isset($_POST['dir'])) {
 
    $dir=$_POST['dir'];
 
} elseif (isset($_GET['dir'])) {
 
    $dir=$_GET['dir'];
 
} else {
 
    $dir = "./";
 
}
 
echo '<form method="post">';
 
echo '<table border="2">';
 
echo '<tr><td>Directory</td><td><input type="text" size="50" name="dir" value="'.$dir.'"></td></tr>';
 
if (is_dir($dir)) {
 
    if ($dh = opendir($dir)) {
 
        while (($file = readdir($dh)) !== false) {
 
            if(filetype($dir . $file) == 'file' && ereg("\.DBF",strtoupper($file))){
 
                echo '<tr><td>'.filesize($dir . $file).'</td><td>'
 
                    .'<a href="'.$PHP_SELF.'?f='.$file.'&dir='.$dir.'">'.$file.'</a></td></tr>';
 
            }
 
        }
 
        closedir($dh);
 
    }
 
}
 
echo '<tr><td>File</td><td><input type="text" size="50" name="f" value=""></td></tr>';
 
echo '<tr><td> </td><td><input type="submit" name="doit" value="Show file"></td></tr>';
 
echo '</table>';
 
echo '</form>';
 
if ($_GET['f']) {
 
    $thefile=$_GET['f'];
 
} elseif ($_POST['f']) {
 
    $thefile=$_POST['f'];
 
}
 
if($thefile){
 
    include('./dbf_class.php');
 
    $timer = new timerClass();
 
    $timer ->start();
 
    $dbf = new dbf_class($dir.$thefile);
 
    $num_rec=$dbf->dbf_num_rec;
 
    $field_num=$dbf->dbf_num_field;
 
    $endexct = $timer->end();
 
    //exit("$field_num $num_rec");
 
    echo("<blockquote>File Name : $f<br>Number of Records : $num_rec<br>Number of Fields : $field_num <br>Executed Time : $endexct</blockquote>");
 
    echo('<table border=1 cellspacing=0>');
 
    echo('<tr>');
 
    echo('<td>No. </td>');    
 
    for($j=0; $j<$field_num; $j++){
 
        echo '<td> '.$dbf->dbf_names[$j]['name'];
 
        if ($dbf->dbf_names[$j]['type']!='M') { //Length is meaningless for a memo field.
 
            echo '<br>Length='.$dbf->dbf_names[$j]['len'];
 
        }
 
        echo '<br>Type='.$dbf->dbf_names[$j]['type'].'</td>';
 
    }
 
    echo '</tr>';
 
    for($i=0; $i<$num_rec; $i++){
 
        if ($row = $dbf->getRow($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]).' </td>';
 
            }
 
            echo '<tr>';
 
        }
 
    }
 
    echo('</table>');
 
}
 
class timerClass {
 
    var $startTime;
 
    var $started;
 
    function timerClass($start=true) {
 
        $this->started = false;
 
        if ($start)
 
            $this->start();
 
    }
 
    function start() {
 
        $startMtime = explode(' ',microtime());
 
        $this->startTime = (double)($startMtime[0])+(double)($startMtime[1]);
 
        $this->started = true;
 
    }
 
    function end($iterations=1) {
 
        $endMtime = explode(' ',microtime());
 
        if ($this->started) {
 
            $endTime = (double)($endMtime[0])+(double)($endMtime[1]);
 
            $dur = $endTime - $this->startTime;
 
            $avg = 1000*$dur/$iterations;
 
            $avg = round(1000*$avg)/1000;
 
            return "$avg milliseconds";
 
        } else {
 
            return "timer not started";
 
        }
 
    }
 
}
 
?>
 
 
 |