lunes, 26 de mayo de 2014

Diseñando el archivo de instalación de base de datos MySQL en PHP

El desarrollo de bases de datos en entornos AMP (Apache, MySQL y PHP) no sólo requieren del empleo de la herramienta de gestión PhpMyAdmin. En la mayor parte de los casos, se necesitan programas PHP que permitan la instalación o creación automática de la base de datos con las características determinadas por el documentalista en su pliego de especificaciones. A continuación se explican distintos fragmentos de un archivo de instalación. 

Parte1. Creación del archivo de configuración
El programa de instalación debe tener en cuenta que el nombre de usuario, contraseña, servidor de instalación y nombre de la base de datos que compondrán el archivo de configuración. Por tanto se debe crear un formulario que sea capaz de recoger dicha información, procesarla y crear un archivo independiente con los datos señalados. Éstos serán utilizados en sucesivos pasos de instalación como la creación de la base de datos y la instalación de las tablas y sus campos.

Parte2. Instalación de la base de datos
Cualquier operación en MySQL se lleva a cabo en PHP con la función "mysql_query()" que permite introducir cualquier tipo de sentencia, consulta u operación con la base de datos. En este caso, se observará que las consultas SQL coinciden con las experimentadas anteriormente en PhpMyAdmin, lo que significa que son igualmente interpretadas cuando el archivo PHP es ejecutado en el servidor Apache.

mysql_query("CREATE DATABASE nombre-base-de-datos ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci",$con);
echo "<div><li>La base de datos <b>nombre-base-de-datos</b> fue creada correctamente.</li></div>";

En el código anterior se observa la función mysql_query que contiene la consulta SQL que se ejecutará en el archivo de instalación. En color rojo se observa una variable $con que corresponde a los datos de conexión o configuración básicos para acceder a MySQL y poder ejecutar la consulta SQL. Finalmente las últimas líneas corresponden a la función "echo" empleada para imprimir en pantalla un mensaje que indique al usuario que se creó la base de datos correctamente. 

Parte3. Instalación de la tabla y sus campos
Una vez creada la base de datos, se deben crear las distintas tablas de la misma. Para ello es necesario en primer lugar seleccionar la base de datos en la que se realizará la operación. En este sentido se emplea la función "mysql_select_db" que contiene el nombre de la tabla y la variable $con con los datos de conexión para acceder a MySQL. Seguidamente, MySQL interpreta que la operación que se efectuará será realizada en la base de datos ya seleccionada. A continuación se observará que se vuelve a emplear la función "mysql_query()" que siguiendo el mismo patrón que en el caso anterior, contiene la consulta SQL correspondiente a la creación de una tabla denominada "catalogue" con todos los campos especificados y sus correspondientes características. El ejemplo corresponde a un caso real de instalación de una tabla bibliográfica.

mysql_select_db("nombre-base-de-datos", $con);
mysql_query("CREATE TABLE catalogue (
id                         INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id),
idadmin                VARCHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci,
date_entry            VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
date_update         VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
uri                        VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
typedocid             VARCHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci,
typedoc                  VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
subtypedoc               VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
signature_decimal         VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
signature_surname        VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
signature_head          VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
title                         VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
title_alf                 VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
subtitle               VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,      
othertitle           VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,  
uniformtitle          VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
uniformtitle_alf      VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
translatetitle          VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
language           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
edition             VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
authorities           TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
authorities_alf          VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
lawtype                 VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
lawdate              VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
lawcode           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
lawcountry      VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
lawregion           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
lawcity                VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
periodicity           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
pubplace           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
pubdate            VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
date1              VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
date2             VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
serie              VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
nserie             VARCHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci,
physical           VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
npages            VARCHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci,
ncms            VARCHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci,
summary       TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
fulltext1           MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
fulltext2           MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
fulltext3           MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
fulltext4           MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
fulltext5           MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
notes               TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
rights               VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
rightscases       VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
decimalid1        VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci,
decimalnumber1  VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
decimaltext1          VARCHAR(300) CHARACTER SET utf8 COLLATE utf8_general_ci,
decimalid2              VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci,
decimalnumber2  VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
decimaltext2          VARCHAR(300) CHARACTER SET utf8 COLLATE utf8_general_ci,
categoryid           VARCHAR(25) CHARACTER SET utf8 COLLATE utf8_general_ci,
category1           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
category2           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
category3           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
category4           VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
bagtags               TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
edocument            VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
urlresources          TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
reference           TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
cite                     VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationid1           VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationtype1          VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationprop1          VARCHAR(150) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationtitle1          VARCHAR(300) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationid2           VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationtype2          VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationprop2          VARCHAR(150) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationtitle2          VARCHAR(300) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationid3           VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationtype3          VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationprop3          VARCHAR(150) CHARACTER SET utf8 COLLATE utf8_general_ci,
relationtitle3          VARCHAR(300) CHARACTER SET utf8 COLLATE utf8_general_ci,
indexer            LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
FULLTEXT(indexer)
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci
",$con);
echo "<div><li>La tabla <b>catalogue</b> fue creada correctamente.</li></div>";


No hay comentarios:

Publicar un comentario