Foros del Web » Programando para Internet » PHP »

paso de datos csv a mysql

Estas en el tema de paso de datos csv a mysql en el foro de PHP en Foros del Web. Resulta que tengo un buscador en mi web en formato cgi, que me guarda los datos en formato texto. Mire cosas similares en php y ...
  #1 (permalink)  
Antiguo 30/05/2003, 10:57
Avatar de jonk  
Fecha de Ingreso: julio-2002
Ubicación: Barakaldo
Mensajes: 104
Antigüedad: 21 años, 8 meses
Puntos: 0
paso de datos csv a mysql

Resulta que tengo un buscador en mi web en formato cgi, que me guarda los datos en formato texto.

Mire cosas similares en php y con mysql, pero alfinal no encontraba lo que yo queria :( y me resigne.

Entonces pense bueno, si mahoma no va a la meca la meca ira a mahoma jejej importar los datos del fichero txt a una tabla de mysql.

Hago las operaciones pertinentes en el phpmyadmin y correcto inserta los datos en la tabla pero a lo loco, los registros del principio mas pero los del final bien . grrrrrrrr.

Entonces paseando por XLWEBMASTERS , encontre informacion de como pasar CSV A mysql:

Aqui os dejo el codigo:

"Un pequeño ejemplo de como se pueden coger datos de un fichero de texto con separadores para insertalos en otra tabla.

En este caso el fichero es un CSV de una base de datos con los campos separados por punto y coma (;), en la función SPLIT indicamos cual es el separador de campo, para ir cogiendo los que nos interesa y meterlos dentro de la nueva tabla."


en mi caso no era ; sino ,


Código PHP:
<?php

//leemos el fichero
  
$fname="Nombre del Fichero";
  
$fp=fopen($fname,"r") or die("Erro al abrir el fichero");
  
$line fgets$fp2024 );
//iniciamos conexion a bbdd
  
$db_link mysql_connect('localhost''xxxx''xxxxx');
  if (
$db_link){ @mysql_select_db('xxxx');}else {echo "error de conexion";}
  while(!
feof($fp))
  {
    list(
$CAMPO1,$CAMPO2,$CAMPO3,$CAMPO4,$CAMPO5$) =split","$line);
        
$line fgets$fp2024 );
        
$db_query1 ="insert into Nombre de la Tabla values('$CAMPO1','$CAMPO2','$CAMPO3','$CAMPO5')";

        
//lanzamos querys
        
mysql_query($db_query1$db_link);
  }
  
fclose($fp);
?>
espero que os sea de tan utilidad como ami

__________________

MyWay. A mi manera
http://myway.i-barakaldo.com
  #2 (permalink)  
Antiguo 30/05/2003, 14:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Te invito a que pongas este código como una FAQ en las FAQ's de este foro.

Lo del "separador" .. podrías modificar un poco el script y hacerle una variable al "," del split() para que cada uno indique el separador que use en sus datos de su CSV ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 30/05/2003, 14:50
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Esto, no se si os habeis dado cuenta de lo incorrecto que puede ser ese codigo. El formato CSV permite usar el delimitador de campo dentro de un campo si este esta dentro de comillas. Usando el split() si tenemos un CSV tal como este:

1,"Bond, James Bond","007"

nos saldrian 4 campos:

1
"Bond
James Bond"
"007"

Lo cual no es correcto.

Y considero que todo esto es complicar la vida, existiendo la funcion fgetcsv() que realiza la tarea del split(), pero sin su fallo.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 30/05/2003, 15:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues .. tonces que haga una version usando fgetcsv() y ahí si gustan los suben a las FAQs (es una pregunta que de vez en cuando sále en el foro).

(no me había dado cuenta .. entre otras cosas porqué no conozco las especificaciones concretas de CSV .. Ahora ya me quedó claro) ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 30/05/2003, 15:30
Avatar de jonk  
Fecha de Ingreso: julio-2002
Ubicación: Barakaldo
Mensajes: 104
Antigüedad: 21 años, 8 meses
Puntos: 0
gracia cluster por la oferta jejeje pero mis conocimientos no son tan amplos :) , de todas formas ahi keda el mensaje por si alguien kiere desarrollarlo y subirlo a las FAQ

SALU2

__________________

