la clase ya esta probada y funcionando.
al mandar llamar la funcion te pide 1 o 2 parametros.
1 --- el nombre de la tabla de MySQL.
2 --- el nombre de la base de datos de dbase (si no existe el archivo se llamara igual que en MySQL.
y listo, te generara un archivo dbase con los mismos campos de MySQL longitud y precision, asi como los registros de la tabla.
Código PHP:
  
//y ya para mandar a llamar la clase ps un ejemplito
<?php
$mysql = mysql_connect("localhost", "usuario", "clave");
mysql_select_db("base_de_datos");
 
require_once "./exportar.class.php";
$exportar = new exportar("tabla1", "basenueva");
// la linea anterior creara una una base de datos en dbase llamada basenueva 
// identica a  tabla1 de mysql
 
// o tambien 
 
$exportar = new exportar("tabla1");
// la linea anterior creara una una base de datos en dbase llamada tabla1 
// identica a  tabla1 de mysql
?>    Código PHP:
  
//exportar.class.php
<?php
class exportar
{
   function exportar($param1, $param2="")
   {
      if(empty($param2))
         $param2 = $param1;
 
      if($res1 = mysql_query("SHOW FULL FIELDS FROM " . $param1))
      {
         $est_dbf = array();
         while($row1 = mysql_fetch_object($res1))
         {
            $despues = strstr($row1->Type, "(");
            $pos     = strpos($row1->Type, "(");
            $antes   = substr($row1->Type, 0, $pos);
 
            $despues = str_replace("(", "", $despues);
            $despues = str_replace(")", "", $despues);
 
            $arr_dat = explode(",", $despues);
 
            switch($antes)
            {
               case ($antes == "char" or $antes == "varchar"):
                  $antes = "CHARACTER";
                  break;
               case ($antes == "tinytext" or $antes == "mediumtext" or $antes == "longtext"):
                  $antes = "CHARACTER";
                  $arr_dat[0] = 255;
                  break;
               case ($antes == "decimal" or $antes == "int" or $antes == "double" or 
                     $antes == "float" or $antes == "smallint" or $antes == "mediumint" or 
                     $antes == "bigint"):
                  $antes = "NUMBER";
                  break;
               case ($antes == "bool" or $antes == "tinyint" or $antes == "binary" or 
                     $antes == "varbinary"):
                  $antes = "LOGICAL";
                  unset($arr_dat);
                  break;
               case ($antes == "datetime" or $antes == "date"):
                  $antes = "DATE";
                  unset($arr_dat);
                  break;
               default:
                  continue;
            }
 
            if(count($arr_dat) == 2)
               $est_dbf[] = array($row1->Field, $antes, $arr_dat[0], $arr_dat[1]);
            else if(count($arr_dat) == 1)
               $est_dbf[] = array($row1->Field, $antes, $arr_dat[0]);
            else
               $est_dbf[] = array($row1->Field, $antes);
         }
         if(dbase_create($param1.".dbf", $est_dbf))
         {
            if($dbase = dbase_open($param1.".dbf", "2"))
            {
               $res2 = mysql_query("SELECT * FROM ".$param1);
               while($row2 = mysql_fetch_row($res2))
               {
                  dbase_add_record($dbase, $row2);
               } 
               dbase_Close($dbase);
               header("Content-type: application/octet-stream");
               header("Content-Disposition: attachment; filename=".$param1.".dbf"); 
               readfile($param1.".dbf");
            }
            else
               return;
         }
         else
            return;
      }
      else
         return;
   }
}
?>     
 



