Cargando



Importar un fichero de una plantilla de cálculos a Mysql con php

En este Tutorial veremos como importar ficheros de plantilla a MySQL a través de PHP.


jul 22 2013 12:42
Profesional
Algunos proyectos web requieren gestionar grandes listados de datos como ser listados de productos, ventas, usuario, noticias.

Mucha gente encuentra mas fácil tener estos datos en forma offline en una planilla de cálculos.
El objetivo de este tutorial es poder realizar la importación independientemente del programa se Excel o Libreoffice u otra opción disponga el usuario.

Luego de crear una base de datos MySQL, necesitas poblarla con información. Los datos de la base suelen estar contenidos en un archivo limitado con comas, o CSV, y necesita ser importado en la base de datos de MySQL. Ésta es una tarea muy simple usando las funciones incorporadas que tiene PHP que hacen que sea fácil importar desde un archivo CSV y exportarlo a una base de datos MySQL.

En este caso tenemos una lista de precios servicio y partes de ordenadores.

importar-fichero-php-mysql.jpg


Ahora sin importar cual sea la planilla de calculo y en que sistema operativo estemos trabajando, buscaremos la opcion para exportar a formato text csv separado por punto y coma ; esto generara un simple fichero de texto donde las columnas seran remplazadas por ; y lo podremos leer desde cualquier plataforma o lenguaje.

importar-fichero-php-mysql-2.jpg


Vamos ahora a crear en una base de datos mysql supongamos Servicios y creamos precios donde agregaremos la información del fichero csv

[color=#0000cd]CREATE TABLE IF NOT EXISTS `precios` ([/color]
[color=#0000cd] `id` int(10) NOT NULL AUTO_INCREMENT,[/color]
[color=#0000cd] `concepto` varchar(255) DEFAULT NULL,[/color]
[color=#0000cd] `precio` decimal(10,2) DEFAULT NULL,[/color]
[color=#0000cd] PRIMARY KEY (`id`)[/color]
[color=#0000cd]) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;[/color]

Ahora el código php que realiza todo el trabajo


[color=#0000cd]<? // conectamos a la base de datos[/color]
[color=#0000cd]$conectar = mysql_connect('localhost', 'usuario', 'clave');[/color]
[color=#0000cd]if (!$conectar) {[/color]
[color=#0000cd] die('No se puedo conectar a MySQL: ' . mysql_error());[/color]
[color=#0000cd]}[/color]
[color=#0000cd]$conexiondb = mysql_select_db('Servicios', $conectar);[/color]
[color=#0000cd]//Subimos el fichero csv que viene del formulario[/color]
[color=#0000cd]move_uploaded_file($_FILES["fichero"]["tmp_name"], $upload_dir . "/" . $FILES["fichero"]["tmp_name"]);[/color]
[color=#0000cd]$cvs = $upload_dir . "/" . $_FILES["ficchero"]["name"];[/color]
[color=#0000cd]//fila va a contar la cantidad de filas del fichero inicia en 0[/color]
[color=#0000cd]$fila = 0;[/color]
[color=#0000cd]$fp = fopen($cvs . "", "r");[/color]
[color=#0000cd]while (!feof($fp)) { //leo el fichero de a un renglon por vez[/color]
[color=#0000cd] $fila++;[/color]
[color=#0000cd]//Salteo la primera fila ya que tiene los titulos y no me interesa insertarlos en la base de datos[/color]
[color=#0000cd] if ($row > 1) {[/color]
[color=#0000cd]// El renglon que leo lo separo con explode y le indio que se separa por ;[/color]
[color=#0000cd] $data = explode(";", fgets($fp));[/color]
[color=#0000cd] $id = $data[0];[/color]
[color=#0000cd] $concepto = $data[1];[/color]
[color=#0000cd] $precio = $data[2];[/color]

[color=#0000cd] $query = "INSERT INTO precios (id,concepto,precio) VALUES($data[0],'$data[1]','$data[2]')";[/color]

[color=#0000cd] mysql_query($query, $conectar);[/color]

[color=#0000cd]// fin del ciclo while[/color]
[color=#0000cd] }[/color]
[color=#0000cd]}[/color]

[color=#0000cd]//cerramos el fichero[/color]
[color=#0000cd]fclose($csv);[/color]

[color=#0000cd]echo "Importación finalizada!!";[/color]
[color=#0000cd]mysql_close($connect);[/color]
[color=#0000cd]?>[/color]

Además se puede usar este script y hacerlo más flexible, permitir al usuario dar de alta el fichero en un formulario html con

[color=#0000cd]<form action=”subircsv.php” metod=”post” enctype="multipart/form-data">[/color]
[color=#0000cd]<input type="file" name="ficherocvs" >[/color]
[color=#0000cd]</form>[/color]

y así poder subir ficheros CSV e importar datos de ese archivo CSV a cualquier base de datos datos mysql o incluso a varias desde un solo ficheros. Hay muchos ajustes que se puede hacer con este script y usarlo de la manera deseada.

importar-fichero-php-mysql-3.jpg


También puede utilizarse cuando mucho usuarios deben subir información a una web, estados de cliente o cuentas, cada uno podrá usar el software que mas le convenga y luego subir todos los en mismo formato compatible para todos.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X