¡Hola, mis alumnitos! ¿Como pasaron la semana? En la clase de hoy vamos a ver como los usuarios registrados pueden dejar comentarios en nuestras noticias.
Para ello vamos a tener que crear primero la pagina donde se vera la noticia completa, la dificultad que tendrá esto es que vamos a tener que hacer un join con dos tablas, la de categorÃas y la de usuarios.
Como en todas nuestras clases del blog primero voy a mostrar el código y después lo voy a pasar a explicar.
-
<?
-
-
// iniciamos session
-
-
// archivos necesarios
-
require_once 'admin/config.php';
-
require_once 'admin/conexion.php';
-
require_once 'admin/esUsuario.php';
-
-
// obtengo puntero de conexion con la db
-
$dbConn = conectar();
-
-
// verificamos que este conectado el usuario
-
$arrUsuario = esUsuario( $_SESSION['usuario'], $_SESSION['password'], $dbConn );
-
}
-
-
-
-
// completamos la variable error si es necesario
-
-
// si no hay errores registramos al usuario
-
-
// inserto los datos de registro en la db
-
$query = "INSERT INTO `comentarios` (comentario, idUsuario, idNoticia) VALUES ('$comentario','$idUsuario','$idNoticia')";
-
-
die;
-
-
}
-
-
}
-
-
// traemos la noticia
-
$query = "SELECT noticias.idNoticia, noticias.titulo, noticias.copete, noticias.cuerpo, categorias.valor as categoria, usuarios.usuario FROM `noticias`
-
INNER JOIN `categorias` ON categorias.idCategoria = noticias.idCategoria
-
INNER JOIN `usuarios` ON usuarios.idUsuario = noticias.idUsuario
-
WHERE noticias.idNoticia = " . $_GET['idNoticia'] . " LIMIT 1";
-
-
?>
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml">
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-
<title>Blog Personal</title>
-
</head>
-
-
<body>
-
-
<h1>Blog Personal</h1>
-
-
<ul>
-
<li><a href="ingresar.php">Iniciar sesión</a></li>
-
<li><a href="registrar.php">Regístrate gratis</a></li>
-
</ul>
-
<? } else { ?>
-
<p>Bienvenido <?= $arrUsuario['usuario'] ?> - <a href="index.php?salir=true">Salir</a></p>
-
<? if ( $arrUsuario['tipo'] == 'admin' ) { ?>
-
<ul>
-
<li><a href="admin/index.php">Panel de administración</a></li>
-
</ul>
-
<? } ?>
-
<? } ?>
-
-
-
<div>
-
-
<form action="vernoticia.php?idNoticia=<?php echo $_GET['idNoticia']; ?>" method="post">
-
<p>
-
<label for="comentario">Dejar un comentario</label><br />
-
<textarea rows="3" cols="50" name="comentario"></textarea>
-
</p>
-
<p>
-
<input name="submit" type="submit" value="Enviar" />
-
</p>
-
</form>
-
-
<?php } else { ?>
-
<p>Para dejar un comentario hay que ser un usuario registrado. <a href="registrar.php">Registrar</a> o <a href="ingresar.php">Ingresar</a></p>
-
<?php } ?>
-
</div>
-
</body>
-
</html>
¿Que cosas nuevas tenemos acá?
Con lo primero que nos encontramos es con una verificación si se envió un post, esto es si nos dejaron un comentario, para guardarlo en la base de datos. Por el momento estos comentarios no los vamos a mostrar, ya que los tiene que revisar primero un administrador, para evitar que nos dejen spam, insultos u otras cosas desagradables :).
Dentro del submit verificamos 3 cosas, que contenga texto, que sea de un usuario registrado y que este la id de noticia a la que hace referencia el comentario. FÃjense que para esta ultima el valor de la id la estamos pasando por GET, no por POST.
Por otro lado, como no va a hacer falta mostrar el error a los usuarios en caso de que falle, simplemente dejamos la variable de error con un TRUE si es que existe. Recuerden que en las clases anteriores le ponÃamos un STRING con el error a mostrar.
Bueno, si no tiene errores, hacemos el insert en la base de datos.
A continuación tenemos la consulta para traer la noticia, esta consulta es bastante más compleja que las que venÃamos usando, ya que hace dos JOINS, uno con la tabla de categorÃas y otro con la tabla de usuarios. De esta forma, en una sola consulta obtenemos el nombre de la categorÃa y el nombre de usuario. Recuerden que en la tabla de noticias solo guardábamos las id de ambos. Esto nos permite estar siempre actualizados en caso de que cambiemos el nombre de usuario o nombre de la categorÃa desde el panel de admin.
Por ultimo dentro de lo que seria el "template", osea la parte de html, vamos a tener un if que nos va a mostrar el formulario para dejar un comentario o nos va a mandar a registrarnos.
Bueno, eso es todo por hoy, la clase que viene veremos cómo mostrar el listado de comentarios aprobados por un admin en esta misma página, y el panel de admin para aprobar o borrarlos. Buena semana.
| << CLASE ANTERIOR | CLASE SIGUIENTE >> |








