Necesito ayuda con un proyecto, es esto posible?

SikorZ

Vereis, en el proyecto que me han mandado que haga es utilizar un archivo ya sea .xls o .txt con una base de datos en su interior (preferiblemente usando .ods que es soft libre) para importar todos los datos mediante php a mysql.

Me explico, que la pagina coja un archivo, llamemoslo pepe.xls y luego coja todas sus tablas y las cree en mysql y que ademas, despues coja todos los datos que tiene y los inserte en mysql tambien para tener esa base de datos que hay en .xls en la base de datos de mysql, hay alguna manera?:S...

Ese es mi proyecto en si, quizas sera una tonteria pero... he buscado e investigado y no encuentro nada que me abra un claro de luz, los mismos profesores me han dicho que es dificil y que nos va a dar muchisimos errores pero que debo investigar, alguna idea=/?

al final he pasado el .xls a .csv y usado un script pero me encuentro con un problema, en un campo llamado Alumno/a todos los nombres son en plan Apellido1 Apellido2, Nombre y al ir los campos divididos por comas (,) eso lo toma como dos campos y no lo inserta en la tabla, por lo tanto no se inserta ningun dato, alguna idea de como resolverlo:S? esk es una putada que por esa coma no entren los datos.

r2d2rigo

Ah, pero XLS es un formato de bases de datos?

Matar a tus profesores y cumplir la condena correspondiente en la carcel te traeria menos problemas que lo que te piden, aparte que se lo merecen.

Fus3r

¿Tiene que ser obligatoriamente .xls ?

En Excell o OpenOffice tambien puedes leer archivos con la extension .csv y visualizar los datos en formato de celdas, y en php cuentas con una funcion llamada fgetcsv con la que puedes recorrer todas las celdas e insertarlas en mysql, mostrarlas por pantalla o lo que tu quieras.

Es muy útil para meter listados en bases de datos o a la inversa.

Espero que te sea de ayuda ;)

SikorZ

#3 Muchas gracias, al final he pasado el .xls a .csv y usado un script pero me encuentro con un problema, en un campo llamado Alumno/a todos los nombres son en plan Apellido1 Apellido2, Nombre y al ir los campos divididos por comas (,) eso lo toma como dos campos y no lo inserta en la tabla, por lo tanto no se inserta ningun dato, alguna idea de como resolverlo:S? esk es una putada que por esa coma no entren los datos.

Es la manera mas sencilla que he encontrado de importar los datos teniendo solo un archivo .xls y pasarlos a la bd de mysql de phpmyadmin (tiene que ser usando php y no phpmyadmin:( ).

Fus3r

Pues mira, yo las veces que lo he implementado para no tener ese mismo problema le pasado el delimitador como parametro yo mismo, para que sea ; y no ,

Ej.: fgetcsv($handle, 1000, ";" )

A mi siempre me fue perfecto, siempre y cuando no haya ; dentro de lo datos a insertar, pero vamos en nombres, fechas de nacimiento, etc, es dificil encontrar este símbolo.

Hay muchisima información y ejemplos en el manual oficial de php.

A ver si lo consigues ; )

SikorZ

#5 Guay, eso no lo habia pensado, pero una pregunta, eso no lo tomara mysql como el final de la instruccion? como si ya terminara? porque entonces solo meteria el primer dato no?

Al meter los datos en mysql seria asi:

insert tabla (nombrecampo1, campo2) values (campo1, campo2); <-- para cerrar la instruccion se utiliza el ";", no lo cogeria como final de la instruccion?:S

(De todas formas voy a probarlo ahora mismo;)

EDIT: El script que estoy utilizando no usa la funcion fgetcsv, lo que hace es esto:

Código PHP

EDIT: Ya lo he probado, en cuanto pongo que el delimitador de los campos sea ";" al exportar desde el .xls a .csv no me junta los datos y me sale en el mismo formato, no obstante con "," si funciona¬.¬

NeB1

#6 de todas formas puedes leer directamente un xls en php con cualquier OLEREADER que encuentres (los hay a patadas, solo tienes que buscar "leer excel desde php")

http://sourceforge.net/projects/phpexcelreader/

SikorZ

#7 Ya vi ese mismo script, pero lo que necesito es leer los datos e insertarlos en la BD de mysql, a ver, ya lo he conseguido (por fin :D) pero se me presenta un fallo.

Vereis, tengo que hacer todo que sea lo mas amigable posible para el que importe la base de datos, la idea es que el proyecto pueda ser utilizado por alguien que no posee conocimientos avanzados de informatica entonces me gustaria saber si hay alguna manera de por ejemplo:

Desde el .csv se importan 2 lineas, una vacia y otra con los nombres de las tablas, como hago para por ejemplo eliminar esas filas para que no las meta en mysql automaticamente? que el usuario no tenga que abrir el .csv y borrarlas?

EDIT: Y otra cosa, que tipo de datos debo introducir para que me coja los caracteres como º o las "Ñ" y no me salgan carácteres extraños?

Usuarios habituales

  • SikorZ
  • NeB1
  • Fus3r
  • r2d2rigo