You are on page 1of 11

Curso de PHP y MySQL

1. Instalando MySQL
Instalar MySQL en su versin para Windows, e ir haciendo pruebas antes de subir nuestras pginas, es bastante sencillo. En la seccin Programas podeis encontrarlo para bajarlo. Simplemente haced doble click en el programa de instalacin, responded a las tpicas preguntas de dnde lo quieres instalar, etc., y ya est. Ahora hay que ponerlo en marcha. Para ello, siempre debe estar ejecutndose (estar en segundo plano) el programa mysqld.exe, situado en el subdirectorio bin del directorio en el que se haya instalado el programa. Con este programa en marcha, ejecutaremos mysql.exe para ver cmo entrar sentencias SQL, o directamente podremos probar scripts PHP que conecten con el servidor MySQL. Como PHP lleva soporte interno para MySQL, nicamente hemos de acordarnos de tener en memoria el programa mysqld.exe, el resto lo hace l solo, como iremos viendo en los siguientes captulos.

2. Ejecutando acciones desde MySQL


Una vez instalado y en marcha el programa mysqld.exe, vamos a ver algunas acciones de ejemplo que podemos realizar bajo el entorno de MySQL. Para ello, ejecutamos el programa mysql.exe (tambin en el subdirectorio bin), y entraremos, viendo algo como esto: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 3.23.24-beta-debug Type 'help;' or '\h' for help. Type '\c' to clear the buffer mysql> _ Un mensaje de bienvenida, y el prompt del sistema, que ha cambiado por mysql>. Vamos a ver cmo crear una base de datos. La sintaxis ser CREATE DATABASE NombreBD, por ejemplo: mysql> CREATE DATABASE Prueba; Query OK, 1 row affected (0.72 sec) mysql> _ Con esto, acabamos de crear la base de datos Pruebas, que se habr grabado en el subdirectorio data del programa, dentro de un directorio llamado como la base de datos, es decir, Pruebas. Podemos ver las bases de datos que existen en Mysql, sin ms que hacer: mysql> SHOW DATABASES; +----------+ | Database | +----------+ | Prueba | | mysql | | test | +----------+ 3 rows in set (0.55 sec) mysql> _ Ahora que sabemos qu bases de datos existen (no borreis las otras dos, porque son propias del programa), vamos a elegir una con la que trabajar, escribiendo esto: mysql> USE Prueba; Database changed mysql> _ Con la base de datos que vamos a usar activa, crearemos una tabla, haciendo esto: mysql> CREATE TABLE USUARIOS( -> USUARIO VARCHAR(30) NOT NULL, -> EMAIL VARCHAR(50) NOT NULL, -> NOMBRE VARCHAR(20) NOT NULL, -> APELLIDOS VARCHAR(40) NOT NULL, -> ICONO INTEGER, -> PRIMARY KEY(USUARIO)); Query OK, 0 rows affected (0.83 sec) mysql> _ Por claridad, he escrito cada campo en una lnea. Como an no haba escrito el punto y coma terminador de sentencia SQL, al darle a ENTER l ha puesto la flecha -> y la indentacin.

