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

20feb/113

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:

categorías en la base de datos

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.

  1. El controlador: controllers/foros.php
  2. El modelo: models/foros_models.php
  3. 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:

17feb/112

Creando nuestro Foro (Primera parte): La base de datos

Bueno abro este nuevo taller, para crear un foro en CodeIgniter. Obviamente no será tan completo como aquellos que circulan por Internet (phpBB y sucedaneos), pero si será una sencilla base para que por un lado aprendáis a usar CodeIgniter y por otro lado podáis ampliarlo para adaptarlo a vuestro gusto.

Como siempre empezaremos poco a poco y con buena letra. Lo primero será crear las tablas necesarias para la base de datos. Mantendremos el asunto sencillo y empezaremos con la estructura mas básica de todas.

Vamos a las categorías que tendrá el foro, ahora mismo se me ocurren estos campos

  • id
  • nombre
  • padre

Simple y sencillo. Padre simplemente hará referencia de si es una categoría que dependa de otras o es una principal. Este es el código SQL:

CREATE TABLE IF NOT EXISTS `forum_cat` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nombre` varchar(100) NOT NULL,
  `padre` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Luego la tabla de posts quedaría con estos campos:

  • id
  • titulo
  • cuerpo
  • fecha
  • usuario_id
  • padre

Tampoco descarto que a mitad de la programación de este foro me de cuenta que falta algún campo, pues tened en cuenta que voy escribiendo esto a medida que lo voy a ir programando. Así quedaría el código SQL:

CREATE TABLE IF NOT EXISTS `forum_posts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titulo` varchar(100) NOT NULL,
  `cuerpo` text NOT NULL,
  `fecha` datetime NOT NULL,
  `usuario_id` int(11) NOT NULL,
  `padre` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Y bueno para empezar creo que es todo lo que nos hará falta. Si creéis que me puedo dejar algún campo básico para el funcionamiento, comentad o pasaros por el foro y lo discutimos ;)

El próximo post mas y mejor.