Creando nuestro Foro (Segunda parte): Las categorías
Bueno ha llegado el momento de ponerse a programar en CodeIgniter, pues ya tenemos las bases de datos creadas. Para empezar pondremos algunos valores en la base de datos, en la tabla de categorías, por ejemplo estas:

Os podéis fijar, tal y como os comenté en el post anterior como funciona el tema del "padre", simplemente hace referencia a la ID a la cual pertenece. En este caso tenemos la categoría padre (definida por padre=0) "General" y sus hijos son "Noticias" y "Off-topic", de todas maneras luego lo veréis mas claro.
Ahora necesitaremos las 3 partes fundamentales del modelo MVC que son: la vista, el controlador y el modelo, asi que lo vamos a crear.
- El controlador: controllers/foros.php
- El modelo: models/foros_models.php
- Las vistas irán dentro de la carpeta views/foros, y crearemos index.php
Una vez tenemos creados estos 3 archivos empezaremos a hilar un poco todo para empezar a mostrar las categorías. Empezaremos por el modelo, es el que nos ayudara a comunicarnos con la base de datos, el código será este de momento:
< ?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Foros extends CI_Controller
{
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->model("foros_model", "foros");
$vars['query'] = $this->foros->getCategorias();
$this->load->view("header");
$this->load->view("foros/index", $vars);
$this->load->view("footer");
}
}
?>
Si os fijáis básicamente cree una función que consulta las categorías, según la id de "padre" que especifiquemos. Es decir sin a la función le pasamos un 0 (o nada en su defecto) nos devolverá las categorías padre. En nuestro ejemplo sería "General" y "Temas". Si le pasamos la id=1 nos devolvería las subcategorias de "General" que son "Noticias" y "Off-topic". ¿Fácil no?
Ahora pasaremos al controlador, que se encargara de coordinarlo todo. El código de momento será este:
< ?php
class Foros_model extends CI_Model
{
function __construct()
{
parent::__construct();
}
function getCategorias($padre = 0)
{
$this->db->where("padre", $padre);
$q = $this->db->get('forum_cat');
return $q;
}
}
?>
Primero de todo, cargamos el modelo, luego cargamos las vistas (header y footer, con la cabecera y el pie de la página; es una buena practica para ahorrarnos repetir código). Le pasaremos el resultado de la función del model (que nos devuelve la consulta) hacía la vista, donde la trataremos y le daremos forma.
La vista tendrá este código:
< ?php
if($query->num_rows() > 0)
{
foreach($query->result() as $row)
{
echo '<h2>'.$row->nombre.'</h2>';
$sub = $this->foros->getCategorias($row->id);
foreach($sub->result() as $row2)
{
echo '<h4><a href="index.php/foros/categoria/'.$row2->id.'">'.$row2->nombre.'</a></h4>';
}
}
}
else
{
echo '<p>No hay ninguna categoría creada</p>';
}
?>
Esto lo haremos en 3 pasos. Primero comprobamos que existe categorías, sino mostraremos un mensaje de error. En caso afirmativo cargaremos las categorías padre, que es la que nos venían del resultado anterior, y luego por cada una de ellas, buscaremos a sus hijos, que simplemente será buscar aquellas categorías que sus id corresponda con el padre. Nos quedará algo así:

Fijaros que ya he puesto que cada categoría (hija) tenga ya un enlace para acceder a los posts de cata una de ellas (en los siguientes tutoriales). Obviamente esto es muy básico, que se puede ordenar con las típicas tablas que nos muestran el total de post, la última respuesta y todo eso, pero al fin y al cabo son detalles y no entraremos de momento.
¿Te gustó este artículo?
Aún no hay trackbacks.

25 agosto, 2011 - 04:07
me da problemas en el modelo y controlador me dice k el modelo no fue encontrado @.@
25 agosto, 2011 - 04:26
Ya me funciono
agrege esto al afuncion del modelo
$this->load->database();
y al controlador le cambie
$this->load->model(“foros_models”, “foros”);
esa linea (Le agrege una s) y ya funciono todo
23 enero, 2012 - 05:06
error revolviste primero colocaste el controlador y luego el modelo