Y ahora que hemos creado la tabla, vamos a borrarla (ms que nada porque estamos practicando y hay que ver de todo, no porque sea la costumbre usual ;-) ). Para ello, haremos: mysql> DROP TABLE USUARIOS; Query OK, 0 rows affected (0.11 sec) mysql> _ Llevad cuidado cuando borreis una tabla, pues no quedar ni rastro de ella, as que luego no podreis recuperar los datos que hubiera. Hay que estar muy seguro de que se quiere borrar una tabla para hacerlo. Y, puestos a borrar, vamos a borrar la base de datos (repito, esto no es lo usual cuando uno trabaja con ellas ;-) ), para lo que haremos: mysql> DROP DATABASE Prueba; Query OK, 0 rows affected (0.11 sec) mysql> _ Hemos borrado la base de datos entre otras cosas porque era un ejemplo y tampoco era demasiado til O;-) Vamos a salir del programa, ejecutando exit. Ya sabemos crear la base de datos, elegirla de entre unas cuantas, crear tablas... insertar registros tampoco ser nada complicado, sin embargo, estara bien poder pensar cmo ser la base de datos, escribir en algn fichero los comandos a ejecutar, y pasar ese script a MySQL, incluso, con algunas inserciones de registros, si es necesario. Bien, pues de eso es de lo que vamos a ver ahora un ejemplo. Con cualquier editor de texto, nos creamos un fichero como este (yo lo he llamado ScriptEjemplo.sql): CREATE DATABASE REGISTRO; USE REGISTRO; CREATE TABLE USUARIOS( USUARIO VARCHAR(30) NOT NULL, EMAIL VARCHAR(50) NOT NULL, NOMBRE VARCHAR(20) NOT NULL, APELLIDOS VARCHAR(40) NOT NULL, ICONO INTEGER, PRIMARY KEY(USUARIO) ); La extensin no es importante, simplemente ser para recordarnos que ese archivo contiene comandos SQL, pero a MySQL le dar igual que pongas esa, otra o ninguna extensin. Lo que le importar es que el fichero exista, y que contenga comandos escritos correctamente y en el orden correcto (por ejemplo, no se puede crear una tabla antes de elegir la base de datos). Lo grabamos donde queramos, y luego ejecutamos: mysql < UNIDAD:\RUTA\ScriptEjemplo.sql Si todo ha ido bien, MySQL habr hecho todo lo que estuviera escrito en el fichero. Si algo ha fallado, dir qu error ha sucedido. Con la base de datos del ejemplo del script, volvemos a entrar en MySQL. Escribimos USE Registro; para seleccionar esa base de datos, y vamos a insertar un registro, tal que este (por ejemplo): mysql> INSERT INTO USUARIOS(USUARIO,EMAIL,NOMBRE,APELLIDOS,ICONO) -> VALUES( -> 'MADDY', -> 'MADDY@MADDY.COM', -> 'MADDY', -> 'MADDY', -> 1); Query OK, 1 row affected (0.33 sec) mysql> _ Si queremos realizar ahora una consulta, ser tan sencillo como escribir lo siguiente: mysql> SELECT USUARIO FROM USUARIOS; +---------+ | USUARIO | +---------+ | MADDY | +---------+ 1 row in set (0.55 sec) mysql> _ Por ltimo, vamos a ver una accin que nos resultar til cuando no nos acordemos de cmo estaba definida una tabla, qu campos tena, de qu tipo, etc., se trata de SHOW COLUMNS FROM tabla. Lgicamente, para ello debemos tener seleccionada una base de datos ;-) mysql> SHOW COLUMNS FROM USUARIOS; +-----------+-------------+------+-----+---------+-------+---------------------------------+ | Field | Type | Null | Key | Default | Extra | Privileges | +-----------+-------------+------+-----+---------+-------+---------------------------------+ | USUARIO | varchar(30) | | PRI | | | select,insert,update,references | | EMAIL | varchar(50) | | | | | select,insert,update,references |

| NOMBRE | varchar(20) | | | | | select,insert,update,references | | APELLIDOS | varchar(40) | | | | | select,insert,update,references | | ICONO | int(11) | YES | | NULL | | select,insert,update,references | +-----------+-------------+------+-----+---------+-------+---------------------------------+ 5 rows in set (0.60 sec) Y aqu tenemos la informacin que queramos :-)

3. Conectando con MySQL desde PHP


Ahora que ya sabemos movernos por el entorno MySQL, vamos a aprender cosas ms interesantes. Lo visto en el captulo pasado sirve para realizar a mano alguna accin puntual sobre la base de datos, pero lo normal es que queramos acceder a ella por programa, en este caso, desde un script PHP. Para ello, en primer lugar debemos conectarnos a MySQL, accin que podremos realizar llamando a la funcin mysql_connect(). Esta funcin tiene la siguiente cabecera: mysql_connect(string Servidor, string Usuario, string Clave); siendo: Servidor: Es el nombre (o la direccin IP) del servidor donde est MySQL. El valor por defecto ser 'localhost'. Usuario: Es el nombre del usuario que va a acceder a MySQL Clave: Es la clave correspondiente al usuario. Esta funcin nos devuelve un valor de tipo int que sirve para identificar la conexin con el servidor SQL, as que podremos asignarlo a una variable con la que referirnos a la conexin abierta. Por ejemplo, si todos pueden acceder al servidor, abriramos la conexin haciendo: $IdConexion = mysql_connect("localhost","",""); Ser til tener los datos en variables (las posteriores modificaciones son as ms sencillas), por ejemplo, en las siguientes lneas guardamos el nombre del servidor, usuario y clave en variables, y abrimos la conexin: <?php $Servidor = "localhost"; $Usuario = "Perico"; $Clave = "Palotes"; $IdConexion = mysql_connect($Servidor, $Usuario, $Clave); ?> Adems, esto podemos grabarlo en un archivo, por ejemplo, 'ConexionBD.php', y en lugar de escribir lo anterior, poner: <?php include("Utilidades/ConexionBD.php"); ?> As podremos usar este pequeo script de conexin al servidor de bases de datos en los scripts que lo requieran. Una vez abierta la conexin, tenemos las siguientes opciones: Crear una nueva base de datos Borrar una base de datos existente Abrir una base de datos existente

