Veremos en este post como conectar un proyecto desarrollado en Codeigniter a una base de datos de Oracle XE.
Antes de iniciar esta guía se ha
trabajado con los siguientes recursos:
- Codeigniter versión 2.1.3
- Oracle database XE 11g Relase 2
- Xampp 1.7.4 VC6
Parto del hecho que ya sabes
instalar y configurar codeigniter para un nuevo proyecto web con acceso a datos,
al igual que tienes instalado el Xampp y
Oracle XE 11g.
Primero hay que habilitar las
extensiones de php para poder trabajar con conexiones a Oracle. Esto se hace
accediendo al archivo php.ini ubicado en la ruta C:\xampp\php\php.ini que
procederemos a editarlo con cualquier editor de texto, puede ser el bloc de
notas o el que ustedes prefieran. Una vez abierto ese archivo buscamos las
líneas:
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_oci8.dll
Al estar precedidas del símbolo
de punto y coma quiere decir que no están habilitadas, procedemos a quitar el punto y coma para habilitarlas. Tendrán que quedar de la siguiente manera:
extension=php_pdo_oci.dll
extension=php_pdo_oci8.dll
extension=php_oci8.dll
Nota: estas líneas no están seguidas
tal como en este ejemplo, por lo cual debes ubicarlas.
Guardamos los cambios en el archivo php.ini y se procede a recargar el servicio de Apache a través del Xampp control panel:
Guardamos los cambios en el archivo php.ini y se procede a recargar el servicio de Apache a través del Xampp control panel:
Una vez realizados estos cambios
vamos a configurar el archivo database.php que esta en la ruta del framework
codeigniter: /application/config/database.php
Modificamos las líneas de la
cadena de conexión y deben quedar de esta manera:
(Click en la imagen para ampliarla)
(Click en la imagen para ampliarla)
La variable $tnsname tiene los
parámetros como protocolo, host, puerto, tipo de servidor y nombre del
servicio.
Los siguientes parámetros en los
arrays de configuración:
- $db[‘default’][‘hostname’] = en este caso tendrá el valor de la variable $tsname
- $db[‘default’][‘username’] = el nombre del usuario que tiene privilegios para conectarse al schema con el que se trabajará en Oracle
- $db[‘default’][‘password] = el password de ese usuario
- $db[‘default’][‘database’] = esto haría referencia al SID de Oracle, en este caso estamos trabajado con xe
- $db[‘default’][‘driver’] = driver para poder trabajar con el motor, en este caso el valor es Oracle
Crear Modelo
Vamos a trabajar con una tabla
llamada PERSONAS la cual tiene la siguiente estructura:
(Click en la imagen para ampliarla)
Ahora vamos a crear un modelo en
la carpeta application/models/ el cual llamaremos model_oracle.php y su estructura tendrá el siguiente
código:
(Click en la imagen para ampliarla)
Estamos haciendo un query
sencillo para extraer los datos de una tabla llamada PERSONAS.
IMPORTANTE: En Oracle los objetos
diferencian los caracteres de mayúsculas y minúsculas, al menos desde
codeigniter hay que ser muy estricto con esto, razón por la cual al llamar la
tabla esta denotada en mayúsculas.
Crear Controlador
Crearemos el controlador para que
a través del modelo extraigamos los datos y luego renderizarlos en una vista. El
controlador estará ubicado en la ruta /application/controllers/ y lo llamaremos
oracle.php el cual tendrá la siguiente estructura:
Muy sencillo, en la línea 7
estamos cargando el modelo previamente creado, en la línea 8 en un array
llamado $data[‘personas’] entrego los
datos a través del método model_oracle del modelo, y en la línea 9 cargo una
vista llamada oracle_view con el array $data[‘personas’].
Creación de la vista
La vista que renderizará los
datos estará creada en el directorio /application/views/ y la llamaremos oracle_view.php
con la siguiente estructura en su código:
Con un foreach recorremos los valores
del array data[‘personas’] y entonces con la clave $p se accede a cada campo de
la tabla. Para el ejemplo nuevamente es recomendable diferenciar entre
mayúsculas y minúsculas, tal como se puede apreciar se accede a los valores de
la forma $p->IDENTIFICACION , $p->PRIMERNOMBRE etc…
Finalmente a través del navegador
web accedemos a http://localhost/codeigniter/oracle
(si tienen su proyecto configurado sin el index.php en la URL) o con http://localhost/codeigniter/index.php/oracle
(si no han configurado el proyecto para eliminar el index.php ) y debe
desplegar los datos de la siguiente forma:
5 comentarios:
hola Gabriel, falta editar en el controller oracle agregar la linea
$this->load->database();
por qué cuando trato de insertar en la Base de Datos da error mostrándome la query de "INSERT ...", sin embargo es la misma query que cuando ejecuto en oracle sql developer me inserta, pero sin embargo desde del código de php no.
Para obtener los datos de tu consulta oracle activa el autoinit de la libreria db
$autoload['libraries'] = array('database');
en el archivo autoload.php
Excelente el aporte para conectarse a Oracle. Le faltó dos cosas que lo agregaron Geistein y el Anonimo que dice del archivo autoload.php.
Gracias y saludos
Buenas tardes e realizado los pasos que estan en tu blog para mmostrar datos igual
pero me sale este error, no se si me puedas ayudar
=========================================================================
A PHP Error was encountered
Severity: Warning
Message: oci_execute(): ORA-00942: table or view does not exist
Filename: oci8/oci8_driver.php
Line Number: 286
Backtrace:
File: C:\wamp64\www\reportame_sap\application\models\Reporte_nota_venta_horaModel.php
Line: 20
Function: query
File: C:\wamp64\www\reportame_sap\application\controllers\Reporte_nota_venta_horaController.php
Line: 15
Function: getUsuarios
File: C:\wamp64\www\reportame_sap\index.php
Line: 315
Function: require_once
=========================================================================
=========================================================================
Error Number: 942
ORA-00942: table or view does not exist
select * from USUARIOS
Filename: C:/wamp64/www/reportame_sap/system/database/DB_driver.php
Line Number: 691
=========================================================================
Publicar un comentario