lunes, 11 de junio de 2012

Estructuras Dinámicas de Datos


    Las estructuras dinámicas de datos son estructuras que crecen a medida que ejecuta un programa. Una estructura dinámica de datos es una colección de elementos – llamadas nodos - que son normalmente registros. Al contrario de un arreglo que contiene espacio para almacenar un número fijo de elementos, una estructura dinámica de datos se amplía y contrae durante la ejecución del programa, basada en los registros de almacenamiento de datos del programa.

Las estructuras dinámicas de datos se pueden dividir en dos grandes grupos:

Lineales
· Pilas.
· Colas.
· Listas enlazadas.
No lineales
· Árboles.
· Grafos.

    Las estructuras dinámicas de datos se utilizan para almacenamiento de datos del mundo real, que están cambiando constantemente. Un ejemplo típico, es la lista de pasajeros de una línea aérea. Si esta lista se mantuviera en orden alfabético en un arreglo, sería necesario hacer espacio para insertar un nuevo pasajero por orden alfabético. Esto requiere utilizar un ciclo para copiar los datos del registro de cada pasajero al siguiente elemento del arreglo. Si en su lugar se utilizará una estructura dinámica de datos, los nuevos datos del pasajero se pueden insertar simplemente entre dos registros existentes con un mínimo de esfuerzo.

Listas.

    Una lista lineal es un conjunto de elementos de un tipo dado que se encuentran ordenados y pueden variaren número.

Los elementos de una lista lineal se almacenan normalmente contiguos en posiciones consecutivas de la memoria. Las sucesivas entradas en una guía o directorio telefónico, por ejemplo, están en líneas sucesivas, excepto en las partes superior e inferior de cada columna.

Una lista lineal se almacena en la memoria principal de una computadora en posiciones sucesivas de memoria; cuando se almacenan en cinta magnética, los elementos sucesivos se presentan en sucesión en la cinta. Esta sucesión se denomina almacenamiento secuencial.

Las líneas así definidas se denominan contiguas. Las operaciones que se pueden realizar con listas lineales contiguas son:

    1. Insertar, eliminar o localizar un elemento.
    2. Determinar el tamaño de la lista (número de elementos).
    3. Recorrer la lista para localizar un determinado elemento.
    4. Clasificar los elementos de la lista en orden ascendente o descendente.
    5. Unir dos o más listas en una sola.
    6. Dividir una lista en varias sublistas.
    7. Copiar una lista.
    8. Borrar una lista.

Una lista lineal se almacena en la memoria de la computadora en posiciones sucesivas o adyacentes y se procesa como un arreglo unidimensional. En este caso, el acceso a cualquier elemento de la lista y la adición de nuevos elementos es fácil; Sin embargo la inserción o borrado requiere un desplazamiento de lugar de los elementos que le siguen y, en consecuencia un diseño de algoritmo especifico.

Listas encadenadas.

    Una lista enlazada o encadenada es un conjunto de elementos en los que cada elemento contiene la posición o dirección del siguiente elemento de la lista. Cada elemento de la lista encadenada debe tener al menos dos campos: Un campo que tiene el valor del elemento y un campo (enlace o link) que contiene la posición del siguiente elemento, es decir, su conexión, enlace o encadenamiento. Los elementos de una lista son enlazados por medio de los campos enlaces.

Las listas encadenadas tienen una terminología propia que se suele utilizar normalmente. Primero, los valores se almacenan en un nodo.

Los componentes de un nodo se llaman campos. Un nodo tiene al menos un campo de dato o valor y un enlace (indicador o puntero) con el siguiente campo. El campo enlace apunta (proporciona la dirección de) al siguiente nodo de la lista. El último nodo de la lista encadenada, por convenio, se suele representar por un enlace con la palabra nil (nulo), una barra inclinada, y en ocasiones, el símbolo eléctrico de tierra o masa.

Una lista enlazada o encadenada es una lista que se construye empleando apuntadores. Además, no tiene un tamaño fijo, sino que puede crecer y decrecer durante la ejecución del programa. Se constituyen como variables.

En las listas enlazadas no es necesario que los elementos en la lista sean almacenados en posiciones físicas adyacentes, ya que el apuntador indica dónde se encuentra el siguiente elemento de la lista.

Por consiguiente, la inserción y borrado no exigen desplazamiento como en el caso de las listas contiguas.

Para eliminar un elemento de una lista enlazada, solo es necesario cambiar el puntero del elemento anterior al elemento siguiente del que deseamos eliminar. Para insertar un elemento en determinada posición, solo necesitamos cambiar el apuntador de la posición anterior a donde queremos insertar a nuestro nuevo elemento y este elemento deberá direccionar el elemento al que anteriormente apuntaba el elemento que quedo antes del nuevo elemento.