Crear una base de datos


Podemos crear una nueva base de datos usando la funcin: mysql_create_db(string NombreBD, int IdConexion); NombreBD ser el nombre que queramos darle a la base de datos IdConexion es el identificador de la conexin abierta Por ejemplo, teniendo abierta una conexin cuyo identificador hemos guardado en la variable $IdConexion, para crear una base de datos cuyo nombre sea "PruebaBD", haremos: <?php $NombreBD = "PruebaBD"; mysql_create_db($NombreBD, $IdConexion); ?>

Borrar una base de datos existente


Hay que recordar que borrar una base de datos eliminar toda la informacin que sta tuviera, incluida la estructura de las tablas, no dejando rastro alguno de la base de datos en el servidor. La funcin para eliminar una base de datos es: mysql_drop_db(string NombreBD, int IdConexion); Por ejemplo, si queremos eliminar la base de datos que acabamos de crear, haramos: <?php mysql_drop_db($NombreBD, $IdConexion); ?>

donde $NombreBD e $IdConexion son las variables que tenamos definidas antes, una con el nombre de la base de datos y otra con el identificador de la conexin.

Abrir una base de datos existente


Por ltimo, podemos escoger sobre qu base de datos de las existentes queremos trabajar, para ello, usaremos la funcin: mysql_select_db(string NombreBD, int IdConexion); Por ejemplo, si queremos abrir una base de datos cuyo nombre sea "Usuarios", haremos lo siguiente: <?php $NombreBD = "Usuarios"; mysql_select_db($NombreBD, $IdConexion); ?> siendo $IdConexion el identificador de la conexin abierta. Dos funciones ms que nos van a ser tiles sern las funciones mysql_errno(); y mysql_error();. mysql_errno(int IdConexion); Esta funcin devuelve un nmero de error que se haya dado al hacer alguna operacin sobre una base de datos MySQL. mysql_error(int IdConexion); Esta funcin devuelve un mensaje de error que se haya dado al hacer alguna operacin sobre una base de datos MySQL. Veamos un ejemplo de uso: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD> <TITLE> Prueba PHP y MySQL </TITLE> </HEAD> <BODY BGCOLOR=white> <?php $NombreBD = "Registro"; $Servidor = "localhost"; $Usuario = "root"; $IdConexion = mysql_connect($Servidor, $Usuario); print("Vamos a provocar un error haciendo un SELECT de una ". "tabla que no existe.<P>"); mysql_select_db($NombreBD, $IdConexion); $Query = 'SELECT USUARIO,EMAIL FROM NOEXISTE'; $IdConsulta = mysql_query($Query, $IdConexion); print("mysql_error dice: <B>".mysql_error($IdConexion)."</B><BR>"); print("mysql_errno dice: <B>".mysql_errno($IdConexion)."</B><P>"); ?> Fin del ejemplo. </BODY> </HTML> El resultado ser como el de la imagen:

Dejamos el captulo en este punto, y en el siguiente ya comenzamos a ver funciones para acceder a los datos de la base de datos. Entre otras cosas, se explicar la funcin mysql_query();, que ha aparecido por aqu "por arte de magia" ;-)

4. Consultas
Comenzaremos este captulo con un script de ejemplo, llamado PruebaBD.phtml: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD> <TITLE> Prueba PHP y MySQL </TITLE> </HEAD> <BODY BGCOLOR=white> <?php $NombreBD = "Registro"; $Servidor = "localhost"; $Usuario = "root"; $IdConexion = mysql_connect($Servidor, $Usuario); print("Se acaba de establecer la conexin.<BR>"); print("Servidor: ".$Servidor."<P>"); mysql_select_db($NombreBD, $IdConexion); $Query = 'SELECT USUARIO,EMAIL FROM USUARIOS'; $IdConsulta = mysql_query($Query, $IdConexion); $ResultQuery = mysql_fetch_array($IdConsulta); print("Usuario: ".$ResultQuery["USUARIO"]."<B>"); print("E-mail: ".$ResultQuery[1]."<P>"); ?> Fin de la conexin a BD. </BODY> </HTML> En este ejemplo, cuya ejecucin podemos observar en la siguiente imagen, se ven varios elementos ya estudiados en el captulo anterior, y uno nuevo, que es el que trataremos extensamente en este captulo.