Martes, 18 de Noviembre de 2008 a las 02.54
Esta genial este curso, bueno en esta clase tengo una duda.
como se llama este archivo, sino estoy mal seria el noticias.php
admin/noticias.php
o me equivoco.
Gracias de antemano
Martes, 18 de Noviembre de 2008 a las 04.39
Gracias por ingresar la nueva clase de este taller ya estaba impaciente por leerla y estudiarla !!!
Miércoles, 3 de Diciembre de 2008 a las 13.35
Hola Juan, vernoticia.php es el archivo, perdon por no ponerlo.
Viernes, 30 de Enero de 2009 a las 22.19
oye una consulta y la tabla para conectarlo con la bd? disculpa xd si esta soy nuevo en esto ;D
Lunes, 2 de Febrero de 2009 a las 11.27
@michael burdock: hola, por favor lee todo el taller, esta todo bien explicado.
Miércoles, 18 de Febrero de 2009 a las 19.30
window.location="http://lemichack.es.tl";
Martes, 12 de Mayo de 2009 a las 15.45
y si se quisiera seleccionar solo determinadas noticias para llevar comentarios es decir, desde el administrador de las noticias decidir cual si llevara comentarios y cual no.
es posible esto???
Miércoles, 13 de Mayo de 2009 a las 12.44
@alex podes agregar una nueva columna en la tabla de noticias que sea un tinyint con 0 para permitir comentarios y con 1 para no permitirlos, que se cambie con un checkbox desde la carga de noticias, y a la hora de mostrar la noticia tambien traes el nuevo campo y en el template con un if mostras o no el formulario de comentarios.
Jueves, 28 de Mayo de 2009 a las 18.49
voy a probar tu script a ver si funciona
Lunes, 21 de Septiembre de 2009 a las 21.10
Muy buena la explicacion para el desarrollo, te consulto por el archivo vernoticia.php si lo tenes publicado o esta con otro nombre?? Gracias!!!
Martes, 22 de Septiembre de 2009 a las 14.15
no entendi la pregunta
Lunes, 5 de Octubre de 2009 a las 22.52
Buenas! Muy bueno tu taller me ayudó bastante, cómo puedo hacer para mostrar las noticias por categorias?
Por ejemplo: Pizzas, Empanadas
index.php?Categoria=Pizzas
y que muestre pizzas, con un isset? O algo asÃ?
Miércoles, 7 de Octubre de 2009 a las 13.55
@maximiliano nop, a la hora de hacer la consulta levantas la variable get y la agregas dentro del where para consultar.
Sábado, 24 de Octubre de 2009 a las 12.13
Primero felicitarte por el taller, me ha sido muy util.
Escribo aqui solo para explicar un problema con el que me topé y conseguà resolverlo.
En la linea 45 de este 'vernoticia.php' se crea una multiple consulta con INNER JOIN. Bien, de esta forma no conseguà hacerlo funcionar, en cambio me funciona perfectamente con LEFT JOIN.
Si a alguien más le ha ocurrido puede probarlo y si no es correcto del todo me corriges Justi.
Un saludo a todos y gracias.
Sábado, 6 de Febrero de 2010 a las 17.20
buen material
Martes, 23 de Febrero de 2010 a las 05.59
Excelente.
Habria alguna forma de hacer un codigo para filtrar las categorias y q no aparezcan todas juntas?
Lunes, 1 de Marzo de 2010 a las 11.37
@Sebastian hola, en la consulta que traes la consulta tenes que agregar en la clausula WHERE la categoria que queres traer, quedaria algo asi "SELECT * FROM noticias WHERE idCategoria = 2" por ejemplo.
Miércoles, 21 de Abril de 2010 a las 01.21
esta muy chida este blog
Domingo, 1 de Agosto de 2010 a las 20.22
Cojonudo!
Viernes, 22 de Octubre de 2010 a las 05.51
Excelente tutorial, mis felicitaciones.
Solo tengo un pequeño problema.
Me sale esto:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\sitio_alondra\blog\vernoticia.php on line 50
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\sitio_alondra\blog\vernoticia.php on line 60
Como hago para solucionarlo, ya probé con lo que dijo "Jordi" pero no me funciona.
Si alguien me puede ayudar se lo agradezco.
Domingo, 24 de Abril de 2011 a las 14.08
Hola yo he creado algunas paginas en html pero me siento estancada sin php, quiero aprender desde cero y necesito saber si tiene algun costo hacer consultas y como puedo empezar, espero su respuesta.
Domingo, 24 de Abril de 2011 a las 14.21
hola, ya encontre el inicio del curso y realmente esta muy detallado, pero como estay tan atrasada quisiera saber si hago preguntas en la primera parte aun tiene respuesta o debo hacerlas en el ultimo blog?
gracias