Ver Mensaje Individual
  #14 (permalink)  
Antiguo 31/05/2003, 09:59
fran86
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Cita:
Buen proyectito para hacer
A ver como pinta esto.
Código PHP:
<?php
/** 
* Datos de MySQL
*/
$hostbd       "localhost";      /* Host MySQL */
$userbd       "user";           /* Nombre de usurio MySQL */
$passbd       "pass";           /* Password de MySQL */
$bd           "basededatos";    /* Base de Datos MySQL */
$nuevatabla   "datosdelcsv";    /* Nombre de la nueva tabla MySQL 
                                     que se creará o guardarán los datos del
                                     archivo .csv */
$ID           "id";             /* Nombre del campo autoincremental
                                      que se usara en la tabla creada
                                     (o existente). Si se establece a 
                                     un valor vario no se usaran
                                     campos tipo ID */
$droptabla    1;                /* Si se establece a un valor
                                     no-vacio si existe la tabla
                                     especificada en $nuevatabla esta
                                     se vaciará */

/** 
* Datos del archivo .csv
*/
$csv          "c:\\windows\\escritorio\\Horario Fran 2001.csv";  
                                  
/* Path correspondiente al archivo .csv */
$csvconcampos 1;                /* Un valor no-vacio indica que
                                     la primera linea del archivo .csv
                                     contiene los nombres del las columnas. */
$delimitador  ";";              /* Delimitador que usa el archivo para
                                     separar los campos - generalmente es ","
                                     pero los .csv de Excel utilizan ";" */

/** 
* Comienza el codigo
*/
$l mysql_connect($hostbd$userbd$passbd)
or die(
"<h4>No se pudo conectar a la base de datos.</h4>");
mysql_select_db($bd$l)
or die(
"<h4>No se pudo seleccionar la base de datos.</h4>");

$csv fopen ($csv"r")
or die(
"<h4>No se pudo abrir <b>$csv</b></h4>");

if (!empty(
$droptabla)) {
    
$drop "DROP TABLE IF EXISTS `$nuevatabla`;";
}
$create "CREATE TABLE `$nuevatabla` (";
if (!empty(
$ID)) {
    
$create .= "\n`id` INT NOT NULL auto_increment,";
}
while (
$datos fgetcsv ($csv1024*5$delimitador)) {
    
$datocsv[] = $datos;
}
fclose ($csv);
if (!empty(
$csvconcampos)) {
    for (
$i=0$i<count($datocsv[0]); $i++) {
        if (
is_numeric($datocsv[1][$i])) {
            if (
substr_count($datocsv[1][$i], ".") == 1) {
                
$tipo "DOUBLE";
                
$datocsv[1][$i] = floatval($datocsv[1][$i]);
            } else {
                
$tipo "INT";
                
$datocsv[1][$i] = intval($datocsv[1][$i]);
            }
        } else {
            
$tipo "TEXT";
        }
        
$create .= "\n`".$datocsv[0][$i]."` $tipo NOT NULL";
        if (isset(
$datocsv[0][$i+1])) {
            
$create .= ",";
        }        
    }
    
$autoinc count($datocsv);
} else {
    for (
$i=0$i<count($datocsv[0]); $i++) {
        if (
is_numeric($datocsv[1][$i])) {
            if (
substr_count($datocsv[1][$i], ".") == 1) {
                
$tipo "DOUBLE";
                
$datocsv[1][$i] = floatval($datocsv[1][$i]);
            } else {
                
$tipo "INT";
                
$datocsv[1][$i] = intval($datocsv[1][$i]);
            }
        } else {
            
$tipo "TEXT";
        }
        
$create .= "\n`Campo$i` $tipo NOT NULL";
        if (isset(
$datocsv[0][$i+1])) {
            
$create .= ",";
        }
    }
    
$autoinc count($datocsv)+1;
}
if (!empty(
$ID)) {
    
$create .= ",\nPRIMARY KEY  (`id`)";
}
$create .= "\n) TYPE=MyISAM AUTO_INCREMENT=$autoinc ;";

foreach (
$datocsv as $data) {
    if (!empty(
$csvconcampos) && $check++==0) {
        continue;
    }
    
$data array_map("mysql_real_escape_string"$data);
    
    if (!empty(
$ID)) {
        
$inserts[] = "INSERT INTO `$nuevatabla` VALUES (".++$w.",'".implode("','"$data)."');";
    } else {
        
$inserts[] = "INSERT INTO `$nuevatabla` VALUES ('".implode("','"$data)."');";
    }
}

echo 
"<h4>Ejecutando las siguientes consultas...</h4>\n";
echo 
"<pre>\n";
if (isset(
$drop)) {
    echo 
"$drop<br>\n";
}
echo 
"$create<br>\n";
foreach (
$inserts as $cu) {
    echo 
"$cu\n";
}
echo 
"</pre>\n";
flush();

if (isset(
$drop)) {
    if (!
mysql_query($drop$l))
    echo(
"<b>Error:</b> al ejecutar la consulta \"$drop\".Mysql dijo:<pre>".mysql_error()."</pre><br>");
}
if (!
mysql_query($create$l))
echo(
"<b>Error:</b> al ejecutar la consulta \"$create\".Mysql dijo:<pre>".mysql_error()."</pre><br>");
foreach (
$inserts as $cu) {
    if (!
mysql_query($cu$l))
    echo(
"<b>Error:</b> al ejecutar la consulta \"$cu\".Mysql dijo:<pre>".mysql_error()."</pre><br>");
}

echo 
"<h3>FINAL<h3>"

?>
Por ahora hace lo que teniamos en mente, pero no acepta que el csv tenga columnas de numero variable (con los de M$ excel no hay ploblema).
Cualquier sugerecia es muuuy bienvenida.

Saludos!