¡No Quiero Programar! PHP, CodeIgniter y otros frameworks!

25feb/113

Creando nuestro Foro (Cuarta Parte): Los posts

Bueno, ahora la parte mas importante, tenemos que mostrar los posts, la idea es la misma que en los tutoriales anteriores. Primero de todo necesitaremos una "ruta" arriba de todo que nos indique el nombre del tema, así como la categoría de la que deriva, importante para que los usuarios no pierdan la pista de dónde están (obviamente serán links para volver atrás).

Pero vayamos por partes, primero de todo nueva función en el controller, que manejara los temas, al igual que lo hacía con las categorías:

		function tema($id = 0)
		{
			if((int)$id< =0)
			{
				echo "Error, no existe una tema con esta id.";
			}
			else
			{
				$this->load->model("foros_model", "foros");
				$this->load->model("usuarios_model", "usuarios");							

				$vars['query'] = $this->foros->getPosts($id);
				$this->load->view("header");
				$this->load->view("foros/tema", $vars);
				$this->load->view("footer");
			}
		}

Ahora pasaremos al view, que tiene bastante chicha:

< ?php
	echo '<h2><a href="index.php/foros/index">Foros</a> &raquo; <a href="index.php/foros/categoria/'.$this->foros->getPostsTemaParam((int)$this->uri->segment(3), "cat_id").'">'.$this->foros->getNombreCategoria($this->foros->getPostsTemaParam((int)$this->uri->segment(3), "cat_id")).'</a>: "'.$this->foros->getPostsTemaParam((int)$this->uri->segment(3), "titulo").'"';

	if($query->num_rows() > 0)
	{
		foreach($query->result() as $row)
		{
			echo '<h4>'.$this->usuarios->getName($row->usuario_id).' dice:</h4>';
			echo '<p>'.$row->cuerpo.'</p>';
		}
	}
	else
	{
		echo '<p>No hay ninguna tema creado</p>';
	}
?>

La primera linea, que es muy larga es para lo que os comentaba al principio. Como véis hago uso repetidamente de una función que he creado en el model, que nos dará toda la información que queramos del tema (titulo, id, categoría a la que pertenece).

Como veis la función es muy simple, jugamos con los parámetros que nos pasan y hacemos que la función sea genérica para nuestros propósitos, así la podemos reutilizar sin necesidad de crear una función especifica para cada cosa.

		function getPosts($tema_id = 0)
		{
			$this->db->where("tema_id", $tema_id);
			$this->db->order_by("id", "ASC");
			$q = $this->db->get("forum_posts");
			return $q;
		}

		function getPostsTemaParam($id, $param)
		{
			$this->db->where("id", $id);
			$this->db->select($param);
			$q = $this->db->get("forum_temas");
			$r = $q->row_array();
			return $r[$param];
		}

Y bueno el trabajo está casi listo, esto ya tiene pinta de foro (cutre y sin estilos, pero eso es lo de menos ahora mismo). Lo que haría falta tanto en temas como en posts es un botón que nos lleve a un formulario para poder crear nuevos temas y nuevos posts. Pero eso es muy sencillo y seguro que todos sabréis hacerlo me imagino, ya que simplemente se trata de insertar información a la base de datos. Esto ya lo hemos visto en un tutorial anterior: Gestor de noticias.

También comentar que para un foro, obviamente necesitáis un sistema de usuarios, así que echadle un vistazo al que ya hicimos hace tiempo: Sistema de Usuarios.

La cosa ha quedado algo así:

----------

Como quedó el foro

----------

Cualquier duda que tengáis podéis dejar un comentario o pasaros por el foro, quizá creéis que debería seguir el tutorial con la parte de añadir comentarios o tenéis alguna sugerencia para algún tema nuevo que os gustaría que hablase.

¿Te gustó este artículo?

¡Suscríbete a nuestro feed RSS!

Comentarios (3) Trackbacks (0)
  1. Hola. Estoy iniciándome en esto de la programación en php y déjame decirte que tu blog es perfecto para aprender. Muchas gracias por los talleres que has posteado.

    Ahora unas preguntas. ¿Utilizas algún ide para php? ¿Cual me recomiendas?

  2. He probado varios, pero soy muy conservador, y me quedo con el Dreamweaver del CS5, basicamente por el tema de FTP que ya me he acostumbrado.

  3. Hola Lagarto. Muchas gracias por contestar.

    Me recomendaron Netbeans así que lo probare ;). Yo soy programador .net y la verdad es que encontrar un buen ide al nivel de visual studio es difícil pero supongo que mucho es de acostumbrarse a la forma de trabajo.

    Saludos.


Leave a comment

(required)

Aún no hay trackbacks.