| Para el correcto aprendizaje supondremos una "situacion",
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 explicacion la hago suponiendo un conocimiento basico de
PHP y interaccion 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 creariamos una tabla llamada comentarios con los campos:
id - Tipo Entero
nick - Tipo Caracter
comentario - Tipo Caracter
La instruccion para su creacion seria:
CREATE TABLE comentarios (
id bigint(7) default NULL,
nick char(20) default NULL,
comentario char(250) default NULL,
KEY id (id) )
Bien, pero aqui viene el problema que se le presenta a muchas personas
y es ¿como reconocer que comentarios corresponden a una noticia
determinada?, aunque para algunos paresca 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 contendra 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
envio de comentarios en mi noticia.php y una aplicacion que lo procese.
--------------------------------------------------------------------------------
Nota: Solo voy a poner el codigo que muestra los comentarios y el
formulario de envio, 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 codigo que muestra los comentarios de la noticia actual(despues
el codigo 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 codigo, luego la explicacion del codigo:
<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>
Aqui 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 aplicacion que envie los comentarios a la
tabla y un formulario de envio, el cual en este caso estara ubicado
en la pagina de la noticia(noticia.php), y pasara por medio de un
campo oculto el id de la noticia a la aplicacion que se encargara
de enviar el comentario.
Primero el codigo del formulario, utilizaremos un campo de tipo
HIDDEN para pasar el id de la noticia a la aplicacion que procesa
el formulario(despues el codigo de dicha aplicacion, llamaremos
a nuestra aplicacion nuevoComentario.php), este codigo 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>
Aqui 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 aplicacion nuevoComentario.php que recibe el id que corresponde
al id de la noticia y el nick y comentario correspondientes, solo
pondre el codigo de la parte que lee los datos y introduce el comentario
en la base de datos, de ti depende la conexion con la base de datos,
dicho codigo 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 basico de php y interaccion con
bases de datos por parte del lector.
|