miércoles, 5 de mayo de 2010

Crear de un sistema de comentarios en PHP

Enseñaré como crear un sistema de comentarios, técnica que normalmente se utiliza para que los usuarios comenten sobre noticias de tu web, pero tambien se puede usar para otros casos.


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!

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.