MyWay. A mi manera
http://myway.i-barakaldo.com
  #6 (permalink)  
Antiguo 30/05/2003, 15:42
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Me parece que aqui te quedas atado a que el csv tenga justo 4 campos. Podria hacerse algo mas dinamico que te crea la tabla de mysql con en nombre y numero de columnas que corresponda o algo así.

Saludos!
  #7 (permalink)  
Antiguo 30/05/2003, 15:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Así es fran86 .. para que quedase algo mas "genérico" habría que hacer una rutinita que por lo menos componga el "INSERT" según el número de campos máx. del CSV y/o cree la tabla si es necesario ...

Un saludo,

pd: Buen proyectito para hacer.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 30/05/2003, 15:57
Avatar de jonk  
Fecha de Ingreso: julio-2002
Ubicación: Barakaldo
Mensajes: 104
Antigüedad: 21 años, 8 meses
Puntos: 0
jejejeje he estado probando lo de xxx,"xxxxx,xxxx", pues bien pongo en el buscador de mi web , buscar : "barakaldo,chat", en el navegador , me aparece:

Código:
xxxxxxxxxxxxx?Match=0&Terms=%22barakaldo%2Cchat%22
actualizo la base la tabla atraves, osea convertir el fichero de nuevo, miro la tabla en el phpadmin y todo esta correcto el ultimo registro pone:
Código:
&quot;barakaldo chat&quot;
se come la , jajajajaja

Voy a la pagina donde muestro los datos y en palabra aparece:
Código:
"barakaldo chat"
las comillas si pero no la , :)

pd: el script de xlwebmaster hacia referencia a nombrearchivo.CSV , yo utilizo un .txt ( search.log.txt)
__________________

MyWay. A mi manera
http://myway.i-barakaldo.com
  #9 (permalink)  
Antiguo 30/05/2003, 16:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La extensión es lo de menos .. Siempre y cuando séa un archivo de texto plano que cumpla las especificaciones del formato CSV (campos entrecomillados separados por comas y salto de línea como separador de registros. Luego están las "variantes" que uno puede hacer ...)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 30/05/2003, 16:01
Avatar de jonk  
Fecha de Ingreso: julio-2002
Ubicación: Barakaldo
Mensajes: 104
Antigüedad: 21 años, 8 meses
Puntos: 0
lo de los campos no es restriccion yo lo utilizo con una tabla de 8 campos :)

si kereis poder ver el ejempo del resultado

www.i-barakaldo.com/adm/resbuscador.php --> los resultados
www.i-barakaldo.com/adm/rbuscador.php --> la pagina donde se crea y borra el contenido de la base de datos, se borra porque el script utiliza insert

__________________

MyWay. A mi manera
http://myway.i-barakaldo.com
  #11 (permalink)  
Antiguo 30/05/2003, 16:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Se refería fran86 a que si quieres añadir o quitar campos a tu csv2mysql .. has de "tocar" el código .. Y la idea es hacer una función o método que sea "genérico" para todo tipo de sistuaciones. Como por ejemplo:

* Que acepte cualquier separador de registros (caracter)
* Que acepte cualquier separador de campos (caracter)
* Que genere el "INSERT" adecuado según el número de campos que tenga nuestro CSV del momento ...

Mas o menos eso sería las especificaciones (seguro que más de uno ya lo ha hecho .. ) .. tal vez hasta esté en www.phpclasses.org y sino . pues se puede hacer .. gran parte del trabajo lo haría la funcion fgetcsv() ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 30/05/2003 a las 21:12
  #12 (permalink)  
Antiguo 30/05/2003, 21:00
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
aguien sabe q significa CVS ?
__________________
Blog | Tecnosquad
  #13 (permalink)  
Antiguo 30/05/2003, 21:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Google:

CVS => Concurrent Versions System
http://searchvb.techtarget.com/sDefi...211874,00.html

CSV => Comma-Separated Values file

http://whatis.techtarget.com/definit...213871,00.html

Un saludo,

(yo me equivoqué puse cvs en lugar de csv en una de tantas veces que nombré csv .. ya lo corregí ..)
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 31/05/2003, 09:59
 
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!
  #15 (permalink)  
Antiguo 31/05/2003, 19:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tiene muy buena pinta ...

