rulu ruru

postinsertar un archivo csv en mysql con php

November 25th, 2007

Filed under: PHP — admin @ 1:39 am

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"; } 
 
?>
Enlaces pagos


No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

You must be logged in to post a comment.

ruldrurd
Entries (RSS) and Comments (RSS)