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;
}
}
?>