Tutoriales PHP MYSQL Sistema de noticias. Comentarios

\n"; } } } lecturas();

          


Sistema de noticias. Comentarios

      

Autor: Alejandro Suazo

Para finalizar nuestro sistema de noticias daremos la posibilidad a los usuarios de participar con sus comentarios.

Recordemos que en la primera parte creamos un link llamado comentarios y su enlace tenía esta estructura <a href="/articulos/tutoriales/php/ver_id_1.html"> llamando a la página ver.php y en donde el id cambia su número dependiendo de la noticia que queremos visualizar. Con esto en claro, es hora de ver el código de ver.php

Nota: Una vez más obviaremos la estructura html y pondremos el código PHP:

  1. //creamos la tabla de los comentarios
  2. CREATE TABLE comentarios(
  3. id int(4) NOT NULL,
  4. nick varchar(255),
  5. email varchar(255),
  6. comentario blob, KEY(id))
  1. <?
  2. //recibimos la variable id enviada en el enlace por GET
  3. $id=$_GET[id];
  4. //conectamos a la base
  5. $connect=mysql_connect("servidor","nombre de la base","pass");
  6. //Seleccionamos la base
  7. mysql_select_db("nombre de la base",$connect);
  8. //hacemos las consultas
  9. $result=mysql_query("select * from noticias where id_noticia='$id'",$connect);
  10. //Una vez seleccionado el registro, mostramos la noticia completamente
  11. while($row=mysql_fetch_array($result)) {
  12. echo "<h2>".$row[titulo]."</h2><br>
  13. <p>".$row[articulo]."</p><br>
  14. <div>".$row[autor]." | ".$row[fecha]." | ".$row[categoria]." |
  15. <a href=\"ver.php?id=".$row[id]."\">comentarios()</a> |
  16. <a href=\"editar.php?id=".$row[id]."\">editar</a></div>";
  17. }
  18. ?>

La manera de mostrar la noticia completa es idéntica que en el script del index.php visto en la primera parte. Ahora haremos las modificaciones para mostrar los comentarios.

  1. <?
  2. //recibimos la variable id enviada en el enlace por GET
  3. $id=$_GET[id];
  4. //conectamos a la base
  5. $connect=mysql_connect("servidor","nombre de la base","pass");
  6. //Seleccionamos la base
  7. mysql_select_db("nombre de la base",$connect);
  8. //hacemos las consultas
  9. $result=mysql_query("select * from noticias where id_noticia='$id'",$connect);
  10. //Una vez seleccionado el registro, mostramos la noticia completamente
  11. while($row=mysql_fetch_array($result)) {
  12. result2=mysql_query("select * from comentarios where id_noticia='$id'",$connect);
  13. $totalcomentarios=mysql_num_rows($result2);
  14. echo "<h2>".$row[titulo]."</h2><br>
  15. <p>".$row[articulo]."</p><br>
  16. <div>".$row[autor]." | ".$row[fecha]." | ".$row[categoria]." |
  17. <a href=\"ver.php?id=".$row[id]."\">comentarios(".$totalcomentarios.")</a> |
  18. <a href=\"editar.php?id=".$row[id]."\">editar</a></div>";
  19. }
  20. ?>

Acá agregamos unas líneas al bucle while solamente para saber la cantidad de cometarios que pertenecen a este (1, 2, 0 la cantidad x de comentarios por artículo) y lo almacenamos en la variable $totalcomentarios

Ahora veremos el código para seleccionar los comentarios y visualizarlos.

  1. <?
  2. echo "<h2>Comentarios:</h2><br>";
  3. //hago el llamado a la base
  4. $result3=mysql_query("select * from comentarios where id_noticia='$id'",$connect);
  5. //Bucle while para visualizarlos
  6. while(rows=mysql_fetch_array($result3) {
  7. echo "<p>".$rows[comentario]."</p>
  8. <div>".$rows[nick]." | ".$rows[email]."</div>";
  9. ?>

Mostramos los comentarios y ahora pondremos un formulario en donde puedan escribirlos.

  1. <form action="/articulos/tutoriales/php/editacomentarios.html" method="post">
  2. <input type="hidden" name="id" value="<? echo $id; ?>">
  3. <br>Nick:<br>
  4. <input type="text" name="nick">
  5. <br>E-Mail:<br>
  6. <input type="text" name="email">
  7. <br>Escriba el comentario<br>
  8. <textarea name="comentario" cols="50" rows="10"></textarea>
  9. <br><input type="submit" value="Enviar comentario"><br>
  10. </form>

Acá el formulario enviará las variables al script editacomentarios.php el cual las procesará y llenará la tabla comentarios.

Nota: Nótese que se envia la variable $id en un campo oculto, esto servirá para saber a qué noticia pertenece dicho comentario.

  1. <?
  2. //editacomentarios.php
  3. //recibimos las variables enviadas por el formulario
  4. $id=$_POST[id];
  5. $nick=$_POST[nick];
  6. $email=$_POST[email];
  7. $comentario=$_POST[comentario];
  8. //conectamos a la base
  9. $connect=mysql_connect("servidor","nombre de la base","pass");
  10. //Seleccionamos la base
  11. mysql_select_db("nombre de la base",$connect);
  12. //Ingresamos los comentarios a su tabla
  13. mysql_query("insert into comentarios(id,nick,email,comentario)
  14. values('$id','$nick','$email','$comentario'",$connect);
  15. header("location: ver.php?id='.$id.'");
  16. ?>

Con los comentarios insertados en su tabla queda listo y finalizado el sistema de noticias. Disfrútenlo.

Conclusiones

Si bien este modesto sistema de noticias debería funcionar a la perfección y prestar una funcionalidad digna, es importante señalar que puede mejorar mucho, incluyéndole por ejemplo: Fechas en español, CSS sin dudas, algún paginador y sentencia limit para visualizar cantidades X de artículos por páginas, directivas de seguridad como sistema de auntentificación, restringir etiquetas html en los comentarios, etc. Eso ya queda en sus manos y estoy seguro que lo pueden mejorar mucho.

En cuanto al autor puedo decirles que soy un aprendíz de PHP y leyéndo tutoriales y mucho google logré terminar mi blog y crear este pequeño artículo, que debido a mi calidad de aprendíz puede contener muchos errores, aunque no mayores.

Scour Design ™ Todos los Derechos Reservados © Carlos Carmona Xhtml 1.1 Strict Válido!CSS Nivel 2 Válido! Nivel Triple-A de Conformidad con las Directrices de Accesibilidad Web (WAI)