Una lista enlazada sin ningún elemento se llama lista vacía. Su puntero inicial o de cabecera tiene el valor nulo (nil).

Una lista enlazada se puede definir por:

· El tipo de sus elementos: campo de información (datos) y campo enlace (puntero).
· Un puntero de cabecera que permite acceder al primer elemento de la lista.
· Un medio para detectar el último elemento de la lista: puntero nulo (nil).

Las operaciones que hay que realizar con una lista enlazada son:

    1. Definir y crear los nodos.
    2. Definir la cabecera (o inicio) de la lista.
    3. Recorrer los nodos de una lista enlazada.
    4. Agregar un nodo a la lista.
         a. Al final.
         b. Al Principio.
         c. En el centro.
    5. Eliminar un nodo de la lista.
        a. Al final.
        b. Al Principio.
        c. En el centro.

Pilas

    Es una estructura de datos especial en donde la inserción y el borrado de los nuevos elementos se realizan sólo por un extremo que se denomina cima o tope. Esta estructura posee numerosas analogías en la vida real, por ejemplo imagine una pila de platos.

Dado que las operaciones de insertar y eliminar se realizan por un solo extremo (el superior), los elementos solo pueden eliminarse en orden inverso al que se insertan en la pila. El último elemento que se pone en la pila es el primero en sacar; dado a esto a estas estructuras se les conoce con el nombre de LIFO.

Las operaciones que se pueden realizar con una pila son:

    ü  PUSH (pila, elemento): Introduce un elemento en la pila. También se le conoce como     poner o meter.
    ü  POP (pila): Elimina un elemento de la pila. También se le conoce como sacar o quitar.
    ü  VACIA(pila): Función booleana que indica si la pila esta vacía o no.

Las pilas se pueden implementar por arreglos o bien por punteros siempre y cuando se respete el concepto antes mencionado.

Idealmente, una pila puede contener un número ilimitado de elementos y no producir nunca desbordamiento. En la práctica, sin embargo, el espacio de almacenamiento disponible es finito. La codificación de una pila requiere un cierto equilibrio, ya que si la longitud máxima es demasiado grande, se gasta mucha memoria, mientras que un valor pequeño de longitud máxima producirá desbordamientos frecuentes.

Un ejemplo sencillo de pilas en PHP seria el siguiente:

<?php
  /*insertar pila */
$pila=array("a","b");
echo"</br>antes de insertar</br>";
print_r($pila);
array_push($pila,"c");
echo "</br> </br>despues de insertar</br>";
print_r($pila);
?>

Esto mostraría lo siguiente:

Antes de insertar
Array ( [0] => a [1] => b )

Después de insertar
Array ( [0] => a [1] => b [2] => c )

Colas (filas)

    Las colas o filas son otro tipo de estructura lineal de datos, similares a las pilas, diferenciándose de ellas en el modo de insertar ó eliminar elementos.

Una cola es una estructura lineal de datos en la que las eliminaciones se realizan al principio de la lista, y las inserciones se realizan por la fina de la misma. En las colas el elemento que entró primero también sale primero, por ello se conocen como estructuras FIFO. Así pues la diferencia con las pilas es solamente el modo de entrada y salida de datos.

En la vida real se tienen ejemplos numerosos de colas: la cola de un autobús, la cola de un cine, etc. En todas ellas el primer elemento que llega es el primero que sale.

En informática existen también numerosas aplicaciones de colas. Por ejemplo, en un sistema de tiempo compartido suele haber un procesador central y una serie de periféricos compartidos: discos, impresoras, etc. Los recursos se comparten por los diferentes usuarios y se utiliza una cola para almacenar los programas o peticiones de los usuarios que esperan su turno de ejecución.

Las colas se pueden representar como estructuras dinámicas de datos o como arreglos.
Las operaciones que se pueden realizar con una cola son:

    1. Acceder al primer elemento de la cola.
    2. Añadir un elemento al final de la cola.
    3. Eliminar el primer elemento de la cola.
    4. Vaciar la cola.
    5. Verificar el estado de la cola.

Un ejemplo sencillo de cola en PHP seria el siguiente:

<?php
//array_shift extraex al inicio
$cola=array("a","b","c","d");
echo"</br>antes de desplazar</br>";
print_r($cola);
$atendiendo=array_shift($cola);
echo"</br></br>despues de desplazar</br>";
print_r($cola);
echo"</br></br>atendiendo $atendiendo</br>";
?>

Esto mostraría lo siguiente:

Antes de desplazar
Array ( [0] => a [1] => b [2] => c [3] => d )

despues de desplazar
Array ( [0] => b [1] => c [2] => d )

Atendiendo a

Base de Datos


    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>