Una vez realizados los primeros pasos con páginas estáticas, llega el turno de ponerse a trabajar con las páginas dinámicas.
En este sentido el primer paso es crear la base de datos y las tablas correspondientes para poder empezar a trabajar, y no es tarea sencilla… si no se sabe mucho del tema.
La base de datos – aem
El primer paso es crear la base de datos. Lo voy a hacer en local ya que pienso que luego la exportación al servidor será más sencillo. Para crear la base de datos utilizo el phpMyAdmin y simplemento creo la base con la opción nueva Base de datos.
Esto no tiene ningún misterio.
La tabla de torneos – tabla_torneos
Ahora toca el turno de las tablas de la base de datos. He de reconocer que he tenido que pelearme mucho con ello porque lo que parece tan sencillo como exportar una tabla de Access a un formato que admita MySQL, se complica mucho con el tema de los encodings y las fechas.
Lo intenté con ficheros csv y xml y no conseguí nada.
Por no extenderme diré que encontré un artículo que me hizo ver la luz ya que explicaba este asunto de forma muy clara y didáctica:
Pasar una BD de Access a MySQL con phpMyAdmin
De forma esquemática señalaré el procedimiento;
- phpMyAdmin admite para importar tablas los siguientes formatos: SQL, CSV, ODS y XML.
- En esta ocasión vamos a utilizar ODS. ¿Por qué? El formato ODS va a ser capaz de leer las tildes y ñ sin problema.
- ODS es un formato abierto que utiliza Openoffice.org. Para obtener este formato, debemos abrir nuestro fichero de Access, sobre cada una de las tablas, exportarla a formato Excel (que es el más parecido a ODS).
- Una vez obtenido el fichero Excel, lo abrimos. Tras abrirlo, utilizaremos Guardar Como para obtener el fichero ODS.
- Ya tenemos generado nuestro fichero ODS.
- Ahora volvemos a phpMyAdmin y abrimos la opción IMPORTAR.
- Pulsamos el botón Examinar y seleccionamos el fichero ODS anteriormente generado. Veremos cómo automáticamente cambia el Formato del fichero a Hoja de Cálculo de Open Document.
- Si todo ha ido bien, aparecerá un mensaje que nos informará de cuántas estructuras se han creado y cuántas consultas se han ejecutado.
- Nos ha creado una tabla cuyo nombre es igual al nombre del fichero ODS (tabla_torneos).
- Las tablas se han importado casi correctamente. Los nombres de los campos los ha cogido perfectamente, pero nos faltarían algunos detalles.
- En primer lugar, la llave primaria, seleccionamos el campo cdgo_torneo que será llave primaria y en la parte de abajo de la página pulsamos el botón Primaria.
- Otro problema que teníamos era con las fechas. En nuestro caso tenemos dos fechas inicio_torneo y final_torneo, que son fechas, pero no está almacenado en MySQL como Date.
- Cambiar simplemente el tipo del campo de Varchar a Date no funciona, ya que en el Varchar están almacenadas las fechas en el formato dd-mm-yyyy y ese formato no lo soporta MySQL.
- Debemos crear un campo nuevo para cada fecha, de tipo Date. Tras crearlo, debemos realizar un UPDATE como el siguiente:UPDATE `tabla_torneos` SET `final_torneo2` = STR_TO_DATE(`final_torneo`, ‘%d/%m/%Y’) UPDATE `tabla_torneos` SET `inicio_torneo2` = STR_TO_DATE(`inicio_torneo`, ‘%d/%m/%Y’)
- En los nuevos campos ya tenemos los valores de manera correcta, así que podemos borrar los antiguos. Y los campos nuevos renombrarlo para que aparezca con el nombre correcto.
- Algo parecido pasa con los campos BOOLEANOS, no los coge correctamente y almacena valores de tipo cadena VERDADERO y FALSO.
- Así, deberíamos crear un campo nuevo, de tipo BOOLEAN, y actualizarlo utilizando la siguiente consulta:UPDATE `usuarios` SET `fumadornuevo`=’true’ where `fumador`=’VERDADERO’
UPDATE `usuarios` SET `fumadornuevo`=’false’ where `fumador`=’FALSO’ - Con esto tendríamos todo terminado para una única tabla. Si nuestra Base de Datos de Access tiene varias tablas, con llaves externas, tendremos que ir importando todos los ficheros generados para cada tabla.
Para completar el trabajo con la tabla he añadido una nueva columna llamada auto_torneo, que va después de estado_torneo. Este campo va a contener la autonomía del torneo, ya que pienso que puede ser útil para hacer separación de torneos por autonomías.