PlatesPHP: Sistema de plantillas para Codeigniter 3
PlatesPHP: Sistema de plantillas para Codeigniter 3

Para poder cargar contenido haciendo scroll con jQuery debemos controlar cuando el scroll llegue al final y en ese momento lanzar el evento necesario, esto lo haremos utilizando ajax y con el framework codeigniter, pero el que tenga conocimientos de php sabrá como llevarlo a cabo en sus proyectos sin mayor problemas, es muy sencillo como ahora vamos a ver.

Ver la demo

Creamos el proyecto

Nos vamos a la web de codeIgniter y nos descargamos la versión que hay disponible, la guardamos y la extraemos en nuestro directorio raíz, en mi caso C:\xampp\htdocs, una vez tengamos ya la carpeta con los archivos debemos cambiarle el nombre, le podemos poner scrollinfinito, sugiero que coloquen el mismo así será más sencillo seguir el tutorial.

La base de datos

Cargamos unos cuantos datos que nos servirán para el ejemplo

El archivo .htaccess

Ahora ya podemos acceder al proyecto desde aquí, sin el htaccess sería http://localhost/scrollinfinito/index.php.

Ahora ya veremos el mensaje de bienvenida de codeIgniter.

El archivo database.php

Ahora debemos dirigirnos a nuestro archivo database.php que está en la carpeta config y modificar el código para que quede así, siempre dependiendo de nuestros datos de acceso a la base de datos.

El archivo autoload.php

Ahora nos dirigimos al archivo autoload.php que está dentro de la carpeta config y en la línea 55 debemos modificar el código por éste.

De esta forma cargamos automáticamente la base de datos, y en la línea 67 modificamos por este otro.

Con el helper url tendremos disponible las urls amigables.

El archivo config.php

Ahora vamos a nuestra carpeta config y abrimos el archivo config.php, en la línea 17 colocaremos este código.

Con todo lo anterior ya estamos en disposición de empezar a programar la lógica de nuestra aplicación, empecemos con la vista donde tenemos la función y el evento del scroll de jQuery que hace la magia, veamos.

La vista scroll_view.php

Nos vamos a la carpeta views y dentro de ella creamos un archivo que llamaremos scroll_view.php, dentro colocamos el siguiente código que pasamos a explicar.
 

Como vemos recorremos los usuarios, y creamos la lógica que vamos a necesitar para el evento scroll con jQuery.
La función loadMore de jQuery hace una nueva petición al controlador scroll y obtiene los nuevos usuarios.

El controlador scroll.php

Nos vamos a la carpeta controllers y dentro creamos un nuevo archivo llamado scroll.php, dentro colocamos el siguiente código.

Como podemos ver en la función index pasamos el array respuesta que recogemos del modelo para pasarlo a la vista, a continuación tenemos la función loadMore que lo que hace es cargar más contenido cuando el scroll toque fondo mientras tengamos datos que mostrar, esto lo conseguimos gracias a la última id que hemos podido recoger con la función jQuery loadMore(), después mostramos los datos conforme van saliendo recorriendo el objeto $nuevos_datos y volvemos a conseguir la última id con el div con clase mostrar, espero que se entienda bien dentro de lo posible, ahora pasamos a crear el modelo que es muy sencillo.

El modelo scroll_model.php

Nos vamos a la carpeta models y dentro creamos un nuevo archivo llamado scroll_model.php, dentro colocamos el siguiente código.

Como podemos ver tenemos dos métodos, primera_carga nos devuelve los 6 últimos resultados de la tabla users ya que lo hacemos en orden descendete (el segundo parámetro pasado al método get es la cantidad de resultados que queremos que devuelva), por si acaso alguien no lo sabía.

El siguiente método es el que tiene más interés, primero vemos que como argumento tiene la variable último que como hemos dicho es la que hemos recogido con jQuery, después con where le decimos que nos retorne los que el campo id sea menor a la variable último, ordenamos descendentemente y pedimos 4 resultados, a continuación hacemos un return y de esta forma tan sencilla ya tenemos los resultados que queríamos en nuestro controlador para mostrar cuatro registros más cuya id sea menor que la que hemos pasado como argumento.

Archivos para descargar