Subject Re: [firebird-php] cakephp, adodb and firebird
Author Antonio Galicia
On 3/23/07, Dan Wilson <dwilson@...> wrote:

> Has anyone gotten cakephp to work with firebird via adodb?

I just working a dbo driver for firebird. It's based on postgresql
code and it's working for basic functions.

I have an example at

http://mail.olas.com.mx/cake/parametros
----
$ cat app/config/database.php
<?php
class DATABASE_CONFIG
{
#var $MySQL = array('driver' => 'mysql',
var $default = array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => 'localhost',
'login' => 'login',
'password' => 'password',
'database' => 'cake',
'prefix' => '');

var $firebird = array('driver' => 'firebird',
'connect' => 'ibase_connect',
'host' => 'localhost',
'login' => 'SYSDBA',
'password' => 'masterkey',
'database' => 'contabilidad',
'prefix' => '');

}
?>

----
$ cat app/models/parametro.php
<?php

class Parametro extends AppModel
{
var $name = 'parametro';
var $useTable = 'PARAMETROS'; // Check for table name
var $useDbConfig = 'firebird';

var $validate = array( // And check for column name too
'MODULO' => VALID_NOT_EMPTY,
'PARAMETRO' => VALID_NOT_EMPTY,
'DESCRIPCION' => VALID_NOT_EMPTY,
'TPOPARAMETRO' => VALID_NOT_EMPTY,
'CADENA' => VALID_NOT_EMPTY,
'NUMERO' => VALID_NOT_EMPTY,
'FECHA' => VALID_NOT_EMPTY,
'OPCIONAL' => VALID_NOT_EMPTY,
);
}

?>
----
$ cat cat app/controllers/parametros_controller.php
<?php

class ParametrosController extends AppController
{
var $name = 'Parametros';

function index()
{
$this->set('parametros', $this->Parametro->findAll());
}
function agrega()
{
if (!empty($this->data))
{
if ($this->Parametro->save($this->data))
{
$this->flash('Información registrada.','/parametros');
}
}
}
}

?>
----
$ cat app/views/parametros/index.thtml
<h1>Parámetros</h1>
<p><?php echo $html->link('Agregar Parametro', '/parametros/agrega'); ?></p>
<table>
<tr>
<th>Módulo</th>
<th>Parámetro</th>
<th>Descripción</th>
<!-- th>Tipo</th -->
<th>Valor</th>
<th>Es opcional</th>
</tr>
<?php foreach ($parametros as $parametro): ?>
<tr>
<td class="C" ><?php echo $parametro['parametro']['modulo']; ?></td>
<td class="C" ><?php echo $parametro['parametro']['parametro']; ?></td>
<td class="C" ><?php echo
$parametro['parametro']['descripcion']; ?></td>
<!-- td class="C" ><?php echo
$parametro['parametro']['tpoparametro']; ?></td -->
<td class="<?php echo $parametro['parametro']['tpoparametro'];
?>" ><?php switch ($parametro['parametro']['tpoparametro'])
{
case 'C' : echo $parametro['parametro']['cadena']; break;
case 'F' : echo $parametro['parametro']['fecha']; break;
case 'N' : echo $parametro['parametro']['numero']; break;
case 'L' : echo $parametro['parametro']['cadena'] ==
'S' ? 'Sí' : 'No'; break;
default : echo '<div class="error_message">ERROR</div>'; break;
} ?></td>
<td class="C" ><?php echo $parametro['parametro']['opcional']
== 'S' ? 'Sí' : 'No'; ?></td>
</tr>
<?php endforeach; ?>

</table>
---
$ cat app/views/parametros/agrega.thtml
<h1>Parámetros - Agrega</h1>
<form method="post" action="<?php echo $html->url('agrega')?>">
<table class="forma">
<tr>
<th>Módulo</th>
<td>
<?php echo $html->input('parametro/MODULO',
array('size' => '3'))?>
<?php echo $html->tagErrorMsg('parametro/MODULO',
'Debe indicar el módulo.') ?>

</td>
</tr>
<tr>
<th>Parámetro</th>
<td>
<?php echo $html->input('parametro/PARAMETRO',
array('size' => '15'))?>
<?php echo $html->tagErrorMsg('parametro/PARAMETRO',
'Debe indicar el nombre del parámetro.') ?>

</td>
</tr>
<tr>
<th>Descripción</th>
<td>
<?php echo $html->input('parametro/DESCRIPCION',
array('size' => '50'))?>
<?php echo $html->tagErrorMsg('parametro/DESCRIPCION',
'Debe indicar descripción.') ?>

</td>
</tr>
<tr>
<th>Tipo</th>
<td>
<?php echo $html->input('parametro/TPOPARAMETRO',
array('size' => '1'))?>
<?php echo
$html->tagErrorMsg('parametro/TPOPARAMETRO', 'Debe indicar el tipo.')
?>

</td>
</tr>
<tr>
<th>valor</th>
<td>
<?php echo $html->input('parametro/CADENA',
array('size' => '50'))?>
<?php echo $html->tagErrorMsg('parametro/CADENA',
'Debe indicar el valor.') ?>

</td>
</tr>
</table>
<?php echo $html->submit('Grabar') ?>
</form>
---
CREATE DOMAIN MODULO CHAR(3) NOT NULL ;
CREATE DOMAIN PARAMETRO CHAR(15) NOT NULL ;
CREATE DOMAIN DESCRIPCION VARCHAR(50) NOT NULL ;
CREATE DOMAIN TPOPARAMETRO CHAR(1) NOT NULL
CHECK (VALUE IN ('C', 'N', 'F', 'L'));
CREATE DOMAIN MONTO DECIMAL(15,4) DEFAULT 0.00 NOT NULL ;
CREATE DOMAIN FECHA DATE;
CREATE DOMAIN DECISION CHAR(1) DEFAULT 'S' NOT NULL
CHECK (VALUE IN ('S', 'N')) ;


CREATE TABLE PARAMETROS (
MODULO MODULO,
PARAMETRO PARAMETRO,
DESCRIPCION DESCRIPCION,
TPOPARAMETRO TPOPARAMETRO,
CADENA DESCRIPCION DEFAULT '',
NUMERO MONTO,
FECHA FECHA DEFAULT 'TODAY',
OPCIONAL DECISION,
CONSTRAINT PARAMETROS_K1 PRIMARY KEY (MODULO, PARAMETRO)
);


--
Saludos,
Toño
----
http://agc.com.mx/antoniogc/blog


[Non-text portions of this message have been removed]