Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/08/2010, 07:57
Avatar de pepeverastegui
pepeverastegui
 
Fecha de Ingreso: septiembre-2008
Ubicación: Pedernales, Michoacan
Mensajes: 82
Antigüedad: 15 años, 7 meses
Puntos: 2
Clase para exportar de MySQL a Dbase

Hola buenos dias, bueno yo dado donde trabajo manejo 2 bases de datos, y ps me tuve que diseñar una clasesita para no estar utilizando el mismo codigo una y otra vez, ahi les paso mi codigo para el que lo necesite

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
?>
y aqui esta la clase
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->Type0$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;
   }
}
?>
__________________
Ing. Jesus Verastegui
http://www.micharanga.com.mx
http://pepeverastegui.blogspot.com