Comunidad PHPeros
Lenguajes => PHP => Tutoriales PHP => Mensaje iniciado por: naveda en 23 de Diciembre de 2006, 17:00:36 pm
-
Bueno Amigos!!!
Ahora me dispongo a mostraros como añadir un sistema de comentarios al Sistema de Noticias que creamos anteriormente :P
Las modificaciones para el anterior sistema son muy reducidas, solamente hay que modificar dos lineas del noticias.php y el sistema estará listo para ser usado :P
Bien, comencemos con la exposición del Add-On de Comentarios.
Antes de nada será necesario crear una nueva tabla en la base de datos, para ello tenemos este codigo:
create table `comentarios`(
id int primary key auto_increment,
ref int not null,
autor varchar(255) not null,
fecha varchar(255) not null,
comentario text not null
);
Con este código crearemos una tabla llamada comentarios, compuesta por 5 columnas (id, ref, autor, fecha y comentario).
Ahora proseguiremos con el codigo para efectuar el envio y muestra de comentarios, para ello crearemos una archivo llamado, por ejemplo, comentarios.php en el cual pondremos el siguiente codigo:
<?PHP
if (isset($_GET['n']) && is_numeric($_GET['n'])) {
if (isset($_POST['comentar'])) {
if (isset($_POST['comentario']) && !empty($_POST['comentario'])) {
$comentario = htmlentities($_POST['comentario']);
$query = "INSERT INTO `comentarios` (ref,autor,fecha,comentario) ";
$query.= "values ('".$_GET['n']."','Autor','".time()."','".$comentario."')";
$query = mysql_query($query);
if (!$query) {
echo '<script>alert("ERROR(*)\nEl comentario no se ha podido enviar.");</script>';
}
} else {
echo '<script>alert("ERROR(*)\nEl comentario esta vacio, escribelo correctamente.");</script>';
}
}
//Si no ha comentado se muestra la lista de comentarios referentes a $_GET['n']
$query = mysql_query("SELECT * FROM `comentarios` WHERE ref = '".$_GET['n']."'");
if (mysql_num_rows($query)) {
//Se muestran los comentarios
echo "Comentarios Totales: ".mysql_num_rows($query);
while ($comentarios = mysql_fetch_array($query)) {
echo '<table>
<tr><td>'.filtro_palabras(bbcode($comentarios['comentario'])).'</td></tr>
<tr><td>Enviado por '.$comentarios['autor'].' el '.date("d/m/Y", $comentarios['fecha']).'</td></tr>
</table><hr>';
}
@mysql_free_result($comentarios);
} else {
//No hay ningun comentario
echo "No hay comentarios";
}
echo '<form action="noticias.php?n='.$_GET['n'].'" method="POST">
<textarea name="comentario"></textarea><br>
<input value="Comentar" type="submit" name="comentar">
</form>';
}
?>
Ahora que tenemos la tabla en la base de datos para guardar los comentarios y que tenemos el codigo que extrae, muestra y envia comentarios, llega la modificación final.
La ultima modificación será cambiar algunas lineas del archivo noticias.php creado previamente en la 1ª Parte del Tutorial, cambiaremos las lineas y dejaremos algo como esto:
<?PHP
/* ANTES DE TODO EL CODIGO HAY QUE CONECTAR A LA BASE DE DATOS
include("conectar.php"); <--- Esto es un ejemplo de como conectar...*/
include("funciones.php");
$query = @mysql_query("SELECT * FROM `noticias` ORDER BY `id` DESC"); //Se extraen las noticias en orden reciente
if (@mysql_num_rows($query)) { // Se comprueba si hay alguna noticia publicada
while ($noticia = @mysql_fetch_array($query)) { //Se hace un bucle para mostrar cada noticia una a una
echo '<table border="0" width="100%">
<tr><td align="center">'.filtro_palabras(bbcode($noticia['titulo'])).'</td></tr>
<tr><td>'.filtro_palabras(bbcode($noticia['noticia'])).'</td></tr>
<tr><td>Enviada por '.$noticia['autor'].' || Fecha: '.$noticia['fecha'].' ||
<a href="noticias.php?n='.$noticia['id'].'">Ver Comentarios</a> </td></tr>
</table><hr>';
include("comentarios.php");
}
} else {
echo "No hay ninguna noticia publicada";
}
@mysql_free_result($noticia); //Se borran los datos usados
?>
Como veis solamente he cambiados dos cositas, he creado un link con el numero de la noticia y he incluido el archivo de comentarios para que al pulsar el link se vean los comentarios correspondientes a esa noticia y se muestre el formulario para enviar comentarios :P
-
¿No os ha servido este tutorial? xD
-
yo aun no e llegado si en el 3 e posteado que no se muestran los mensajes i nadie a ayudado xd
-
No es por decir, el tuto esta muy bien, pero en el titulo pone sistema de noticias simple, que aunque despues ponga que es comentarios, a la gente le puede echar para atras ya queya hay uno de noticias
-
¿Pero de qué hablas?
Este tutorial es para añadirle comentarios a las noticias. Que cada usuario pueda mostrar su opinion sobre la noticia. No es un sistema de comentarios aparte, va con las noticias ...
Saludos ^^
-
ya lo se pero como voi agregar a las noticias comentarios si el sistema de noticias no va -.-' por eso e dixo que en el tema dos o tutorial 2 e dixo que no me iva el sistema..
-
Está muy bien el tutorial, igual deberías hacer uno para paginar la noticias.
-
ya lo se pero como voi agregar a las noticias comentarios si el sistema de noticias no va -.-' por eso e dixo que en el tema dos o tutorial 2 e dixo que no me iva el sistema..
Mi post iba para Keon xD
-
ya lo se pero como voi agregar a las noticias comentarios si el sistema de noticias no va -.-' por eso e dixo que en el tema dos o tutorial 2 e dixo que no me iva el sistema..
Mi post iba para Keon xD
a sorry :P
-
:o si a servido si ya lo e consegido todo gracias naveda :P pero llego yo i digo.. como se pueden borrar los comentarios? que se podria haceR? :P
-
Tendrías que modificar la parte en la que se muestran los comentarios y mostrar alguna opcion para borrarlos cuando la cookie de admin esta activa.. o añadir una opcion en el panel para mostrar los comentarios y borrarlos desde allí, todo está a alcance de tu imaginación :D
-
jaja ya me e echo un cacao aver se lo que quieres decir pero...mi imaginación llega.. pero no sabe hacerla
xd
naveda podrias explicarlo a mas de uno le interesaria..
-
Si lo pide más gente lo haré ;) Por ahora no quiero meterle mas tiempo a lo que en principio iba a ser un sistema de noticias SIMPLE... xD
-
ok.. anque por msn raken ya me esta explikando y lo hemos hecho pero no que la borre el admin sino cualquiera mas adelante cuando el tenga mas tiempo me ayudara a que solo la borre el admin ;)
-
Postea aquí el codigo ;) Para que los demás puedan verlo :D
-
yo creo que mejor lo hiziera raken ya que fue el, el que lo hizo y me ayudo ;)
-
Borralo desde la base de datos...
-
Drek si pides ayuda comprometete a compartir el codigo sino no pidas ayuda ;) Lo digo por:
yo creo que mejor lo hiziera raken ya que fue el, el que lo hizo y me ayudo
Solamente eso ;)
-
Hola;
Lo que estaría bien que pusierais, sería un código para paginar, es decir, que las notícias salgan de 5 en 5 por páginas...
Me interesa eso :D gracias
SAludos
-
yo el tema de la paginación de resultados lo tengo cruzado (no lo consigo hacer bien), por ello, normalmente utilizo una clase php para paginar resultados.
-
EX-CE-LEN-TE!!
Está súper!! Me ha servido muchisimo.. ahora.. ¿porque al enviar una noticia o un comentairo me dice "enviado por autor"? Emm y otra pregunta.. ¿Se puede ligar eso al sistema de usuarios de G2K, para no tener que escribir el nombre del que envía la noticia y que el sistema ponga automaticamente mi nick?
Saludos
-
si lo de enviado por autor es muy facil..
echo"Enviado por ".$autor."";
primero aprende un poquito mas de php, que si no sabes hacer lo de autor mucho menos lo de G2k a menos de que te lo hagan :/ (es una sugerencia)
-
Querida mara: Ya lo pude hacer ;) Yo solo
<?
$user = "$_COOKIE[usuario]";
$autor = "$user";
$titulo = $_POST[titulo];
$fecha = time();
$noticia = $_POST[contenido];
$conect = mysql_connect("mysql.webcindario.com","avatarvirtual","********");
mysql_select_db("avatarvirtual",$conect);
if (isset($_POST['publicar'])) {
mysql_query("INSERT INTO noticias (titulo,autor,noticia,fecha)
VALUES ('$titulo','$autor','$noticia','$fecha')", $conect);
echo"<SCRIPT LANGUAGE='javascript'> alert('La noticia se publicó con éxito.'); document.location=('../direccion.php');</script>";
}
?>
Sé feliz
-
Pero como hago para lod e enviado por... y que puedan poenr el nombre que quieran
-
Muy buen tutorial pero se puede unir a un minichat? osea que en los comentarios se vea la placa que tenga x usuario en el chat?
-
Muy buen tutorial pero se puede unir a un minichat? osea que en los comentarios se vea la placa que tenga x usuario en el chat?
Claro, todo es cuestión de saber combinar bases de datos y hacer simples consultas ;)
Saludos ^^
-
Después de seguir todos los pasos he conseguido hacer el sistema de noticias completo, pero al añadir los comentarios...solo me sale una noticia :S
<?php $query = @mysql_query("SELECT * FROM `noticias` ORDER BY `id` DESC"); //Se extraen las noticias en orden reciente
if (@mysql_num_rows($query)) { // Se comprueba si hay alguna noticia publicada
while ($noticia = @mysql_fetch_array($query)) { //Se hace un bucle para mostrar cada noticia una a una
$querys = mysql_query("SELECT * FROM `comentarios` WHERE ref = '".$_GET['n']."'");
echo '<div align="left"><strong>'.$noticia['titulo'].'</strong><br>
Fuente: <em><a href="http://www.'.$noticia['fuente'].'">'.$noticia['fuente'].'</a></em><br>
'.bbcode($noticia['noticia']).'<br>
Enviada por <em>'.$noticia['autor'].'</em> || Fecha: <em>'.$noticia['fecha'].'</em> || <em><a href="index.php?n='.$noticia['id'].'">Ver Comentarios ('.mysql_num_rows($querys).')</a></em></div><br>
<hr width="80%"><br>';
include("comentar.php");
//Se muestran los comentarios
}
?>
Obvio tengo el conectar y todas las cosas, pero aquí tiene que estar el fallo, pues hace un momento me funcionaba perfecto...
¿Qué falla?
Gracias.
-
Solo haces la consulta para seleccionar los comentarios pero no lo extraes.
-
No, pero los comentarios se sacan del include...esa consulta...creo que sobra xD porque era para ver el número de comentarios.
Ya lo logré arreglar, es que tenía mal escritas algunas cosas en el archivo de comentarios.php
-
Ah ok, si era los comentarios que tenian errores debiste poner el archivo que lo mostraba.
-
Es que pensé que era en el archivo de las noticias donde tenía el fallo, no pensé en los comentarios, pero vamos, ya se me arregló. Gracias igualmente.