Podemos ver estas dos lneas de cdigo: $IdConexion = mysql_connect($Servidor, $Usuario); [...] mysql_select_db($NombreBD, $IdConexion); que, como sabemos, la primera establece la conexin, devolviendo en la variable $IdConexion el identificador de la conexin para referirnos a ella despus, y la segunda elige una base de datos de entre todas las que hay, utilizando el identificador de conexin devuelto por la primera. Comenzamos analizando las siguientes dos sentencias: $Query = 'SELECT USUARIO,EMAIL FROM USUARIOS'; $IdConsulta = mysql_query($Query, $IdConexion); En primer lugar, introducimos en una variable a la cual llamamos $Query (como podamos haberla llamado $Consulta o de otra manera) la consulta que queremos hacer y, en segundo lugar, llamamos a la funcin mysql_query, a la que le pasamos la consulta y nos devuelve un identificador de consulta. Veamos ms detalladamente su estructura: mysql_query(string Consulta, int IdConexion); Como se aprecia en la definicin, hemos de pasarle como parmetro obligatorio una cadena en la que debe estar almacenada la consulta a realizar y, como parmetro opcional, el identificador de la conexin abierta (si no se especifica, se toma el que est activo en ese momento). Adems, devuelve un identificador de consulta, que podemos almacenar en una variable para referirnos luego a dicha consulta. Lo que hacemos con esta funcin es enviar la sentencia SQL al servidor MySQL para que sta sea ejecutada. Una vez hecha la consulta, hay que saber cmo recuperar los datos; esto es lo que hacemos en las siguientes lneas: $ResultQuery = mysql_fetch_array($IdConsulta); print("Usuario: ".$ResultQuery["USUARIO"]."<B>"); print("E-mail: ".$ResultQuery[1]."<P>"); Tenemos varias funciones para recuperar los datos de una consulta. Una de ellas es, como vemos en el ejemplo, mysql_fetch_array();. Esta funcin devuelve en un array el contenido de la sentencia SELECT, identificando cada elemento con un campo de la base de datos y avanzando a la siguiente fila. Para ello, debemos pasarle el identificador de consulta devuelto por mysql_query();. Observamos, adems, que como ndice podemos especificar tanto su posicin numrica (los arrays van del 0 al N-1, donde N es el nmero de elementos) como, entre comillas, el nombre del campo. Si queremos recorrer todas las filas devueltas por el SELECT, tendremos que ir haciendo la asignacin fila a fila hasta que ya no queden filas. Para saber cuntas filas devuelve un SELECT, tenemos la funcin mysql_num_rows();. Esta funcin, cuya definicin vemos: mysql_num_rows(int IdConsulta); devuelve un entero, que ser el nmero de filas del SELECT, de la consulta correspondiente al identificador IdConsulta. Por ejemplo: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD> <TITLE> Prueba PHP y MySQL </TITLE> </HEAD> <BODY BGCOLOR=white> <?php $NombreBD = "Registro"; $Servidor = "localhost"; $Usuario = "root";

$IdConexion = mysql_connect($Servidor, $Usuario); print("Se acaba de establecer la conexin.<BR>"); print("Servidor: ".$Servidor."<P>"); mysql_select_db($NombreBD, $IdConexion); $Query = 'SELECT USUARIO,EMAIL FROM USUARIOS'; $IdConsulta = mysql_query($Query, $IdConexion); $ResultQuery = mysql_fetch_array($IdConsulta); print("Usuario: ".$ResultQuery["USUARIO"]."<B>"); print("E-mail: ".$ResultQuery[1]."<P>"); $NFilas = mysql_num_rows($IdConsulta); print("Hay ".$NFilas." filas devueltas en la consulta<P>"); ?> Fin de la conexin a BD. </BODY> </HTML> Cuyo resultado es:

