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.

Para que éste ejemplo funcione debe descargar Motte y colocarlo dentro del directorio ROOT de la 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
En caso de preferir InnoDB sobre MyISAM debe tener en cuenta que ese sistema no maneja campos ”auto_numeric”. Nosotros recomendamos la creación de una tabla ”serial” con la siguiente estructura:

-- ---------------------------------------------------
-- 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 mottemysql2motte”.

===== /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
La opción ”-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.

Si su sistema no permite correr el generador de clases para Motte, puede ver el código generado aquí o puede visitar Win-Bash y agregar bash a su sistema MS Windows(R)

===== /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:

Motte default template for DB table managing

1) Solo para sistemas *IX ya que se trata de un script en Bash
documentacion/ejemplos/db.txt · Última modificación: 2009/11/24 11:22 (editor externo)
Recent changes RSS feed Creative Commons License Donate Driven by DokuWiki

Valid XHTML 1.0 Strict