Para
el correcto aprendizaje supondremos una “situación”, supongamos que tienes
un sistema de noticias, en el cual los usuarios pueden ver las noticias de la
forma noticia.php?id=1, entonces queremos que los usuarios dejen sus
comentarios sobre cada noticia.

Nota: La explicación la hago suponiendo un conocimiento básico de
PHP y interacción con bases de datos (en este caso MySql) por parte del
lector.

Lo primero que tenemos que pensar es ¿que datos del usuario necesitamos?, bien,
supongamos que queremos que el usuario deje su comentario junto con un nick
(nombre, sobrenombre, alias), para ello crearíamos una tabla llamada comentarios con los campos:

id
– Tipo Entero

nick – Tipo Caracter

comentario – Tipo Caracter

La
instrucción para su creación seria:

CREATE TABLE comentarios ( 
id bigint(7) default NULL, 
nick char(20) default NULL, 
comentario char(250) default NULL, 
KEY id (id) )

Bien,
pero aquí viene el problema que se le presenta a muchas personas y es
¿como reconocer que comentarios corresponden a una noticia determinada?, aunque
para algunos parezca sencillo les digo (por experiencia con esas personas) que
puede ser un dilema para muchos que no lo “ven”.

Muchos
piensan que se hace desde la noticia, reconociendo los comentarios, pero es
al contrario, son los comentarios quienes tienen que saber a que noticia pertenecen,
para ello necesitamos otro campo en nuestra tabla de comentarios:

CREATE TABLE comentarios ( 
id bigint(7) default NULL, 
id_noticia bigint(7) default NULL, 
nick char(20) default NULL, 
comentario char(250) default NULL, 
KEY id (id) )

El
campo de tipo entero id_noticia, el cual
contendrá el id de la noticia a que
corresponde.

Nota:
Recordemos que en este caso suponemos que las noticias se llaman de la forma
noticia.php?id=234, donde el id corresponde
al id de la noticia en la base de datos.

Ahora debemos mostrar los comentarios, y tener un formulario de envío
de comentarios en mi noticia.php y una aplicación
que lo procese.

Nota:
Solo voy a poner el código que muestra los comentarios y el formulario
de envío, ya que de eso es que trata este tutorial y se supone que ya
tienes tu sistema de noticias (o en lo que sea que lo vayas a implementar).

Este
es el código que muestra los comentarios de la noticia actual (después
el código para enviar los comentarios), recordemos que obtenemos el id de la noticia que lo hemos pasado por
medio de noticia.php?id=123, primero el
código, luego la explicación del código:

<CENTER>
<TABLE CELLSPACING=1 CELLPADDING=1 WIDTH=300 BORDER=0 STYLE="border:1px solid black">
<TR>
<TD BGCOLOR="#FAFAFA">
<CENTER>
<SPAN STYLE="font-size:11px;font-family:Tahoma;color:black;font-weight:bold"> .Comentarios De Los Usuarios.
</SPAN>
</CENTER>
</TD>
</TR>

<TR>
<TD HEIGHT=1 BGCOLOR=black>
</TD>
</TR>

<TR>
<TD BGCOLOR="#FEFEFE">
<SPAN STYLE="font-size:11px;font-family:Tahoma;color:black;">

<?
$resultComen = mysql_query("SELECT * FROM comentarios WHERE id_noticia='$id' ORDER BY id ASC");
while($rowComen = mysql_fetch_array($resultComen))
{
?> ;
< FONT COLOR=RED>
< B><? echo $rowComen["nick"]; ?></B>
< /FONT>
:
< ? echo $rowComen["comentario"]; ?>
< BR>
< ?
}
mysql_free_result($resultComen);
?>

</SPAN>
</TD>
</TR>
</TABLE>
</CENTER>

Aquí lo importante es la lectura de nuestros comentarios, lo que debemos hacer primero
que todo es obtener los comentarios, pero solo queremos aquellos que correspondan
a la noticia actual, para ello pedimos aquellos cuyo campo id_noticia
corresponda con el id de la noticia actual
(noticia.php?id=456):