Al igual que tenemos mysql_fetch_array();, hay una funcin que se llama mysql_fetch_row();. Hace lo mismo, pero con una salvedad, y es que no se puede usar el nombre del campo en el array que devuelve como si fuera una manera de indexar. Es decir, slo admite referencias numricas a los campos de la consulta. Hay que tener en cuenta que el primero es el 0. Otras funciones que pueden sernos tiles son: mysql_field_name(int IdConsulta, int IndiceCampo); Nos devuelve el tipo de dato correspondiente a un campo de la base de datos, perteneciente a la consulta IdConsulta y cuya posicin en el SELECT viene dada por IndiceCampo, siendo 0 la primera posicin. Probad a poner, como muestra, este cdigo en el ejemplo: $TipoDato = mysql_field_type($IdConsulta, 1); print("Tipo de dato del campo: ".$TipoDato."<P>"); mysql_field_name(int IdConsulta, int IdCampo); Esta funcin nos devuelve el nombre del campo que ocupa la posicin IdCampo referente a la consulta IdConsulta. Una vez ms, hay que decir que los campos se numeran de 0 a N-1, siendo N el nmero de campos de la consulta. Podemos incluir este fragmento de cdigo en el ejemplo anterior: $NombreDato = mysql_field_name($IdConsulta,0); print("Nombre del campo: ".$NombreDato."<P>"); Nos queda por ver una funcin, mysql_result();. Esta funcin tiene la siguiente definicin: mysql_result(int IdConsulta, int Fila, int Campo); Esta funcin nos devuelve el dato referido a la consulta IdConsulta que ocupa la posicin (Fila, Campo). Por ejemplo, si aadimos este cdigo al que tenamos: $Dato1 = mysql_result($IdConsulta, 0, 0); print("El valor obtenido en la posicin (0,0) ". "es: <B>".$Dato1."</B><P>");

Insertar, borrar y actualizar registros es igualmente sencillo. Simplemente, tenemos que almacenar nuestra consulta en una variable, y pasrsela como argumento a la funcin mysql_query();. Terminamos el captulo viendo un ejemplo en el que insertamos un nuevo registro y luego mostramos cuntos hay: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD> <TITLE> Prueba PHP y MySQL </TITLE> </HEAD> <BODY BGCOLOR=white> <?php $NombreBD = "Registro"; $Servidor = "localhost"; $Usuario = "root"; $IdConexion = mysql_connect($Servidor, $Usuario); print("Se acaba de establecer la conexin.<BR>"); print("Servidor: ".$Servidor."<P>"); mysql_select_db($NombreBD, $IdConexion); $Query = 'INSERT INTO USUARIOS '. '(USUARIO,EMAIL) '. 'VALUES ('. '"LOLITA","EMILIO@PUNTO.COM");'; $IdInsercion = mysql_query($Query, $IdConexion); $Query = 'SELECT USUARIO,EMAIL FROM USUARIOS;'; $IdConsulta = mysql_query($Query, $IdConexion); $NFilas = mysql_num_rows($IdConsulta); for($i=0;$i<$NFilas;$i++) { print("Fila ".$i."<BR>"); $ResultQuery = mysql_fetch_array($IdConsulta); print("Usuario: ".$ResultQuery["USUARIO"]."<BR>"); print("E-mail: ".$ResultQuery[1]."<P>"); } ?> Fin de la conexin a BD. </BODY> </HTML> Podemos ver el resultado en la imagen:

