La
mayoría de los desarrolladores no tienen un diseño de fondo en relación con
MySQL, así que cuando crean su base de datos, es ineficiente, con errores y poco
fiable.
Bien
por la creación de las especificaciones para su base de datos MySQL, su
aplicación será eficiente y confiable, ya que responde a las normas de la
industria para la creación de una adecuada base de datos.
Usted
obtiene los siguientes beneficios al diseñar de forma adecuada una base de
datos MySQL:
*
Velocidad - Dado que la base de datos es eficiente y utiliza los datos
correctos y tipos de caracteres de longitud, mejorará la velocidad de consulta.
*
Seguridad - La seguridad mejora, ya que permiten a los datos específicos se
almacenan en la base de datos MySQL, y nada más.
*
Eficiencia del espacio de almacenamiento - Ya que está desarrollando una base
de datos que es puramente basado en especificaciones de los datos, no habrá
bytes o caracteres innecesarios almacenados en la base de datos MySQL. Esto
ahorra espacio
Los tipos de datos de MySQL más comúnmente utilizados son VARCHAR, DECIMAL, DATE, INT, TEXT y TIMESTAMP.
VARCHAR es de uso común para
cadenas de longitud variable de hasta 255 caracteres. Si usted debe almacenar y
procesar datos de naturaleza alfanumérica, este tipo de datos es el más
adecuado.
Los ejemplos más comunes de
datos reales que se ajusten a este tipo incluyen nombres de personas, códigos
postales, números de teléfono y cualquier tipo de datos alfanuméricos que no
exceda de 255 caracteres de longitud. No utilice el tipo VARCHAR al almacenar
números que se utilizarán para cálculo, ya que podría causar algunos problemas
relacionados con la computación. En otras palabras, podría afectar la exactitud
e integridad de la computación.
DECIMAL es adecuado para
almacenar los números que se utilizarán para cálculo. En MySQL, se puede
especificar el número de dígitos en números permitidos para ser almacenados
(incluyendo el número de decimales). También podemos especificar si se permiten
valores negativos.
La asignación de la longitud
adecuada del tipo DECIMAL puede ser complicada. Por ejemplo, si usted necesita
para almacenar sólo 5 dígitos antes del punto decimal y permitir sólo 3 dígitos
después del punto decimal, la longitud adecuada / valores que se configuran en
la base de datos es:
Decimal (5 +3, 3) o decimal
(8, 3)
Ejemplos de números
permitidos: 12345.678, 56872.690, 11.6 y 12.568
Los siguientes números, sin
embargo, retornarán error: 128781.1, 8972865.231
El tipo de datos DATE es
recomendado para el almacenamiento de fechas. El formato de fecha
predeterminado para MySQL es 2009-05-18 [año-mes-día].
El tipo de datos INT se
recomienda si va a guardar números que no contengan un punto decimal. INT
significa entero. Una vez más, como en DECIMAL, especificar correctamente INT
en MySQL puede ser complicado.
Hay varios tipos entero que
usted necesita conocer, así como el número máximo de dígitos que pueden tener:
* TINYINT - Este tipo aceptará
hasta 3 dígitos como máximo.
* SMALLINT - Permite un máximo
de 5 dígitos como máximo.
* Este tipo aceptará un
máximo de 8 dígitos como máximo.
* INT - Este tipo le dejará
ir hasta 10 dígitos.
* BIGINT - Si va a permitir
hasta 20 dígitos, este es recomendable.
TEXT es un tipo de datos muy
útil que acepta entradas de texto, una mezcla de cualquier tipo de caracteres
que conforman el contenido de los formularios web. VARCHAR sólo puede aceptar
hasta 255 caracteres, pero TEXT puede ser usado para almacenar datos que supere
esa cantidad.
Cuando el tipo de datos
TIMESTAMP es seleccionado, mediante la verificación de "CURRENT_TIMESTAMP"
como por defecto, MySQL regresa automáticamente la fecha y hora para cada
inserción de datos.
Explicamos
los pasos a seguir para crear la base de datos en MySQL
Antes de abordar los scripts
de nuestro sitio, es importante crear la base de datos (BD) que va a ser
utilizada por los mismos. Hemos elegido una base de datos MySQL, entre otras
razones, porque se trata del tipo de base más corrientemente utilizado en
combinación con PHP. Por supuesto, podríamos haber utilizado cualquier otra
base para la cual PHP tenga funciones o simplemente crear un DSN y emplear las
funciones para ODBC disponibles en PHP.
Pensamos que el hecho de
programar en este lenguaje lleva inherente la necesidad de conocer mínimamente
el funcionamiento de MySQL y que la utilización de cualquier otra BD o método
de conexión no conlleva cambios significativos en los scripts que abordaremos.
Veremos pues el caso particular de MySQL y dejamos a vuestra cuenta aplicar lo
visto para cualquier otra base.
En capítulos de otros
manuales hemos explicado la instalación y utilización de MySQL y la sintaxis
para la creación de tablas. En este capítulo nos limitaremos a describir paso a
paso la creación de la base postal sin hacer hincapié en el significado de los
comandos utilizados.
Pasemos pues a describir uno
a uno los pasos a seguir:
1.-Creación
de la base de datos
Una vez dentro de MySQL, el
primer paso es crear la base de datos:
Create database postal;
2.-Creación
de las tablas
Para la creación de la tabla
imagenes, donde almacenaremos los gráficos de las postales, generaremos dos
campos: id_imagen, que es el identificador del grafico, específico para cada
uno y cuyo valor corresponde también con el nombre del archivo gif. El otro
campo, tipo, define el objeto de la postal (cumpleaños, Navidades o San
Valentín).
La forma más simple de crear
esta tabla sería:
Create Table imagenes
(
id_imagen int(2),
tipo varchar(15)
);
La siguiente tabla a crear,
postal, debe guardar toda una serie de datos necesarios para hacer llegar la
postal al destinatario y hacer que el remitente reciba la confirmación de
recepción. Veremos cómo actúa cada uno de esos datos en el script más adelante.
Por ahora nos limitaremos a describir la sintaxis de la creación:
Create Table postal
(
id_postal int(5),
texto varchar(255),
email_destinatario
varchar(50),
nombre_destinatario
varchar(50),
email_remitente varchar(50),
nombre_remitente
varchar(50),
id_imagen int(2),
avisar char(7)
);
Para una aplicación más
compleja deberíamos definir además las claves y considerar más detenidamente el
tipo de campo a definir. Aconsejamos leer los capítulos del tutorial de SQL
donde podréis consejos para mejorar las prestaciones de las tablas.
3.-Relleno
de la tabla imagenes con los gráficos de muestra
Para rellenar rápidamente la
tabla en un primer momento, sin necesidad de recurrir a sentencias SQL tipo
Insert, podemos crear un archivo de texto con los registros separados por
líneas y los valores de campo, puestos en el buen orden, separados por
tabuladores. En el pack de descarga encontraréis el archivo texto imagenes ya
preparado. Lo único que tenéis que hacer es colocar el archivo en el directorio
bin de MySQL y ejecutar la siguiente orden en la base de datos:
Load data local infile
"imagenes.txt" into table imagenes;
Con esto tendremos llena la
tabla imagenes. Para comprobarlo teclead:
select * from imagenes;
Veréis como aparece en
pantalla el contenido de la tabla que obviamente corresponde al del archivo texto.
Trabajar
con bases de datos en PHP
Una de las principales ventajas que
presenta el trabajar con páginas dinámicas del lado del servidor es el poder
trabajar con contenidos que están alojados en bases de datos. De esta forma,
podemos organizarlos, actualizarlos y buscarlos de una manera mucho más simple.
El lenguaje PHP, ya hemos
dicho, ofrece interfaces para el acceso a la mayoría de las bases de datos
existentes. Podrás encontrar bases de datos de código abierto, como MySQL,
comerciales propietarias como Oracle y además tiene librerías para acceso a
datos por ODBC, lo que nos permite comunicar con todas las bases de datos
posibles en sistemas Microsoft, como Access o SQL Server. Gracias a los juegos
de funciones existentes para cada sistema gestor de base de datos, podremos
realizar cualquier acción con los datos que necesitemos para el desarrollo de
la más variada gama de aplicación web.
Esta interacción se realiza,
por un lado, a partir de las funciones que PHP nos propone para cada tipo de
base de datos y, por otro estableciendo un diálogo a partir de un idioma
universal: SQL (Structured Query Language) el cual es común a todas las bases
de datos.
Como base ejemplo de estos
capítulos hemos elegido MySQL, sin duda la base de datos más extendida en
combinación con PHP. Su gratuidad, eficiencia y simplicidad la han hecho una
buena candidata. No obstante, en caso de utilizar cualquier otra base
compatible con PHP, las correcciones a llevar a cabo con respecto a nuestros
ejemplos no son excesivamente grandes y la lectura de esos capítulos seguirá
siendo de gran utilidad.
Configurar
la base de datos que vamos a utilizar para los ejemplos de este manual
Una vez instalado MySQL y
antes de poder comenzar con nuestros ejemplos, será necesario llevar a cabo las
siguientes operaciones:
-Introducidos dentro de
MySQL, crearemos la base de datos ejemplo con la siguiente sentencia:
create database ejemplo;
-Seleccionaremos la base ejemplo
como la base a utilizar:
use ejemplo
-Crearemos a continuación la
tabla clientes a partir de la siguiente sentencia:
create table clientes (
nombre varchar(100),
telefono varchar(100)
);
Ahora ya disponemos de
nuestra tabla vacía. Sólo queda comenzar a llenarla con los datos que iremos
insertando.
El conjunto de scripts
utilizados para el bloque de bases de datos puede ser descargado aquí.
Guión de artículos relativos
a las bases de datos en PHP
A lo largo del manual
ofreceremos varios artículos, en los que trataremos cada uno de los accesos a
la base de datos más típicos, como selecciones, actualizaciones o inserciones,
siguiendo el siguiente guión:
Inserción de registros
Selección de registros
Actualización de registros
Borrado de registros
Introducción
de nuevos registros con PHP
Una vez creada la tabla clientes en nuestra
base de datos ejemplo, el paso siguiente sea llenarla con registros. Para ello
vamos a ver este artículo, en el que se reciben datos desde un formulario y
luego se insertan con PHP en la base de datos, en la tabla adecuada.
Los datos del registro
pueden ser recogidos, por ejemplo, a partir de un formulario. Aquí os
proponemos un simple documento HTML que recoge los datos y los envía a una
página PHP que se encarga de procesarlos:
<HTML>
<HEAD>
<TITLE>Insertar.html</TITLE>
</HEAD>
<BODY>
<div
align="center">
<h1>Insertar
un registro</h1>
<br>
<FORM
METHOD="POST" ACTION="insertar.php">
Nombre<br>
<INPUT
TYPE="TEXT" NAME="nombre"><br>
Teléfono<br>
<INPUT
TYPE="TEXT" NAME="telefono"><br>
<INPUT
TYPE="SUBMIT" value="Insertar">
</FORM>
</div>
</BODY>
</HTML>
Llegados a la página destino
del formulario (insertar.php), lo primero que habrá que hacer es establecer un
vínculo entre el programa y la base de datos. Esta conexión se lleva a cabo con
la función mysql_connect. A continuación, deberemos generar una orden de
inserción del registro en lenguaje SQL. Esta orden será ejecutada por medio de
la función mysql_db_query.
En esta función especificaremos primeramente la base
de datos sobre la que queremos actuar y a continuación introduciremos la
sentencia SQL:
<HTML>
<HEAD>
<TITLE>Insertar.php</TITLE>
</HEAD>
<BODY>
<?
//Conexion con la
base
mysql_connect("localhost","tu_user","tu_password");
//selección de la
base de datos con la que vamos a trabajar
mysql_select_db("mi_base_datos");
//Ejecucion de la
sentencia SQL
mysql_query("insert
into clientes (nombre,telefono) values ('$nombre','$telefono')");
?>
<h1><div
align="center">Registro Insertado</div></h1>
<div
align="center"><a href="lectura.php">Visualizar el
contenido de la base</a></div>
</BODY>
</HTML>
Ejecutar
ejemplo
Los parámetros user y password son
definidos por el creador de la base. Es conveniente en un principio, al crear
nuestras bases, trabajar sin ellos con lo cual dejaremos las cadenas
correspondientes vacías: "".
Selección
y lectura de registros con PHP
Dentro de una base de datos,
organizada por tablas, la selección de una tabla entera o de un cierto número
de registros resulta una operación rutinaria.
Aquí os mostramos una forma
bastante clásica de mostrar en pantalla a partir de un bucle los registros
seleccionados por una sentencia SQL:
<HTML>
<HEAD>
<TITLE>lectura.php</TITLE>
</HEAD>
<BODY>
<h1><div
align="center">Lectura de la tabla</div></h1>
<br>
<br>
<?
//Conexion con la
base
mysql_connect("localhost","tu_user","tu_password");
//selección de la
base de datos con la que vamos a trabajar
mysql_select_db("mi_base_datos");
//Ejecutamos la
sentencia SQL
$result=mysql_query("select
* from clientes");
?>
<table
align="center">
<tr>
<th>Nombre</th>
<th>Teléfono</th>
</tr>
<?
//Mostramos los
registros
while
($row=mysql_fetch_array($result))
{
echo
'<tr><td>'.$row["nombre"].'</td>';
echo
'<td>'.$row["telefono"].'</td></tr>';
}
mysql_free_result($result)
?>
</table>
<div
align="center">
<a
href="insertar.html">Añadir un nuevo registro</a><br>
<a
href="actualizar1.php">Actualizar un registro
existente</a><br>
<a
href="borrar1.php">Borrar un registro</a><br>
</div>
</BODY>
</HTML>
Ejecutar
script
Los pasos a realizar son, en
un principio, los vistos para la inserción de un registro: Conexión a la base y
ejecución de la sentencia. Esta vez, la información de dicha ejecución será
almacenada en una variable ($result).
El siguiente paso será
plasmar en pantalla la información recogida en $result. Esto lo haremos
mediante la función mysql_fetch_array que devuelve una variable array con los
contenidos de un registro a la vez que se posiciona sobre el siguiente. El
bucle while nos permite leer e imprimir secuencialmente cada uno de los registros.
La función mysql_free_result
se encarga de liberar la memoria utilizada para llevar a cabo la consulta.
Aunque no es necesaria su utilización, resulta altamente aconsejable.
Actualización
de un registro de la base de datos con PHP
Para mostrar cómo se actualiza un registro
presente en nuestra base de datos, vamos a hacerlo a partir de un caso un poco
más complejo para que empecemos a familiarizarnos con estas operaciones.
Realizaremos un par de scripts que permitan cambiar el número de teléfono de
las distintas personas presentes en nuestra base. El nombre de estas personas,
así como el nuevo numero de teléfono, serán recogidos por medio de un
formulario.
El archivo del formulario va
a ser esta vez un script PHP en el que efectuaremos una llamada a nuestra base
de datos para construir un menú desplegable donde aparezcan todos los nombres.
La cosa quedaría así:
<HTML>
<HEAD>
<TITLE>Actualizar1.php</TITLE>
</HEAD>
<BODY>
<div
align="center">
<h1>Actualizar
un registro</h1>
<br>
<?
//Conexion con la
base
mysql_connect("localhost","tu_user","tu_password");
//selección de la
base de datos con la que vamos a trabajar
mysql_select_db("mi_base_datos");
echo '<FORM
METHOD="POST"
ACTION="actualizar2.php">Nombre<br>';
//Creamos la
sentencia SQL y la ejecutamos
$sSQL="Select
nombre From clientes Order By nombre";
$result=mysql_query($sSQL);
echo '<select
name="nombre">';
//Generamos el
menu desplegable
while
($row=mysql_fetch_array($result))
{echo
'<option>'.$row["nombre"];}
?>
</select>
<br>
Teléfono<br>
<INPUT
TYPE="TEXT" NAME="telefono"><br>
<INPUT
TYPE="SUBMIT" value="Actualizar">
</FORM>
</div>
</BODY>
</HTML>
La manera de operar para
construir el menú desplegable es la misma que para visualizar la tabla. De
nuevo empleamos un bucle while en combinación con la función mysql_fetch_array
lo que nos permite mostrar cada una de las opciones.
El script de actualización
será muy parecido al de inserción:
<HTML>
<HEAD>
<TITLE>Actualizar2.php</TITLE>
</HEAD>
<BODY>
<?
//Conexion con la
base
mysql_connect("localhost","tu_user","tu_password");
//selección de la
base de datos con la que vamos a trabajar
mysql_select_db("mi_base_datos");
//Creamos la
sentencia SQL y la ejecutamos
$sSQL="Update
Clientes Set telefono='$telefono' Where nombre='$nombre'";
mysql_query($sSQL);
?>
<h1><div
align="center">Registro Actualizado</div></h1>
<div
align="center"><a href="lectura.php">Visualizar el
contenido de la base</a></div>
</BODY>
</HTML>
Borrado
de un registro con PHP
Otra de las operaciones elementales que se
pueden realizar sobre una base de datos es borrar un registro. Para hacerlo,
SQL nos propone sentencias del tipo Delete. Veámoslo con un ejemplo aplicado a
nuestra agenda.
Cabe señalar que primero
debemos seleccionar el registro que se desea borrar y luego realizar el borrado
propiamente dicho. Para ello crearemos un menú desplegable dinámico, donde se
podrá seleccionar el elemento que se desea borrar. Luego se pasará a una página
PHP una referencia al elemento seleccionado, para borrarlo de la base de datos.
<HTML>
<HEAD>
<TITLE>Borrar1.php</TITLE>
</HEAD>
<BODY>
<div
align="center">
<h1>Borrar
un registro</h1>
<br>
<?
//Conexion con la
base
mysql_connect("localhost","tu_user","tu_password");
//selección de la
base de datos con la que vamos a trabajar
mysql_select_db("mi_base_datos");
echo '<FORM
METHOD="POST" ACTION="borrar2.php">Nombre<br>';
//Creamos la
sentencia SQL y la ejecutamos
$sSQL="Select
nombre From clientes Order By nombre";
$result=mysql_query($sSQL);
echo '<select
name="nombre">';
//Mostramos los
registros en forma de menú desplegable
while
($row=mysql_fetch_array($result))
{echo
'<option>'.$row["nombre"];}
mysql_free_result($result)
?>
</select>
<br>
<INPUT
TYPE="SUBMIT" value="Borrar">
</FORM>
</div>
</BODY>
</HTML>
El siguiente paso es hacer
efectiva la operación a partir de la ejecución de la sentencia SQL que
construimos a partir de los datos del formulario:
<HTML>
<HEAD>
<TITLE>Borrar2.php</TITLE>
</HEAD>
<BODY>
<?
//Conexion con la
base
mysql_connect("localhost","tu_user","tu_password");
//selección de la
base de datos con la que vamos a trabajar
mysql_select_db("mi_base_datos");
//Creamos la
sentencia SQL y la ejecutamos
$sSQL="Delete
From Clientes Where nombre='$nombre'";
mysql_query($sSQL);
?>
<h1><div
align="center">Registro Borrado</div></h1>
<div
align="center"><a href="lectura.php">Visualizar el
contenido de la base</a></div>
</BODY>
</HTML>
No hay comentarios:
Publicar un comentario