Archivo

Archivo para la Categoría "Codeigniter"

Paginación en codeigniter

28 junio 2011 2 comentarios

Se utiliza para mostrar un conjunto de resultados de una base de datos, no en su totalidad sino estableciendo la cantidad de registros a mostrar por cada página. Así también en la vista se genera una serie de enlaces (de la forma: <<  anterior 2 3 4 5 6 siguiente  >>) de manera que permita al usuario desplazarse hacia las demás páginas.

Supongamos que tenemos una tabla llamada ‘contactos’ en nuestra base de datos, con sus campos ‘nombre’ y ‘apellido’, y queremos hacer un paginador para mostrar al usuario 4 contactos por página. A continuación les mostraré tanto el código como la explicación para el modelo, la vista y el controlador.

Controlador: contactos.php

function listar(){

//cargamos la librería

$this->load->library(‘pagination’);

 //configuramos

$config['base_url'] = base_url().”contactos/listar/”;

$config['total_rows'] = $this->Contactos_model->getCantidad();//obtenemos la cantidad de registros

$config['per_page'] = ’4′;  //cantidad de registros por página

$config['num_links'] = ’2′; //nro. de enlaces antes y después de la pagina actual

$config['prev_link'] = ‘anterior’; //texto del enlace que nos lleva a la pagina ant.

$config['next_link'] = ‘siguiente’; //texto del enlace que nos lleva a la sig. página

$config['uri_segment'] = ’3′;  //segmentos que va a tener nuestra URL

$config['first_link'] = ‘<<’;  //texto del enlace que nos lleva a la primer página

$config['last_link'] = ‘>>’;   //texto del enlace que nos lleva a la última página

 // inicializamos       

$this->pagination->initialize($config);

/* llamamos al método de nuestro modelo para hacer la consulta pasándole como parámetro la cantidad de registros por página y el registro por el que va a comenzar (estará contenido en el 3er segmento de la URL) */

$contactos = $this->Contactos_model->getContactos($config['per_page'], $this->uri->segment(3));

//ahora debemos llamar a la vista y pasarle el array ‘$contactos’ obtenido.

$datos[‘contactos’] = $contactos;

$this->load->view(‘contactos/contactos_view’, $datos, false);

}

modelo: contactos_model.php 

/*método que devuelve una cierta cantidad de registros dependiendo del valor de los parámetros. Con la cláusula ‘limit’ establecemos el número de registros por página y desde que registro inicia la consulta. */

function getContactos($numeroRegistros, $inicio)

{

$this->db->limit($numeroRegistros, $inicio);

$this->db->select(‘idContacto, nombre, apellido’);

$query = $this->db->get(‘contactos’);

return $query->result();

}

//método que devuelve el total de registros contenidos en la tabla ‘contactos’

function getCantidad ()

{

return $this->db->count_all(‘contactos’);

}

Finalmente en la vista recorremos el conjunto de resultados con un “foreach” y mostramos los datos por pantalla.

También debemos mostrar los enlaces a las otras páginas con “$this->pagination->create_links();”

Vista: contactos_view.php

<?php

if(isset($contactos)):

foreach($contactos as $c):

echo $c->nombre.’ <br />’.c->apellido;

endforeach;

endif; //endif

?>

<?php echo $this->pagination->create_links(); ?>

Categorías:Codeigniter Etiquetas: ,

Call to a member function query() on a non-object

4 mayo 2011 Deja un comentario

Este mensaje de error es generado cuando no se han cargado las librerías ‘database’ y ‘session’.
Debemos cargarlas en el archivo autoload.php ubicado en el directorio ‘config’ de nuestra aplicación.
La línea donde dice:

$autoload['libraries'] = array();

debemos reemplazarla por esto:

$autoload['libraries'] = array('database', 'session');

Fuente: http://samsami2u.wordpress.com/2009/03/28/codeigniter-call-to-a-member-function-query-on-a-non-object/

Categorías:Codeigniter

.htaccess remover index.php en codeigniter

3 marzo 2011 Deja un comentario

Luego de buscar y buscar encontré un archivo .htaccess que si me ha funcionado para remover el index.php de la url en Codeigniter. El código es el siguiente:

# Customized error messages.
ErrorDocument 404 /index.php

# Set the default handler.
DirectoryIndex index.php

# Various rewrite rules.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

El mismo fue tomado del la wiki de codeigniter. Es la solución Nº 3 de la siguiente publicación:
http://codeigniter.com/wiki/Dreamhost_.htaccess/

Categorías:Codeigniter Etiquetas: ,

Problemas al subir proyecto a un servidor

11 febrero 2011 Deja un comentario

Algunos de los problemas que se me presentaron son:
1) No funcionaban las url.
Después de investigar encontré la solución en http://www.noquieroprogramar.com/como-instalar-codeigniter-en-vuestro-servidor/ en donde menciona que debemos a cambiar en application/config/config.php:
$config['uri_protocol'] = “AUTO”;
El motivo que menciona es que el sistema de detección no funciona como debiera. Seguramente esto sucede para algunos hostings en particular.

2) No se puede ocultar la extensión “index.php”.
Siendo que tenia el archivo “.htaccess” codificado correctamente para ocultar el index.php de la url, éste no funcionaba. Finalmente utilicé un código para el .htaccess el cual tiene alguna diferencia con el que indican los manuales y tutoriales. Este código es presentado por una persona a la cual le había sucedido el mismo problema y utiliza el mismo servicio de hosting que yo.
Aquí les dejo el codigo del archivo .htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L]

Por último les cuento que estos problemas se me presentaron en el hosting que yo utilizo actualmente llamado “dattatec”, y es muy probable que no sucedan en otra empresa de hosting.

Unable to connect to your database server using the provided settings

4 febrero 2011 Deja un comentario

Luego de subir los archivos de mi primer proyecto con Codeigniter a un servidor de hosting no lograba conectar con la base de datos, siendo que habia configurado correctamente los archivos “database.php” y “config.php”.

El error que se generaba era el siguiente: Unable to connect to your database server using the provided settings.

Finalmente puede encontrar la solución en un foro, donde a otro le ha sucedido lo mismo. http://aliviana.com/foro/viewtopic.php?f=1&t=71

El problema estaba con las conexiones persistentes lo cual debemos deshabilitar en el archivo “database.php” de la aplicación:

Cambiar la siguiente linea:    $db['default']['pconnect'] = TRUE;

por lo siguiente:   $db['default']['pconnect'] = FALSE;

El motivo del problema según se comenta en ese foro es que el servidor no soporta las conexiones persistentes.

Saludos.

Categorías:Codeigniter

Caracteres y acentos en Codeigniter

22 diciembre 2010 Deja un comentario

Para poder mostrar los acentos y caracteres de forma correcta, ya sea para los datos que están almacenados en una base de datos como así también el texto común contenido en el HTML de las plantilla, debemos realizar las siguientes configuraciones:

En el archivo database.php situado en “system/application/config” debemos tener las siguientes líneas

$db['default']['char_set'] = “utf8″;

$db['default']['dbcollat'] = “utf8_general_ci”;

Y luego en la cabecera de nuestra código HTML debemos tener la codificación en utf-8, tal como se muestra a continuación

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />

Categorías:Codeigniter
Seguir

Get every new post delivered to your Inbox.