1r -Se registran en un formulario, los datos pasen a la base de datos, una vez echo esto cuando el usuario introduzca el nombre de unsuario y la clave acceda al foro.
Pues deberias tener 2 tablas.
mysql> CREATE TABLE formulario( id SMALLINT,
-> nombres CHAR(15) NOT NULL,
-> contraseña VARCHAR(40) NOT NULL,
-> pais VARCHAR(30),
-> edad INT,
-> CONSTRAINT pk_id PRIMARY KEY(id),
-> UNIQUE(nombres));
Query OK, 0 ROWS affected (0.09 sec)
mysql> CREATE TABLE datos( id SMALLINT,
-> fecha DATE,
-> mensaje VARCHAR(80))
Query OK, 0 ROWS affected (0.08 sec)
mysql> CREATE INDEX indice ON datos(id);
2n -Despues de haber echo estos pasos para hacer una consulta a la base de datos de los usuarios, donde se registran.
Esto no lo entendi bien, pero supongo que se te pidio para que guardes el campo ID del usuario en cuestion en una variable de session o algo así que podras utilizar para insertar datos en la tabla Datos (Mensaje, fecha por ejemplo). utilizando el mismo valor del campo ID correspondiente al usuario en cuestion.
3r -Una consulta a la base de datos del foro, con la ID, nombre, fecha, mensaje.
pues podrias hacer tu consulta filtrando por ID utilizando usuario y fecha como predicados.
mysql> SELECT id, nombres, fecha, mensaje FROM formulario NATURAL JOIN datos;
+----+---------+------------+----------------------+
| id | nombres | fecha | mensaje |
+----+---------+------------+----------------------+
| 1 | pepe | 2005-11-23 | No me gusta ducharme |
| 1 | pepe | 2008-10-23 | La lechuga es Mala |
| 2 | lucia | 2003-05-23 | Las rosas rojas |
| 2 | lucia | 2007-02-25 | Lavando la ropa |
+----+---------+------------+----------------------+
4 ROWS IN SET (0.00 sec)
mysql> SELECT id, nombres, fecha, mensaje FROM formulario NATURAL JOIN datos wh
re fecha = '2003-05-23';
+----+---------+------------+-----------------+
| id | nombres | fecha | mensaje |
+----+---------+------------+-----------------+
| 2 | lucia | 2003-05-23 | Las rosas rojas |
+----+---------+------------+-----------------+
1 ROW IN SET (0.01 sec)
mysql> SELECT id, nombres, fecha, mensaje FROM formulario NATURAL JOIN datos whe
re nombres = 'pepe';
+----+---------+------------+----------------------+
| id | nombres | fecha | mensaje |
+----+---------+------------+----------------------+
| 1 | pepe | 2005-11-23 | No me gusta ducharme |
| 1 | pepe | 2008-10-23 | La lechuga es Mala |
+----+---------+------------+----------------------+
2 ROWS IN SET (0.02 sec)
Un poquito de Tunning para asegurarnos que los indices le estamos sacando el beneficio que es :
mysql> EXPLAIN SELECT datos.id, nombres, fecha, mensaje FROM formulario, datos w
here formulario.nombres = 'pepe' AND formulario.id = datos.id\G
*************************** 1. ROW ***************************
id: 1
select_type: SIMPLE
TABLE: formulario
TYPE: REF
possible_keys: PRIMARY,indecito
KEY: indecito
key_len: 60
REF: const
ROWS: 1
Extra: USING INDEX condition
*************************** 2. ROW ***************************
id: 1
select_type: SIMPLE
TABLE: datos
TYPE: REF
possible_keys: indice
KEY: indice
key_len: 3
REF: primaria.formulario.id
ROWS: 2
Extra:
2 ROWS IN SET (0.00 sec)
mysql> SELECT datos.id, nombres, fecha, mensaje FROM formulario, datos WHERE FOR
mulario.nombres = 'pepe' AND formulario.id = datos.id
-> ;
+------+---------+------------+----------------------+
| id | nombres | fecha | mensaje |
+------+---------+------------+----------------------+
| 1 | pepe | 2005-11-23 | No me gusta ducharme |
| 1 | pepe | 2008-10-23 | La lechuga es Mala |
+------+---------+------------+----------------------+
2 ROWS IN SET (0.00 sec)
Espero que mas o menos esto te sirva de guia, no es la manera mas correcta lo admito, pero hasta la fecha no he generado desde cero ningun foro con PHP.