$resultComen = mysql_query("SELECT * FROM comentarios 
WHERE id_noticia='$id' ORDER BY id ASC");

Y
el resto es sencillo, simplemente imprimir en pantalla cada comentario, con
su respectivo nick:

while($rowComen = mysql_fetch_array($resultComen)) 
{ 
?> 
<FONT COLOR=RED> 
<B><? echo $rowComen["nick"]; ?></B> 
</FONT> 
: 
<? echo $rowComen["comentario"]; ?> 
<BR> 
<? 
} 

Ahora
necesitamos una aplicación que envié los comentarios a la tabla
y un formulario de envío, el cual en este caso estará ubicado
en la pagina de la noticia (noticia.php), y pasara por medio de un campo oculto
el id de la noticia a la aplicación
que se encargara de enviar el comentario.

Primero
el código del formulario, utilizaremos un campo de tipo HIDDEN para pasar el id de la noticia a la aplicación que procesa el formulario
(despues el código de dicha aplicación, llamaremos a nuestra aplicación
nuevoComentario.php), este código debemos
ponerlo en noticia.php:

<CENTER> 
<SPAN STYLE="font-size:11px;font-family:Tahoma;color:black;font-weight:bold"> 
.Enviar Comentario. 
</SPAN> 
</CENTER> 
<p> 
<FORM NAME="miFormu" ACTION="nuevoComentario.php" 
METHOD="post"> 
<INPUT TYPE="hidden" NAME="id" VALUE="<? 
echo $id; ?>"> 
Nick : <INPUT TYPE="text" NAME="nick" SIZE=20 MAXLENGTH=20> 
<BR> 
Comentario: <INPUT TYPE="text" NAME="comentario" 
SIZE=28 MAXLENGTH=250> 
<BR> 
<INPUT TYPE="submit" CLASS="boton" VALUE="Enviar 
Comentario"> 
</FORM>

Aquí cabe destacar el campo:

<INPUT TYPE="hidden" NAME="id" 
VALUE="<? echo $id; ?>">

El
cual recibe como valor el id de la noticia, ahora necesitamos la aplicación nuevoComentario.php que recibe el id
que corresponde al id de la noticia y el nick
y comentario correspondientes, solo pondré
el código de la parte que lee los datos y introduce el comentario en
la base de datos, de ti depende la conexión con la base de datos, dicho
código es el siguiente:

if(isset($HTTP_POST_VARS["id"]) && isset($HTTP_POST_VARS["nick"]) && isset($HTTP_POST_VARS["comentario"])) {
if($HTTP_POST_VARS["comentario"] != "")
{
if($HTTP_POST_VARS["nick"] == "")
{
$nickNuevo = "anonimo";
}
else
{
$nickNuevo = $HTTP_POST_VARS["nick"];
}
$resultCom2 = mysql_query("SELECT id FROM comentarios ORDER BY id DESC LIMIT 0,1");
$rowCom2 = mysql_fetch_array($resultCom2);
$con = $rowCom2["id"];
mysql_free_result($resultCom2);

$con++;
$idNoticia = $HTTP_POST_VARS["id"];
$comentarioNoticia = $HTTP_POST_VARS["comentario"];

mysql_query("INSERT INTO comentarios VALUES
('$con','$idNoticia','$nickNuevo','$comentarioNo ticia')");

echo "Comentario Enviado Con Exito.<BR>Espere Unos Segundos...<SCRIPT LANGUAGE="javascript">window.location.href = "".getenv('HTTP_REFERER')."";</SCRIPT>"; }
else
{
echo "Debe Introducir Un Comentario.";
}
}

Creo
que no hay mucho que decir sobre este script, como ya dije estoy suponiendo
un conocimiento básico de php y interacción con bases de datos
por parte del lector.

Suerte
y hasta el próximo tutorial!