¡No Quiero Programar! Programación web, CodeIgniter, Symfony y mucho mas

26ago/114

Migrando de MySQL a Oracle para PHP (problemas!)

Bueno, hacía tiempo que no escribía por aquí, la verdad es que me cuesta mantener un ritmo constante, puesto que ahora que tengo un trabajo fijo (bien!?) a veces vuelvo a casa y lo último que me apetece es seguir escribiendo sobre programación, pero que os voy a contar ¿no?

En fin, volviendo al tema importante, hace unos días nos propusieron actualizar una aplicación hecha enteramente en PHP (nativo, sin ningún framework), para que soportase oracle. Bien la cosa no parecía difícil, porque esa aplicación, tenía una librería con las funciones de MySQL, por lo que sería tan fácil como duplicar esa librería y substituir las funciones por las de Oracle. Después de ver lo que había, decidimos usar la OCI8 de PHP (documentación).

Bien, este artículo no es para haceros un tutorial sobre como migrar de MySQL a Oracle, pero si que quería comentar algunos de los problemas que nos hemos ido encontrando, tanto a nivel de funciones en PHP como al migrar con SQL de una a la otra. Y ojo! Yo tuve que aprender Oracle a marchas forzadas, por lo que me considero un usuario de este gestor totalmente novato, seguramente los errores expuestos a continuación se pueden solventar de una manera quizá mas compleja y profesional, pero al menos os daré un punto de partida si estáis en los mismos problemas que yo.

Para empezar, la migración la hicimos "automaticamente" mediante SQL Developer (enlace) y estos fueron algunos de los problemas y consideraciones que nos encontramos:

1) los campos TEXT de MySQL pasan a ser objetos LOB de Oracle, por lo que a posteriori, será diferente tratarlos, ya que las consultas no nos devolverán una "string", sino que te devuelven un objeto OCILOB (documentación), que para leerlo se tendrá que hacer algo así como:

//$cad sería el valor del campo de la base de datos tipo CLOB
$cad = (string)$blob->read($blob->size());	
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.

8feb/113

Formulario de contacto (Primera Parte): Código básico

Bueno tal y comenté, hace días abrí el foro para que todos los usuarios con dudas y sugerencias pudieran participar activamente en el blog. Ayer el usuario jarruego me comentó que podría hacer un pequeño tutorial de cómo hacer un modulo que es básico y común en la mayoría de webs: un formulario de contacto. Nos servirá para introducir a aquellos que sean nuevos en esto con un sencillo ejemplo.

Para esta pequeña aplicación utilizaré la última versión de CodeIgniter (que hay por el momento) que es la 2.0.0.


Un formulario de contacto nos ayudará a que cualquier persona interesada en nuestra web, ya sea un negocio, portafolio o cualquier otra cosa. Se puede ampliar tanto como queráis pero como esto es un tutorial haremos los campos mas básicos: nombre, email, mensaje.

Voy a dividir este tutorial en 2 o quizá 3 posta, empezaré con el código básico, tanto HTML como PHP (en CodeIgniter). Luego seguiré con la libreria de validación para poder comprobar que han entrado los campos correctamente. Acabaré usando la librería para mandar emails fácilmente, así nos llegará al correo este formulario básico de contacto en CodeIgniter.

Primero de todo empezaremos creando el código HTML para el formulario. Usaré etiquetas que no se suelen usar pero que deberíais hacerlo, como fieldset, legend y label, eso ayudará a la visibilidad y usabilidad del mismo. Cabe decir que no voy a "diseñar", así que lo dejaré tal cual salga aunque todos sabemos que el html sin css es feo, pero ahora lo que nos interesa es el código php.

8jun/091

Usando CodeIgniter para crear aplicaciones en Facebook

Desde SentidoWeb, me entero de que se pueden crear aplicaciones de Facebook utilizando el framework CodeIgniter.

Nos encontramos 4 links con tutoriales bastantes bien explicados (en ingles) de como aprender a usarlo. Por lo que he podido ver básicamente es añadir una librería y configurarla con los 4 parámetros que nos da Facebook, por todo lo demás no parece que haya muchas mas complicaciones.

Si puedo intentaré escribir algún articulo al respecto.

Etiquetado con: , , 1 Comentario
27dic/0810

Empezamos con CakePHP

 

Bueno creo que ya van bastantes artículos sobre CodeIgniter, al menos -creo yo- para dar una base bastante buena a gente que empiece con él para que se pueda desenvolver en aplicaciones complejas. No es que me haya cansado o algo parecido, pero por razones de trabajo ahora tengo que "aprender" a usar otro framework de PHP, en este caso el agraciado es CakePHP.

En un primer vistazo puedo ver como tiene cosas muy parecidas a CodeIgniter (claro los dos son frameworks que siguen el modelo MVC) pero este es mucho mas estricto en ese tema.

Así que he pensado, porque no compartir con los lectores mi camino de aprendizaje de este nuevo framework, porque a veces es la mejor manera de aprender, con alguien que mas o menos esta a tu mismo nivel y que tiene los mismo problemas o dificultados a la hora de enfrentarse a este framework.

Por lo que de ahora en adelante creo que intentare focalizar algo mas en CakePHP, que la verdad que tiene mas "tela" que CI y es bueno saber un poco de todo para no encontrarte sorpresa en un futuro ¿no?

 

 

Enlaces: CakePHP

30jun/089

Gestor de noticias (Sexta parte): Crear un buscador

Aprovechando la aplicación que estamos creando del Gestor de Noticias, voy a intentar satisfacer algunas peticiones de algunos usuarios que me preguntan cómo hacer un buscador en CodeIgniter (aunque en PHP es lo mismo ya que para esto apenas uso nada de CodeIgniter).

Antes de empezar la explicación aclarar que lo que lo que estoy haciendo es un buscador muy simple y funcional, el hacer un buscador tiene muchos caminos y complicaciones extras pero no entraré en ello, al menos hoy, así que si estáis buscando cómo hacer un buscador completo y complejo este no es vuestro articulo, aquí vamos a tratarlo desde un punto de vista de iniciación.

Primero de todo necesitaremos crear unos índices FULLTEXT en nuestra base de datos para que podamos realizar bien la búsqueda con la sintaxis MATCH...AGAINST, para ello lo haremos con este código SQL:

ALTER TABLE `noticias` ADD FULLTEXT(`titulo`, `cuerpo`);