Crear un sistema de comentarios es más facil de lo que podemos pensar en un principio, necesitaremos guardar muy pocos datos con el nombre el email y el texto del comentario nos será suficiente.
Un ejemplo es el que os pongo a continuación donde creariamos en musql una tabla con los campos id, idarticuloasociado, nombre, email, texto,activo:
CREATE TABLE IF NOT EXISTS `prefijo_comentarios` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `idarticuloasociado` INT(10) UNSIGNED NOT NULL, `nombre` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL, `email` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL, `texto` text COLLATE utf8_unicode_ci NOT NULL, `activo` tinyint(1) NOT NULL, PRIMARY KEY (`id`), KEY `idartista` (`idartista`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=0 ; |
No debemos olvidarnos de poner idarticuloasociado como clave foranea del artículo donde se comente:
ALTER TABLE `comentarios` ADD CONSTRAINT `prefijo_comentarios_1` FOREIGN KEY (`idarticuloasociado`) REFERENCES `prefijo_articulo` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; |
Ahora las dos funciones que usaremos en PHP para moderar los comentarios son en primer lugar:
function enviarcomentario($mysqli,$nombre,$email,$texto,$articuloid) { if (!ereg("^([a-zA-Z0-9._]+)@([a-zA-Z0-9.-]+).([a-zA-Z]{2,4})$",$email)){ return 'Email incorrecto'; } else { $envio = $mysqli->query("INSERT INTO prefijo_comentarios (`id`, `idartista`, `nombre`, `email`, `texto`, `activo`) VALUES (NULL, '$articuloid', '$nombre', '$email', '$texto','0');"); $subject = "Comentario"; $mensaje = "--------------------------------------------------- \n"; $mensaje.= " Comentario \n"; $mensaje.= "--------------------------------------------------- \n"; $mensaje.= "NOMBRE: ".$nombre."\n"; $mensaje.= "EMAIL: ".$email."\n"; $mensaje.= "FECHA: ".date("d/m/Y")." a las ".date("h:i:s a")."\n"; $mensaje.= "IP: ".$_SERVER['REMOTE_ADDR']."\n\n"; $mensaje.= "--------------------------------------------------- \n\n"; $mensaje.= $texto."\n\n"; $mensaje.= "--------------------------------------------------- \n"; $mensaje.= "Enviado desde http://conocimiento.invbit.com \n"; $mensaje.= "Activar: http://www.midominio.com/moderacomentario.php?accion=activar&id=xx \n"; $mensaje.= "Eliminar: http://www.midominio.com/moderacomentario.php?accion=eliminar&id=xx \n"; $headers = "From: ".$email."\r\n"; if (mail('moderador@midominio.com', $subject, $mensaje, $headers)) { return 'Se ha guardado pero no se ha podido avisar al moderador de su envio.'; } else { return 'Enviado correctamente y esperando moderación.'; } } } |
Aquí lo que realizamos es introducir las variables que recojemos en el formulario HTML que tengamos en la página web para posteriormente guardarlo en la base de datos y enviar un email al moderador que se va formando en la variable $mensaje con el resto de valores recogidos.
Finalmente para activar o rechazar el comentario usaremos la función:
function moderarcomentario($mysqli,$idcomentario,$accion) { if ($accion=='activar') { $envio = $mysqli->query("UPDATE prefijo_comentarios SET activo='1' WHERE id = '$idcomentario';"); } elseif($accion=='eliminar') { $envio = $mysqli->query("DELETE FROM prefijo_comentarios WHERE id = '$idcomentario';"); } } |
Es recomendable que esta función este protegida por usuario y contraseña pro lo que lo propio es que se ponga dentro del panel de administración de la página web.