Lo que yo haría es poner un "flag" (parámetro) .. como para elegir si quiero crear la Tabla SQL . o voy a usar una mia ya creada (caso de que voy añadir registros a algo que ya tengo hecho ..).

La configuración de: $csvconcampos .. no la entendí .. Dices que es el "nombre" de los campos .. OK .. ¿pero, con qué formato? .. (Un array? .. separados por comas? .. ?¿)


Para PHP 4.3.0 en adelante la función fgetcsv dispone de un 4º parámetro que indica el "separador de registros" .. En teoría podemos indicar el que usemos (si no son los standars como el \n \r\n .. \r ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #16 (permalink)  
Antiguo 02/06/2003, 04:03
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Ok cluster, muchas gracias.

Con respecto a lo de $csvconcampos:
Si $csvconcampos es no vacio quiere decir que la primera linea tiene el nombre de las columnas separadas por coma (o el separador especificado).
Por ej:
Código:
Hora;Lunes;Martes;Miércoles;Jueves;Viernes
08:10 - 08:50;Estenografía;Inglés;Matemática;Geografía;Matemática
08:10 - 08:50;Estenografía;15423.1259875;Matemática;Geografía;Matemática
09:00 - 09:40;Castellano;Educación Cívica;Dibujo;Física;Historia
09:40 - 10:20;Práctica Contable;Educación Cívica;Dibujo;Mecanografía;Historia
10:30 - 11:10;Química;Castellano;Física;Física;Castellano
11:10 - 11:50;Química;Práctica contable;Física;Dibujo;Castellano
11:55 - 12:35;Práctica Contable;Práctica Contable;Química;Dibujo;Inglés
El query creara una tabla:
Código:
CREATE TABLE `datosdelcsv` (
`id` INT NOT NULL auto_increment,
`Hora` TEXT NOT NULL,
`Lunes` TEXT NOT NULL,
`Martes` TEXT NOT NULL,
`Miércoles` TEXT NOT NULL,
`Jueves` TEXT NOT NULL,
`Viernes` TEXT NOT NULL,
PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=14 ;
Si lo especificas a 0 entonces las columnas se llamaran Campo1,Campo2,Campo3, etc.

Ademas de poner tu necesario "flag", ahora si soporta columnas de numero variable. O sea que si falta un valor se rellena con "" (nada)

LA SEGUNDA MANO
Código PHP:
<?php
/** 
* Datos de MySQL
*/
$hostbd       "localhost";      /* Host MySQL */
$userbd       "root";           /* Nombre de usurio MySQL */
$passbd       "root";           /* Password de MySQL */
$bd           "basededatos";    /* Base de Datos MySQL */
$tabla        "datosdelcsv";    /* Nombre de la tabla MySQL 
                                     que se actualizará o 
                                     creará con los datos del
                                     archivo .csv */
$ID           "id";             /* Nombre del campo index autoincremental
                                     que se usara en la tabla creada
                                     (o existente). Si se establece a 
                                     un valor vacio no se usaran
                                     campos tipo ID */
$droptabla    1;                /* Si se establece a un valor
                                     no-vacio y existe la tabla
                                     especificada en $tabla 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 ";" */

/* Conexion a MySQL */
$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>");

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

/* Carga de los contenidos en un array y determina el maximo de columnas */
$maxcolumnas 0;
while (
$datos fgetcsv ($csv1024*5$delimitador)) {
    
$datocsv[] = $datos;
    if ( 
count($datos) > $maxcolumnas ) {
        
$maxcolumnas count($datos);
    }
}
fclose ($csv);

/* Rellena las líneas con columnas incompletas */
if (!empty($csvconcampos)) {
    if (
count($datocsv[0]) < $maxcolumnas) {
        
$w 0;
        for ( 
$i=0$i<$maxcolumnas$i++ ) {
            if (empty(
$datocsv[0][$i])) {
                
$datocsv[0][$i] = "Campo".++$w;
            }
        }
    }
}
for ( 
$i=0$i<count($datocsv); $i++ ) {
    
$datocsv[$i] = array_pad($datocsv[$i], $maxcolumnas"");
}

/* Query para vaciado de tablas */
if (!empty($droptabla)) {
    
$drop "DROP TABLE IF EXISTS `$tabla`;";
}

/* Query para determinar la existencia de la tabla */
$checkexistencia mysql_query("SHOW TABLES FROM $bd LIKE '$tabla' ")
or die (
"<pre>".mysql_error()."<pre>");

/* Si la tabla no existe (o es vaciada) confecciona el Query para crearla */
if ( mysql_num_rows($checkexistencia) == || !empty($droptabla)) {
    
$create "CREATE TABLE `$tabla` (";
    if (!empty(
$ID)) {
        
$create .= "\n`id` INT NOT NULL auto_increment,";
    }
    if (!empty(
$csvconcampos)) {
        for (
$i=0$i<count($datocsv[0]); $i++) {
            
$tipo tipoMysqldata($datocsv[1][$i]);
            
$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++) {
            
$tipo tipoMysqldata($datocsv[0][$i]);
            
$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 ;";
}

/* Query para averiguar el campo index del la tabla (si esta ya existia) */
$index = @mysql_query("SHOW INDEX FROM $tabla FROM $bd");
$info = @mysql_fetch_assoc($index);

/* Condecciona un array con los Query de INSERTs */
foreach ($datocsv as $data) {
    if (!empty(
$csvconcampos) && $check++==0) {
        continue;
    }
    
$data array_map("mysql_real_escape_string"$data);
    if ( 
mysql_num_rows($checkexistencia) == 0) {
        if (!empty(
$ID)) {
            
$inserts[] = "INSERT INTO `$tabla` VALUES (".++$w.",'".implode("','"$data)."');";
        } else {
            
$inserts[] = "INSERT INTO `$tabla` VALUES ('".implode("','"$data)."');";
        }
    } else {
        if (isset(
$info['Cardinality'])) {
            
$auto $info['Cardinality']+(++$w);
            
$inserts[] = "INSERT INTO `$tabla` VALUES (".$auto.",'".implode("','"$data)."');";
        } else {
            
$inserts[] = "INSERT INTO `$tabla` VALUES ('".implode("','"$data)."');";
        }
    }
}

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

/* Ejecuta los Querys */
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 (isset(
$create)) {
    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>");
}

/* FINAL */
echo "<h3>FINAL<h3>";

/**
* Tipo de columna MySQL

* Devuelve el tipo de columna MySQL
* correspondiente a una variable
* forzada como string.

* @param    string    Cadena con datos a identificar
* @return   string    Tipo de columna MySQL
*/
function tipoMysqldata ($string)
{
    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";
    }
    return 
$tipo;
}
?>
  #17 (permalink)  
Antiguo 02/06/2003, 14:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Jeje .. ahora si que está mejor .. Sólo te faltaría encapsular estas funciones que has ido creando en una classe y subirlo a phpclasses.org o mejor aun a PEAR (http://pear.php.net) xDD

Un saludo, suerte!
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #18 (permalink)  
Antiguo 02/06/2003, 17:25
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Buf!, creo que para PEAR le falta bastanteeeee...
Pero como dijiste, es un buen proyectito para hacer, y le voy a dedicar mis ratos libres.
Al igual que mi otra clase para graficos de torta, que le estoy araganeando a lo loco.

Saludos, y muchas gracias por tus comentarios.
  #19 (permalink)  
Antiguo 27/06/2003, 13:29
Avatar de NIATO  
Fecha de Ingreso: diciembre-2001
Ubicación: De la puerta pa´ dentro
Mensajes: 24
Antigüedad: 22 años, 3 meses
Puntos: 0
Hola fran86, la verdad que lo probé y funciona de maravillas, solo te quiero preguntar algo.
Se puede agregar un formulario para subir el archivo en lugar de estar cambiando el código todo el tiempo?
gracias.
Salu2.
  #20 (permalink)  
Antiguo 27/06/2003, 19:26
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Claro que puedes, crea el form a tu gusto con algun editor web (tipo DW).
Ten en cuenta que en la parte que dice:
Código PHP:
$csv          "c:\windows\escritorio\Horario Fran 2001.csv"
deberias reemplazarla con algo asi:
Código PHP:
$csv          $_FILES['userfile']['tmp_name']; 
Fijate por aqui para mas datos:
http://www.php.net/features.file-upload

saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:52.