insertar un archivo csv en mysql con php

Acabo de terminar una clase que inserta un arhivo csv en mysql con php, sólo debemos determinar los parametros correctos.
La clase es para PHP 5 (PHP POO)

En la clase se introduce:
A) La tabla en donde serán insertados los datos
B) La ruta al archivo
C) El orden y el nombre de los campos en donde irá insertada cada linea del csv.
D) El caracter que separa un valor de otro

Explicaciones:
A- El nombre de la tabla se envia como parametro, en caso de no existir, devuelve un error y mata el script (Die)

B- Se introduce la ruta completa al archivo o si se encuentra en la ubicación del script, sólo el nombre del mismo, si el no existe, devolverá un error y matará el script.

C- El orden sería, un array con los campos de mysql, suponiendo que tenemos que insertar los valores del csv en las siguientes celdas de una tabla: username , password y nombre, creamos el array $order = array(“username,”password”,”nombre”); , de manera tal que ese es el mismo orden en el que se encuetran en el csv; por ejemplo en el csv tenemos:
Invisionarg,9841514sef,Nicolas
pepito,2156df4g,josé

D- En este caso se introduce el separador de valores del csv pueden ser: “,” “;” “:”

archivo = (file_exists($archivo) ? $archivo : false);
$this->order = $order;
if ($iden == ',' || $iden == ';' || $iden == ':') { $this->iden = $iden; } else { $this->iden = false; }
$this->tabla = ($this->comprobar_tabla($tabla) ? $tabla : false);
}

function insertando () {
if (!$this->archivo) { echo "Error, el archivo no existe"; die; }
if (!$this->tabla) { echo "Error, la tabla no existe"; die; }
if (!$this->iden) { echo "Error, el identificador es incorrecto"; die; }
foreach($this->order as $value) {
$values .= $value.',';
}

$values = substr($values,0,strlen($values)-1);
$a = file($this->archivo);
$lineas = count($a);
for($i=0; $i < $lineas; $i++){

$inserto = "'".ereg_replace($this->iden,"'".$this->iden."'",$a[$i])."'";
@mysql_query("insert into ".$this->tabla." ($values) values (".$inserto.")",conexion);
if (mysql_error()) { $this->error .= "".mysql_error(); }
}

}

function comprobar_tabla ($a) {
if (mysql_num_rows(mysql_query("SHOW TABLES LIKE '".$a."'"))>=1)  { return true; } return false;
}

function error()  { return $this->error; } 

}
// creamos la conexion a la DB
define("conexion",mysql_connect("localhost","root","11098787"));
mysql_select_db("blog",conexion);

// seteamos el orden de las celdas
$orden = array("nombre","precio","codigo");

//instancio la clase
$csv = new csv('compras','archivo.csv',$orden,",");
//incerto los datos
$csv->insertando();
//compruebo que no hayan errores
if ($csv->error()) { echo "error en la base de datos el mismo es ". $csv->error(); } else { echo "insertado correctamente"; } 

?>

bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark
tabs-top

1 comentario to “insertar un archivo csv en mysql con php”

  1. David Rodriguez says:

    Hola! he seguido al paso las instrucciones que me han dado, sin embargo me sle este error Parse error: syntax error, unexpected ‘=’ in /home/aceisco/public_html/modulocorreo/simplecsvimport/importador2.php on line 3 lo unico que cambie fueron los parametros, donde pongo el nombre del archivo .csv que esta en la misma carpeta del archivo, la conexion a la base de datos la tabla y los campos d ela bd. alguna idea… es urgente por favor…

Deja un comentario