insertar un archivo csv en mysql con php
November 25th, 2007
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: “,” “;” “:”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <? class csv { var $tabla; var $archivo; var $order; var $iden; function __construct($tabla,$archivo,$order,$iden) { $this->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 .= "<br>".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"; } ?> |




