Conectandonos a una BD
A continuación les mostramos como conectarse a una base de datos usando Motte. Es importante recordar que para que la aplicación funcione será necesario contar con los directorios 'motte', 'cache', 'log', 'model' y 'view' dentro del directorio raíz de nuestra aplicación.
ejemplo.sql
Crear el archivo ejemplo.sql con el siguiente contenido:
CREATE DATABASE ejemplo; GRANT ALL PRIVILEGES ON ejemplo.* TO usuario@localhost IDENTIFIED BY 'passwd'; FLUSH PRIVILEGES; USE ejemplo; -- --------------------------------------------------- -- Table: pais -- Description: tabla de paises -- --------------------------------------------------- DROP TABLE IF EXISTS pais; CREATE TABLE pais ( pais_id INT(11) NOT NULL AUTO_INCREMENT, codigo VARCHAR(10) NOT NULL, nombre VARCHAR(50) NOT NULL, nombre_ingles VARCHAR(50), PRIMARY KEY (pais_id), UNIQUE pais_1 (codigo), KEY pais_2 (nombre) ) ENGINE=MYISAM; INSERT INTO pais VALUES (1,'S/D','Sin Datos','Sin Datos'),(2,'UY','URUGUAY','URUGUAY'), (3,'AR','ARGENTINA','ARGENTINA'),(4,'BR','BRASIL','BRAZIL'),(5,'PY','PARAGUAY','PARAGUAY'), (6,'AF','AFGANISTAN','AFGHANISTAN'),(7,'AL','ALBANIA','ALBANIA'),(8,'HV','ALTO VOLTA',''), (9,'AD','ANDORRA','ANDORRA'),(10,'AO','ANGOLA','ANGOLA'),(11,'AQ','ANTARTIDA','ANTARTICA'), (12,'AG','ANTIGUA Y BARBUDA','ANTIGUA AND BARBUDA'),(13,'AN','ANTILLAS HOLANDESAS','NETHERLANDS ANTILLES'), (14,'SA','ARABIA SAUDITA','SAUDI ARABIA'),(15,'DZ','ARGELIA','ALGERIA');
Para crear la base de datos y la tabla puede tirar el siguiente script de SQL contra su server de Mysql con el usuario 'root' u otro con privilegios para crear nuevas bases de datos y usuarios.
Ejemplo:
mysql -uroot -p < ejemplo.sql
-- --------------------------------------------------- -- Table: serial -- Description: tabla de seriales para tablas -- --------------------------------------------------- DROP TABLE IF EXISTS serial; CREATE TABLE serial ( serial_id VARCHAR(30) NOT NULL, codigo INT(11) DEFAULT '0', PRIMARY KEY (serial_id) ) ENGINE=MYISAM; INSERT INTO serial SELECT 'pais_id',MAX(pais_id) FROM pais;
Generar la clase utilizando la herramienta ofrecida por motte ”mysql2motte”.
===== /model/pais.model.php =====
Para crear la clase del modelo para la tabla pais ejecutar el script mysql2motte.sh1) que está en 'motte/utils/mysql2motte' con los parámetros correspondientes:
Sintaxis:
<motteDir>/utils/mysql2motte/mysql2motte.sh -u=usuario -p=passwd -d=ejemplo -t=<templateDir>/mteTpl.mte -o=<appDir>/model
Ejemplo:
/var/www/aplicacion/motte/utils/mysql2motte/mysql2motte.sh -u=usuario -p=passwd -d=ejemplo -i -t=/var/www/aplicacion/motte/utils/mysql2motte/mteTpl.mte -o=/var/www/aplicacion/model
-i” o ”--autoincremental” es importante si se pretende utilizar campos claves auto incrementales en mysql, ya que de lo contrario la utilidad mysql2motte preparará la clases para trabajar con una clase serial.model.php para las claves de autonumeración.
El contenido de la tabla serial debe ser un registro por cada campo ínidice de su BD. En este caso, como mostramos en el ejemplo, contará con un registro para el campo ”pais_id” y un número de inicio.
===== /cfg.motte.php =====
Crear el archivo cfg.motte.php en la raíz de su aplicación con el siguiente contenido:
<?php /** * Basic System Configuration * * @filesource * @author Motte Core Team * @url http://motte.codigolibre.net * @package TestPkg * @subpackage publicFrontEnd * @version 0.1a * @license http://opensource.org/licenses/gpl-license.php GNU Public license (GPLv2+) */ define('MTE_DB_DRIVER', 'MySql'); define('MTE_DB_HOST', 'localhost'); define('MTE_DB_USER', 'usuario'); define('MTE_DB_PASS', 'passwd'); define('MTE_DB_NAME', 'ejemplo'); define('MOTTE', ROOT_DIR.'/motte'); define('MTE_LANG', 'es'); // Optional - Default is 'en' include_once(MOTTE.'/motte.inc.php'); ?>
===== /index.php =====
Crear el archivo index.php en la raíz de su aplicación con el siguiente contenido:
<?php /** * Basic Application for a simple table managing * * @filesource * @author Motte Core Team * @url http://motte.codigolibre.net * @package TestPkg * @subpackage publicFrontEnd * @version 0.1a * @license http://opensource.org/licenses/gpl-license.php GNU Public license (GPLv2+) */ include('cfg.motte.php'); $app = new mteController(); $app->addConfig(MODULE_NAME); $app->createSession(); $app->connectDB(); $app->validateUrl(); $pag = $app->generateHtmlPage(); $pag->setContent($app->manageTable('pais')); $pag->showHtml(); ?>
===== /view/tbl_pais.view.php =====
Actualmente estamos trabajando en incorporar a la herramienta de automatización la generación de las vistas para las clases del modelo.
Por el momento, éstas deben ser creadas manualmente siguiendo el ejemplo que damos a continuación.
Crear el archivo tbl_pais.view.php en el directorio view de su aplicación con el siguiente contenido:
<?php /** * Basic View settings for table pais * * @filesource * @author Motte Core Team * @url http://motte.codigolibre.net * @package TestPkg * @subpackage publicFrontEnd * @version 0.1a * @license http://opensource.org/licenses/gpl-license.php GNU Public license (GPLv2+) */ class vw_tbl_pais extends mteView{ /** * Constructor * * @access public * @return mteView */ public function __construct() { // parent parent::__construct(); // fields $this->addFieldInteger('pais_id','Id',true); $this->addFieldString('codigo','Código',false,10,10); $this->addFieldString('nombre','Nombre',false,50,50); $this->addFieldString('nombre_ingles','Nombre (inglés)',false,50,50); // General settings $this->setTitle('Países'); $this->setAutoCalcFields(false); // Grid Settings $this->setGridFields('pais_id, codigo, nombre'); $this->setGridColumnsHidden('pais_id'); $this->setGridColumnsOrder('nombre,codigo,nombre_ingles'); $this->setGridDefaultOrder('nombre'); $this->setGridColumnsFilter('codigo,nombre,nombre_ingles'); // Form Settings $this->setFormFields('pais_id, codigo, nombre, nombre_ingles'); $this->setFormFields('pais_id', mteConst::MTE_ACT_INSERT, false); $this->setFormFieldReadOnly('pais_id'); } /** * Destructor * * @access public */ public function __destruct(){ } } ?>
===== Ejemplo de resultado =====
Para visualizar el resultado, abrir con un navegador en la URL de aplicación:
http://servidor/aplicacion
Ejemplo:
http://localhost/ejemplo
El resultado debería ser algo similar a la siguiente imagen:





