Foros del Web » Programando para Internet » PHP »

[APORTE] Sistema de comentarios para tu web

Estas en el tema de [APORTE] Sistema de comentarios para tu web en el foro de PHP en Foros del Web. Bueno, como ya dije en mi tema del error en mi sistema de comentarios, si conseguia que funcionara crearia un aporte de sistema de comentarios, ...
  #1 (permalink)  
Antiguo 12/09/2008, 14:15
Avatar de fcdragons  
Fecha de Ingreso: agosto-2008
Ubicación: echo $_REQUEST['ubicacion'];
Mensajes: 474
Antigüedad: 15 años, 8 meses
Puntos: 13
[APORTE] Sistema de comentarios para tu web

Bueno, como ya dije en mi tema del error en mi sistema de comentarios, si conseguia que funcionara crearia un aporte de sistema de comentarios, aqui lo teneis, y funciona perfectamente, totalmente comprobado!



Procederemos a crear las tablas llamadas 'comentario'

Código:
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).


Paso 2 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:

Código HTML:
<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):

Código PHP:
$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:

Código PHP:
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:

Código HTML:
<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:

Código HTML:
<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:

Código PHP:
<?
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.";
}
}
?>



Bueno pues espero que les haya gustado, y hasta el proximo aporte o duda :P


Tambien os doy un aviso:
ESTOS COMENTARIOS, SI LO PONES EN UNA PAGINA, Y COMENTAS, TAMBIEN SALDRA SI TIENES EN OTRA PAGINA ESTE SCRIPT, AQUI OS DEJO CON UN EJEMPLO:
http://tutorialeserik.iespana.es/alg...os-en-html.php

y este:

http://tutorialeserik.iespana.es/sis...e-usuarios.php

Si comentan en uno de los dos, y luego van al otro, veran que esta el comentario que pusisteis en la otra pagina
Estais avisados :P


Salu2

BY: fcdragons xD
  #2 (permalink)  
Antiguo 12/09/2008, 14:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 42
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: [APORTE] Sistema de comentarios para tu web

Gracias por el aporte!!!

Saludos
  #3 (permalink)  
Antiguo 12/09/2008, 14:46
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: [APORTE] Sistema de comentarios para tu web

Muy bueno, Muchas Gracias Compañero!! :D
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #4 (permalink)  
Antiguo 12/09/2008, 16:39
Avatar de fcdragons  
Fecha de Ingreso: agosto-2008
Ubicación: echo $_REQUEST['ubicacion'];
Mensajes: 474
Antigüedad: 15 años, 8 meses
Puntos: 13
Respuesta: [APORTE] Sistema de comentarios para tu web

Cita:
Iniciado por the_web_saint Ver Mensaje
Muy bueno, Muchas Gracias Compañero!! :D
Cita:
Iniciado por jamartin Ver Mensaje
Gracias por el aporte!!!

Saludos

Juasjuas me alegra que les guste, hasta otra bye si tienen dudas me las mandan a [email protected] o me agregan
  #5 (permalink)  
Antiguo 05/01/2011, 01:58
 
Fecha de Ingreso: mayo-2010
Mensajes: 185
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: [APORTE] Sistema de comentarios para tu web

Men tu sistema de comentarios no sirve bien, inserta los comentarios, pero no los muestra segun la noticia, muestra todos los comentarios, en todas las noticias, modifique un poco el codigo y quedo asi:

nuevoComentario.php

Código PHP:
<?
include ('config.php');//incluimos conexion a base de datos para q pueda indexarlos

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','$comentarioNoticia')"
); //aqui estaba separado la varioable $comentarioNoticia y solo insertaba "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.";
}
}
?>

este codigo muestra los comentarios, tambien estaba mal:

Código PHP:
<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;">
<?
include ('config.php');//conexion a base de datos
$resultComen mysql_query("SELECT * FROM comentarios WHERE id_noticia=" .$_GET['id']. " ORDER BY id ASC");//aqui usabas la variable $id, pero nunca declaraste lo que hacia, asi que mejor la cambie por un Get, para saber el id
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>
Para enviar un comentario:
Código 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 $_GET['id']; //tuve q cambiar el $id por un Get  ?>">
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>
config.php
Código PHP:
<?
$dbhost
="localhost"//Host del mysql
$dbuser="user"//Usuario del mysql
$dbpass="pass"//Password del mysql
$db="base de datos"//db donde se creará la tabla users

//conectamos y seleccionamos db
mysql_connect("$dbhost","$dbuser","$dbpass");
mysql_select_db("$db");

session_start();
?>
Bueno asi ya me funciono perfectamente!
  #6 (permalink)  
Antiguo 05/01/2011, 02:58
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Respuesta: [APORTE] Sistema de comentarios para tu web

Pero es un sistema bastante obsoleto, etiquetas en desuso, y cero seguridad. aparte de que el tema tiene mas de dos años... ¬¬
__________________
Drupal Argentina
  #7 (permalink)  
Antiguo 05/01/2011, 03:32
 
Fecha de Ingreso: mayo-2010
Mensajes: 185
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: [APORTE] Sistema de comentarios para tu web

mmm es cierto, pero para los principiantes esta bien para empezar, tambien podriamos mejorar la seguridad un poco con strip tag

Código PHP:
<?
$nick 
stripslashes($_POST["nick"]);
$nick strip_tags($comentario);
$comentario stripslashes($_POST["comentario"]);
$comentario strip_tags($comentario);
  #8 (permalink)  
Antiguo 06/01/2011, 11:06
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Respuesta: [APORTE] Sistema de comentarios para tu web

Cita:
Iniciado por Arcana Ver Mensaje
mmm es cierto, pero para los principiantes esta bien para empezar, tambien podriamos mejorar la seguridad un poco con strip tag

Código PHP:
<?
$nick 
stripslashes($_POST["nick"]);
$nick strip_tags($comentario);
$comentario stripslashes($_POST["comentario"]);
$comentario strip_tags($comentario);
Todo lo contrario, a un prinicipiante no le puedes dar cosas mal hechas.
__________________
Drupal Argentina
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:02.