5. Un ejemplo final
Para hacernos una idea de cmo trabajar, vamos a desarrollar en este captulo un ejemplo cuya finalidad ser, dada una base de datos con una nica tabla, insertar en ella comentarios. Es un ejemplo sencillo que, convenientemente modificado, puede dar lugar a aplicaciones como un libro de visitas, o ampliar sus posibilidades para hacer un sistema de comentarios en la web, etc. Partimos del siguiente cdigo, que nos crear un formulario en la pgina (obviaremos las directivas de la cabecera y nos centramos directamente en <BODY>): <FORM ACTION="Comentarios.phtml" METHOD="POST" NAME="Comentario"> <CENTER> <H2>Comentarios</H2> <TABLE BORDER=0 CELLSPACING=2 CELLPADDING=2> <TR> <TD>Nombre: </TD> <TD><INPUT TYPE=TEXT SIZE=20 NAME="Nombre"></TD></TR> <TR> <TD>Email: </TD> <TD><INPUT TYPE=TEXT SIZE=20 NAME="Email"></TD></TR> <TR> <TD COLSPAN=2>Escribe tu comentario: <BR> <TEXTAREA ROWS=5 COLS=30 NAME="TComentario"></TEXTAREA></TD></TR> </TABLE> <INPUT TYPE=SUBMIT VALUE="Enviar"> <INPUT TYPE=RESET VALUE="Borrar"> </CENTER> </FORM> Podemos afinar ms, y en lugar de un elemento SUBMIT poner simplemente uno de tipo BUTTON que en su evento onClick tenga asociado un cdigo de validacin de datos, para no permitir campos vacos, o una direccin de correo sin arrobas, etc., para lo que habra que hacer el correspondiente script JavaScript. Pero eso es una ampliacin y queda como ejercicio al lector. La idea va a ser, con los datos del formulario, rellenar los campos de una tabla en una base de datos que ha sido creada invocando a MySQL pasndole este script: CREATE DATABASE COMENTARIOS; USE COMENTARIOS; CREATE TABLE COMENTARIOS( IDCOMENTARIO INTEGER NOT NULL AUTO_INCREMENT, NOMBRE VARCHAR(40) NOT NULL, EMAIL VARCHAR(40) NOT NULL, MENSAJE TEXT NOT NULL, PRIMARY KEY(IDCOMENTARIO) ); Antes de seguir, una aclaracin: el campo IDCOMENTARIO es un entero de tipo AUTO_INCREMENT, esto quiere decir que no necesitaremos incrementar manualmente su valor, sino que cuando insertemos un registro, este valor se generar de forma automtica.

Parece claro, pues, que el contenido del campo Nombre del formulario se insertar en la columna NOMBRE, el del campo Email en la columna EMAIL y el campo TComentario en la columna MENSAJE. Estos datos son pasados al script PHP llamado Comentarios.phtml va el mtodo POST, muy adecuado para este tipo de aplicaciones, ya que, al haber un elemento TEXTAREA, es muy fcil sobrepasar la limitacin de 1 KB de informacin que permite GET. Como sabemos, los nombres para las variables escogidos en el formulario sern los nombres de variables PHP que tendremos que usar en el script que procesa los datos, pues ser ah donde tendremos sus valores. La idea del script ser esta: insertar los datos que nos acaban de introducir en el formulario en la base de datos, y mostrar todos los datos que hubiera hasta el momento, dndole algo de formato. As, el cdigo queda: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD> <TITLE> Ejemplo MySQL </TITLE> </HEAD> <BODY BGCOLOR=white> <?php $NombreBD = "Comentarios"; $Servidor = "localhost"; $Usuario = "root"; $IdConexion = mysql_connect($Servidor, $Usuario); mysql_select_db($NombreBD, $IdConexion); $Query = 'INSERT INTO COMENTARIOS'. ' (NOMBRE,EMAIL,MENSAJE)'. ' VALUES ('. '"'.$Nombre.'","'.$Email.'","'.$TComentario.'");'; $IdInsercion = mysql_query($Query, $IdConexion); ?> Mensajes insertados hasta ahora: <P> <?php $Query = 'SELECT NOMBRE,EMAIL,MENSAJE FROM COMENTARIOS;'; $IdConsulta = mysql_query($Query, $IdConexion); $NFilas = mysql_num_rows($IdConsulta); ?> <CENTER> <TABLE BORDER=0 BGCOLOR=#7BA9E8 CELLPADDING=4 CELLSPACING=3> <? for($i=0;$i<$NFilas;$i++) { $ResultQuery = mysql_fetch_array($IdConsulta); print("<TR>"); print("<TD>Nombre: ".$ResultQuery["NOMBRE"]."</TD>"); print("<TD>E-mail: ".$ResultQuery["EMAIL"]."</TD></TR>"); print("<TR><TD BGCOLOR=#ACC1FB COLSPAN=2>"); print("Mensaje: ".$ResultQuery["MENSAJE"]."</TD>"); print("</TR>"); } ?> </TABLE> </CENTER> </BODY> </HTML> Con todo lo visto, no queda mucho ms por comentar aqu, ya que no se ha hecho nada nuevo con respecto a captulos anteriores. Un ejemplo, tras varias inserciones de prueba, de este script, podemos verlo en la imagen:

A partir de ahora, todo depende de la imaginacin del lector :-)