https://wiki.kumbiaphp.com/api.php?action=feedcontributions&user=Fidelio&feedformat=atomKumbiaPHP Framework Wiki - Contribuciones del usuario [es]2024-03-29T08:52:04ZContribuciones del usuarioMediaWiki 1.34.1https://wiki.kumbiaphp.com/index.php?title=Adapter_MsSQL&diff=2997Adapter MsSQL2010-11-05T15:31:02Z<p>Fidelio: </p>
<hr />
<div>== Adaptador para las bases MS SQL ==<br />
<br />
Este adaptador no utiliza PDO, es decir puedes configurar tu archivo database.ini de esta forma<br />
<br />
<source lang='ini'><br />
<br />
[development]<br />
host = localhost<br />
username = sa<br />
password = <br />
name = master<br />
type = mssql<br />
<br />
</source><br />
<br />
el código es el siguiente.<br />
<br />
<source lang='php'><br />
class DbMsSQL extends DbBase implements DbBaseInterface {<br />
<br />
/**<br />
* Resource de la Conexion a MsSQL<br />
*<br />
* @var resource<br />
*/<br />
public $id_connection;<br />
<br />
/**<br />
* Ultimo Resultado de una Query<br />
*<br />
* @var resource<br />
*/<br />
public $last_result_query;<br />
<br />
/**<br />
* Ultima sentencia SQL enviada a MsSQL<br />
*<br />
* @var string<br />
*/<br />
private $last_query;<br />
<br />
/**<br />
* Ultimo error generado por MsSQL<br />
*<br />
* @var string<br />
*/<br />
public $last_error;<br />
<br />
/**<br />
* Resultado de Array Asociativo<br />
*<br />
*/<br />
const DB_ASSOC = MSSQL_ASSOC;<br />
<br />
/**<br />
* Resultado de Array Asociativo y Numerico<br />
*<br />
*/<br />
const DB_BOTH = MSSQL_BOTH;<br />
<br />
/**<br />
* Resultado de Array Numerico<br />
*<br />
*/<br />
const DB_NUM = MSSQL_NUM;<br />
<br />
/**<br />
* Tipo de Dato Integer<br />
*<br />
*/<br />
const TYPE_INTEGER = 'INT';<br />
<br />
/**<br />
* Tipo de Dato Date<br />
*<br />
*/<br />
const TYPE_DATE = 'SMALLDATETIME';<br />
<br />
/**<br />
* Tipo de Dato Varchar<br />
*<br />
*/<br />
const TYPE_VARCHAR = 'VARCHAR';<br />
<br />
/**<br />
* Tipo de Dato Decimal<br />
*<br />
*/<br />
const TYPE_DECIMAL = 'DECIMAL';<br />
<br />
/**<br />
* Tipo de Dato Datetime<br />
*<br />
*/<br />
const TYPE_DATETIME = 'DATETIME';<br />
<br />
/**<br />
* Tipo de Dato Char<br />
*<br />
*/<br />
const TYPE_CHAR = 'CHAR';<br />
<br />
/**<br />
* Hace una conexion a la base de datos de MsSQL<br />
*<br />
* @param array $config<br />
* @return resource_connection<br />
*/<br />
public function connect($config){<br />
if(!extension_loaded('mssql')){<br />
throw new KumbiaException('Debe cargar la extensión de PHP llamada php_mssql');<br />
}<br />
if(!isset($config['port']) || !$config['port']) {<br />
$config['port'] = 1433;<br />
}<br />
if($this->id_connection = mssql_connect("{$config['host']},{$config['port']}", $config['username'], $config['password'], true)){<br />
if($config['name']!=='') {<br />
if(!mssql_select_db($config['name'], $this->id_connection)){<br />
throw new KumbiaException($this->error());<br />
}<br />
}<br />
return true;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
}<br />
/**<br />
* Efectua operaciones SQL sobre la base de datos<br />
*<br />
* @param string $sqlQuery<br />
* @return resource or false<br />
*/<br />
public function query($sql_query){<br />
$this->debug($sql_query);<br />
if($this->logger){<br />
Logger::debug($sql_query);<br />
}<br />
if(!$this->id_connection){<br />
$this->connect();<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
}<br />
$this->last_query = $sql_query;<br />
if($result_query = mssql_query($sql_query, $this->id_connection)){<br />
$this->last_result_query = $result_query;<br />
return $result_query;<br />
}else{<br />
$this->last_result_query = false;<br />
throw new KumbiaException($this->error(" al ejecutar <em>\"$sql_query\"</em>"));<br />
}<br />
}<br />
/**<br />
* Cierra la Conexión al Motor de Base de datos<br />
*/<br />
public function close(){<br />
if($this->id_connection) {<br />
return mssql_close();<br />
}<br />
return false;<br />
}<br />
/**<br />
* Devuelve fila por fila el contenido de un select<br />
*<br />
* @param resource $result_query<br />
* @param int $opt<br />
* @return array<br />
*/<br />
public function fetch_array($result_query='', $opt=MSSQL_BOTH){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
return mssql_fetch_array($result_query, $opt);<br />
}<br />
/**<br />
* Constructor de la Clase<br />
*<br />
* @param array $config<br />
*/<br />
public function __construct($config){<br />
$this->connect($config);<br />
}<br />
/**<br />
* Devuelve el numero de filas de un select<br />
*/<br />
public function num_rows($result_query=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($number_rows = mssql_num_rows($result_query))!==false){<br />
return $number_rows;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Devuelve el nombre de un campo en el resultado de un select<br />
*<br />
* @param int $number<br />
* @param resource $result_query<br />
* @return string<br />
*/<br />
public function field_name($number, $result_query=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($fieldName = mssql_field_name($result_query, $number))!==false){<br />
return $fieldName;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
/**<br />
* Se Mueve al resultado indicado por $number en un select<br />
*<br />
* @param int $number<br />
* @param resource $result_query<br />
* @return boolean<br />
*/<br />
public function data_seek($number, $result_query=''){<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($success = mssql_data_seek($result_query, $number))!==false){<br />
return $success;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Numero de Filas afectadas en un insert, update o delete<br />
*<br />
* @param resource $result_query<br />
* @return int<br />
*/<br />
public function affected_rows($result_query=''){<br />
if(($numberRows = mssql_affected_rows())!==false){<br />
return $numberRows;<br />
} else {<br />
$this->lastError = $this->error();<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Devuelve el error de MsSQL<br />
*<br />
* @return string<br />
*/<br />
public function error($err=''){<br />
if(!$this->id_connection){<br />
$this->last_error = mssql_get_last_message() ? mssql_get_last_message() : "[Error Desconocido en MsSQL: $err]";<br />
if($this->logger){<br />
Logger::error($this->last_error);<br />
}<br />
return $this->last_error;<br />
}<br />
$this->last_error = mssql_get_last_message() ? mssql_get_last_message() : "[Error Desconocido en MsSQL: $err]";<br />
$this->last_error.= $err;<br />
if($this->logger){<br />
Logger::error($this->last_error);<br />
}<br />
return $this->last_error;<br />
}<br />
/**<br />
* Devuelve el no error de MsSQL<br />
*<br />
* @return int<br />
*/<br />
public function no_error(){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
return mssql_errno();<br />
}<br />
/**<br />
* Devuelve el ultimo id autonumerico generado en la BD<br />
*<br />
* @return int<br />
*/<br />
public function last_insert_id($table='', $primary_key=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
$id = false;<br />
$result = mssql_query("select max({$primary_key}) from $table");<br />
if ($row = mssql_fetch_row($result)) {<br />
$this->id_connection = trim($row[0]);<br />
}<br />
mssql_free_result($res);<br />
return $this->id_connection;<br />
}<br />
/**<br />
* Verifica si una tabla existe o no<br />
*<br />
* @param string $table<br />
* @return boolean<br />
*/<br />
public function table_exists($table, $schema=''){<br />
$table = addslashes("$table");<br />
if($schema==''){<br />
$num = $this->fetch_one("SELECT COUNT(*) FROM<br />
INFORMATION_SCHEMA.TABLES<br />
WHERE TABLE_NAME = '$table'");<br />
} else {<br />
$schema = addslashes("$schema");<br />
$num = $this->fetch_one("SELECT COUNT(*) FROM<br />
INFORMATION_SCHEMA.TABLES<br />
WHERE TABLE_NAME = '$table'<br />
AND TABLE_SCHEMA = '$schema'");<br />
}<br />
return $num[0];<br />
}<br />
/**<br />
* Devuelve un LIMIT valido para un SELECT del RBDM<br />
*<br />
* @param string $sql consulta sql<br />
* @return string<br />
*/<br />
public function limit($sql){<br />
$params = Util::getParams(func_get_args());<br />
$sql_new = $sql;<br />
if(isset($params['limit']) && is_numeric($params['limit'])){<br />
$sql_new = str_replace("SELECT ", "SELECT TOP $params[limit] ", $sql);<br />
} <br />
return $sql_new;<br />
}<br />
<br />
/**<br />
* Borra una tabla de la base de datos<br />
*<br />
* @param string $table<br />
* @return boolean<br />
*/<br />
public function drop_table($table, $if_exists=true){<br />
if($if_exists){<br />
$sql = "IF EXISTS(SELECT TABLE_NAME FROM<br />
INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '$table')<br />
DROP TABLE $table;";<br />
return $this->query($sql);<br />
} else {<br />
return $this->query("DROP TABLE $table");<br />
}<br />
}<br />
/**<br />
* Listar las tablas en la base de datos<br />
*<br />
* @return array<br />
*/<br />
public function list_tables(){<br />
return $this->fetch_all("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES");<br />
}<br />
<br />
/**<br />
* Listar los campos de una tabla<br />
*<br />
* @param string $table<br />
* @return array<br />
*/<br />
public function describe_table($table, $schema=''){<br />
$sql = "SELECT A.name as Field,<br />
(case when A.isnullable=0 then 'NO' when A.isnullable=1 then 'YES' end) as 'Null',<br />
(case when A.colorder=1 then 'PRI' when A.colorder>1 then '' end ) as 'Key',<br />
convert(varchar, C.name) + '(' + convert(varchar, (A.length)) + ')' as 'Type',<br />
(case when A.cdefault=0 then 'NULL' when A.cdefault<>0 then '0' end) as 'Default'<br />
FROM syscolumns A<br />
left join sysobjects B on A.id = B.id<br />
left join systypes C on C.xtype = A.xtype<br />
WHERE B.name = '$table'";<br />
return $this->fetch_all($sql); <br />
}<br />
<br />
/**<br />
* Devuelve fila por fila el contenido de un select<br />
*<br />
* @param resource $result_query<br />
* @param string $class clase de objeto<br />
* @return object <br />
*/<br />
public function fetch_object($result_query=null, $class='stdClass'){<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
}<br />
return mssql_fetch_object($result_query, $class);<br />
}<br />
}<br />
<br />
</source><br />
<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
<br />
Realizado por: FiDeLio</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Adapter_MsSQL&diff=2995Adapter MsSQL2010-11-04T16:21:34Z<p>Fidelio: /* Adaptador para las bases MS SQL */</p>
<hr />
<div>== Adaptador para las bases MS SQL ==<br />
<br />
Este adaptador no utiliza PDO, es decir puedes configurar tu archivo database.ini de esta forma<br />
<br />
<source lang='ini'><br />
<br />
[development]<br />
host = localhost<br />
username = sa<br />
password = <br />
name = master<br />
type = mssql<br />
<br />
</source><br />
<br />
el código es el siguiente.<br />
<br />
<source lang='php'><br />
class DbMsSQL extends DbBase implements DbBaseInterface {<br />
<br />
/**<br />
* Resource de la Conexion a MsSQL<br />
*<br />
* @var resource<br />
*/<br />
public $id_connection;<br />
<br />
/**<br />
* Ultimo Resultado de una Query<br />
*<br />
* @var resource<br />
*/<br />
public $last_result_query;<br />
<br />
/**<br />
* Ultima sentencia SQL enviada a MsSQL<br />
*<br />
* @var string<br />
*/<br />
private $last_query;<br />
<br />
/**<br />
* Ultimo error generado por MsSQL<br />
*<br />
* @var string<br />
*/<br />
public $last_error;<br />
<br />
/**<br />
* Resultado de Array Asociativo<br />
*<br />
*/<br />
const DB_ASSOC = MSSQL_ASSOC;<br />
<br />
/**<br />
* Resultado de Array Asociativo y Numerico<br />
*<br />
*/<br />
const DB_BOTH = MSSQL_BOTH;<br />
<br />
/**<br />
* Resultado de Array Numerico<br />
*<br />
*/<br />
const DB_NUM = MSSQL_NUM;<br />
<br />
/**<br />
* Tipo de Dato Integer<br />
*<br />
*/<br />
const TYPE_INTEGER = 'INT';<br />
<br />
/**<br />
* Tipo de Dato Date<br />
*<br />
*/<br />
const TYPE_DATE = 'SMALLDATETIME';<br />
<br />
/**<br />
* Tipo de Dato Varchar<br />
*<br />
*/<br />
const TYPE_VARCHAR = 'VARCHAR';<br />
<br />
/**<br />
* Tipo de Dato Decimal<br />
*<br />
*/<br />
const TYPE_DECIMAL = 'DECIMAL';<br />
<br />
/**<br />
* Tipo de Dato Datetime<br />
*<br />
*/<br />
const TYPE_DATETIME = 'DATETIME';<br />
<br />
/**<br />
* Tipo de Dato Char<br />
*<br />
*/<br />
const TYPE_CHAR = 'CHAR';<br />
<br />
/**<br />
* Hace una conexion a la base de datos de MsSQL<br />
*<br />
* @param array $config<br />
* @return resource_connection<br />
*/<br />
public function connect($config){<br />
if(!extension_loaded('mssql')){<br />
throw new KumbiaException('Debe cargar la extensión de PHP llamada php_mssql');<br />
}<br />
if(!isset($config['port']) || !$config['port']) {<br />
$config['port'] = 1433;<br />
}<br />
if($this->id_connection = mssql_connect("{$config['host']},{$config['port']}", $config['username'], $config['password'], true)){<br />
if($config['name']!=='') {<br />
if(!mssql_select_db($config['name'], $this->id_connection)){<br />
throw new KumbiaException($this->error());<br />
}<br />
}<br />
return true;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
}<br />
/**<br />
* Efectua operaciones SQL sobre la base de datos<br />
*<br />
* @param string $sqlQuery<br />
* @return resource or false<br />
*/<br />
public function query($sql_query){<br />
$this->debug($sql_query);<br />
if($this->logger){<br />
Logger::debug($sql_query);<br />
}<br />
if(!$this->id_connection){<br />
$this->connect();<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
}<br />
$this->last_query = $sql_query;<br />
if($result_query = mssql_query($sql_query, $this->id_connection)){<br />
$this->last_result_query = $result_query;<br />
return $result_query;<br />
}else{<br />
$this->last_result_query = false;<br />
throw new KumbiaException($this->error(" al ejecutar <em>\"$sql_query\"</em>"));<br />
}<br />
}<br />
/**<br />
* Cierra la Conexión al Motor de Base de datos<br />
*/<br />
public function close(){<br />
if($this->id_connection) {<br />
return mssql_close();<br />
}<br />
return false;<br />
}<br />
/**<br />
* Devuelve fila por fila el contenido de un select<br />
*<br />
* @param resource $result_query<br />
* @param int $opt<br />
* @return array<br />
*/<br />
public function fetch_array($result_query='', $opt=MSSQL_BOTH){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
return mssql_fetch_array($result_query, $opt);<br />
}<br />
/**<br />
* Constructor de la Clase<br />
*<br />
* @param array $config<br />
*/<br />
public function __construct($config){<br />
$this->connect($config);<br />
}<br />
/**<br />
* Devuelve el numero de filas de un select<br />
*/<br />
public function num_rows($result_query=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($number_rows = mssql_num_rows($result_query))!==false){<br />
return $number_rows;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Devuelve el nombre de un campo en el resultado de un select<br />
*<br />
* @param int $number<br />
* @param resource $result_query<br />
* @return string<br />
*/<br />
public function field_name($number, $result_query=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($fieldName = mssql_field_name($result_query, $number))!==false){<br />
return $fieldName;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
/**<br />
* Se Mueve al resultado indicado por $number en un select<br />
*<br />
* @param int $number<br />
* @param resource $result_query<br />
* @return boolean<br />
*/<br />
public function data_seek($number, $result_query=''){<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($success = mssql_data_seek($result_query, $number))!==false){<br />
return $success;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Numero de Filas afectadas en un insert, update o delete<br />
*<br />
* @param resource $result_query<br />
* @return int<br />
*/<br />
public function affected_rows($result_query=''){<br />
if(($numberRows = mssql_affected_rows())!==false){<br />
return $numberRows;<br />
} else {<br />
$this->lastError = $this->error();<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Devuelve el error de MsSQL<br />
*<br />
* @return string<br />
*/<br />
public function error($err=''){<br />
if(!$this->id_connection){<br />
$this->last_error = mssql_get_last_message() ? mssql_get_last_message() : "[Error Desconocido en MsSQL: $err]";<br />
if($this->logger){<br />
Logger::error($this->last_error);<br />
}<br />
return $this->last_error;<br />
}<br />
$this->last_error = mssql_get_last_message() ? mssql_get_last_message() : "[Error Desconocido en MsSQL: $err]";<br />
$this->last_error.= $err;<br />
if($this->logger){<br />
Logger::error($this->last_error);<br />
}<br />
return $this->last_error;<br />
}<br />
/**<br />
* Devuelve el no error de MsSQL<br />
*<br />
* @return int<br />
*/<br />
public function no_error(){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
return mssql_errno();<br />
}<br />
/**<br />
* Devuelve el ultimo id autonumerico generado en la BD<br />
*<br />
* @return int<br />
*/<br />
public function last_insert_id($table='', $primary_key=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
$id = false;<br />
$result = mssql_query("select max({$primary_key}) from $table");<br />
if ($row = mssql_fetch_row($result)) {<br />
$this->id_connection = trim($row[0]);<br />
}<br />
mssql_free_result($res);<br />
return $this->id_connection;<br />
}<br />
/**<br />
* Verifica si una tabla existe o no<br />
*<br />
* @param string $table<br />
* @return boolean<br />
*/<br />
public function table_exists($table, $schema=''){<br />
$table = addslashes("$table");<br />
if($schema==''){<br />
$num = $this->fetch_one("SELECT COUNT(*) FROM<br />
INFORMATION_SCHEMA.TABLES<br />
WHERE TABLE_NAME = '$table'");<br />
} else {<br />
$schema = addslashes("$schema");<br />
$num = $this->fetch_one("SELECT COUNT(*) FROM<br />
INFORMATION_SCHEMA.TABLES<br />
WHERE TABLE_NAME = '$table'<br />
AND TABLE_SCHEMA = '$schema'");<br />
}<br />
return $num[0];<br />
}<br />
/**<br />
* Devuelve un LIMIT valido para un SELECT del RBDM<br />
*<br />
* @param string $sql consulta sql<br />
* @return string<br />
*/<br />
public function limit($sql){<br />
$params = Util::getParams(func_get_args());<br />
$sql_new = $sql;<br />
if(isset($params['limit']) && is_numeric($params['limit'])){<br />
$sql_new = str_replace("SELECT ", "SELECT TOP $params[limit] ", $sql);<br />
} <br />
return $sql_new;<br />
}<br />
<br />
/**<br />
* Borra una tabla de la base de datos<br />
*<br />
* @param string $table<br />
* @return boolean<br />
*/<br />
public function drop_table($table, $if_exists=true){<br />
if($if_exists){<br />
$sql = "IF EXISTS(SELECT TABLE_NAME FROM<br />
INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '$table')<br />
DROP TABLE $table;";<br />
return $this->query($sql);<br />
} else {<br />
return $this->query("DROP TABLE $table");<br />
}<br />
}<br />
/**<br />
* Listar las tablas en la base de datos<br />
*<br />
* @return array<br />
*/<br />
public function list_tables(){<br />
return $this->fetch_all("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES");<br />
}<br />
<br />
/**<br />
* Listar los campos de una tabla<br />
*<br />
* @param string $table<br />
* @return array<br />
*/<br />
public function describe_table($table, $schema=''){<br />
$describe_table = $this->fetch_all("exec sp_columns @table_name = '$table'");<br />
$final_describe = array();<br />
foreach($describe_table as $field){<br />
if($field["TYPE_NAME"]=='int identity'){<br />
$final_describe[] = array(<br />
"Field" => $field["COLUMN_NAME"],<br />
"Type" => "int(".$field['LENGTH'].")",<br />
"Null" => $field['NULLABLE'] == 1 ? "YES" : "NO",<br />
"Key" => 'PRI',<br />
'Default' => $field['COLUMN_DEF']<br />
); <br />
}else{<br />
$final_describe[] = array(<br />
"Field" => $field["COLUMN_NAME"],<br />
"Type" => $field['LENGTH'] ? $field["TYPE_NAME"] : $field["TYPE_NAME"]."(".$field['LENGTH'].")",<br />
"Null" => $field['NULLABLE'] == 1 ? "YES" : "NO",<br />
"Key" => '',<br />
'Default' => $field['COLUMN_DEF'] <br />
); <br />
}<br />
}<br />
return $final_describe; <br />
//$sql = "SELECT A.name as Field,<br />
// (case when A.isnullable=0 then 'NO' when A.isnullable=1 then 'YES' end) as 'Null',<br />
// (case when A.colstat=1 then 'PRI' when A.colstat='' then '' end) as 'Key', <br />
// (case when A.cdefault=0 then 'NULL' when A.cdefault<>0 then '0' end) as 'Default'<br />
// FROM syscolumns A, sysobjects B WHERE A.ID = B.ID AND B.name = '$table'";<br />
//return $this->fetch_all($sql);<br />
}<br />
<br />
/**<br />
* Devuelve fila por fila el contenido de un select<br />
*<br />
* @param resource $result_query<br />
* @param string $class clase de objeto<br />
* @return object <br />
*/<br />
public function fetch_object($result_query=null, $class='stdClass'){<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
}<br />
return mssql_fetch_object($result_query, $class);<br />
}<br />
}<br />
<br />
</source><br />
<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
<br />
Realizado por: FiDeLio</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Adapter_MsSQL&diff=2994Adapter MsSQL2010-11-04T16:13:04Z<p>Fidelio: /* Adaptador para las bases MS SQL */</p>
<hr />
<div>== Adaptador para las bases MS SQL ==<br />
<br />
Este adaptador no utiliza PDO, es decir puedes configurar tu archivo database.ini de esta forma<br />
<br />
<source lang='ini'><br />
<br />
[development]<br />
host = localhost<br />
username = sa<br />
password = <br />
name = master<br />
type = mssql<br />
<br />
</source><br />
<br />
el código es el siguiente.<br />
<br />
<source lang='php'><br />
class DbMsSQL extends DbBase implements DbBaseInterface {<br />
<br />
/**<br />
* Resource de la Conexion a MsSQL<br />
*<br />
* @var resource<br />
*/<br />
public $id_connection;<br />
<br />
/**<br />
* Ultimo Resultado de una Query<br />
*<br />
* @var resource<br />
*/<br />
public $last_result_query;<br />
<br />
/**<br />
* Ultima sentencia SQL enviada a MsSQL<br />
*<br />
* @var string<br />
*/<br />
private $last_query;<br />
<br />
/**<br />
* Ultimo error generado por MsSQL<br />
*<br />
* @var string<br />
*/<br />
public $last_error;<br />
<br />
/**<br />
* Resultado de Array Asociativo<br />
*<br />
*/<br />
const DB_ASSOC = MSSQL_ASSOC;<br />
<br />
/**<br />
* Resultado de Array Asociativo y Numerico<br />
*<br />
*/<br />
const DB_BOTH = MSSQL_BOTH;<br />
<br />
/**<br />
* Resultado de Array Numerico<br />
*<br />
*/<br />
const DB_NUM = MSSQL_NUM;<br />
<br />
/**<br />
* Tipo de Dato Integer<br />
*<br />
*/<br />
const TYPE_INTEGER = 'INT';<br />
<br />
/**<br />
* Tipo de Dato Date<br />
*<br />
*/<br />
const TYPE_DATE = 'SMALLDATETIME';<br />
<br />
/**<br />
* Tipo de Dato Varchar<br />
*<br />
*/<br />
const TYPE_VARCHAR = 'VARCHAR';<br />
<br />
/**<br />
* Tipo de Dato Decimal<br />
*<br />
*/<br />
const TYPE_DECIMAL = 'DECIMAL';<br />
<br />
/**<br />
* Tipo de Dato Datetime<br />
*<br />
*/<br />
const TYPE_DATETIME = 'DATETIME';<br />
<br />
/**<br />
* Tipo de Dato Char<br />
*<br />
*/<br />
const TYPE_CHAR = 'CHAR';<br />
<br />
/**<br />
* Hace una conexion a la base de datos de MsSQL<br />
*<br />
* @param array $config<br />
* @return resource_connection<br />
*/<br />
public function connect($config){<br />
if(!extension_loaded('mssql')){<br />
throw new KumbiaException('Debe cargar la extensión de PHP llamada php_mssql');<br />
}<br />
if(!isset($config['port']) || !$config['port']) {<br />
$config['port'] = 1433;<br />
}<br />
if($this->id_connection = mssql_connect("{$config['host']},{$config['port']}", $config['username'], $config['password'], true)){<br />
if($config['name']!=='') {<br />
if(!mssql_select_db($config['name'], $this->id_connection)){<br />
throw new KumbiaException($this->error());<br />
}<br />
}<br />
return true;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
}<br />
/**<br />
* Efectua operaciones SQL sobre la base de datos<br />
*<br />
* @param string $sqlQuery<br />
* @return resource or false<br />
*/<br />
public function query($sql_query){<br />
$this->debug($sql_query);<br />
if($this->logger){<br />
Logger::debug($sql_query);<br />
}<br />
if(!$this->id_connection){<br />
$this->connect();<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
}<br />
$this->last_query = $sql_query;<br />
if($result_query = mssql_query($sql_query, $this->id_connection)){<br />
$this->last_result_query = $result_query;<br />
return $result_query;<br />
}else{<br />
$this->last_result_query = false;<br />
throw new KumbiaException($this->error(" al ejecutar <em>\"$sql_query\"</em>"));<br />
}<br />
}<br />
/**<br />
* Cierra la Conexión al Motor de Base de datos<br />
*/<br />
public function close(){<br />
if($this->id_connection) {<br />
return mssql_close();<br />
}<br />
return false;<br />
}<br />
/**<br />
* Devuelve fila por fila el contenido de un select<br />
*<br />
* @param resource $result_query<br />
* @param int $opt<br />
* @return array<br />
*/<br />
public function fetch_array($result_query='', $opt=MSSQL_BOTH){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
return mssql_fetch_array($result_query, $opt);<br />
}<br />
/**<br />
* Constructor de la Clase<br />
*<br />
* @param array $config<br />
*/<br />
public function __construct($config){<br />
$this->connect($config);<br />
}<br />
/**<br />
* Devuelve el numero de filas de un select<br />
*/<br />
public function num_rows($result_query=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($number_rows = mssql_num_rows($result_query))!==false){<br />
return $number_rows;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Devuelve el nombre de un campo en el resultado de un select<br />
*<br />
* @param int $number<br />
* @param resource $result_query<br />
* @return string<br />
*/<br />
public function field_name($number, $result_query=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($fieldName = mssql_field_name($result_query, $number))!==false){<br />
return $fieldName;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
/**<br />
* Se Mueve al resultado indicado por $number en un select<br />
*<br />
* @param int $number<br />
* @param resource $result_query<br />
* @return boolean<br />
*/<br />
public function data_seek($number, $result_query=''){<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($success = mssql_data_seek($result_query, $number))!==false){<br />
return $success;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Numero de Filas afectadas en un insert, update o delete<br />
*<br />
* @param resource $result_query<br />
* @return int<br />
*/<br />
public function affected_rows($result_query=''){<br />
if(($numberRows = mssql_affected_rows())!==false){<br />
return $numberRows;<br />
} else {<br />
$this->lastError = $this->error();<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Devuelve el error de MsSQL<br />
*<br />
* @return string<br />
*/<br />
public function error($err=''){<br />
if(!$this->id_connection){<br />
$this->last_error = mssql_get_last_message() ? mssql_get_last_message() : "[Error Desconocido en MsSQL: $err]";<br />
if($this->logger){<br />
Logger::error($this->last_error);<br />
}<br />
return $this->last_error;<br />
}<br />
$this->last_error = mssql_get_last_message() ? mssql_get_last_message() : "[Error Desconocido en MsSQL: $err]";<br />
$this->last_error.= $err;<br />
if($this->logger){<br />
Logger::error($this->last_error);<br />
}<br />
return $this->last_error;<br />
}<br />
/**<br />
* Devuelve el no error de MsSQL<br />
*<br />
* @return int<br />
*/<br />
public function no_error(){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
return mssql_errno();<br />
}<br />
/**<br />
* Devuelve el ultimo id autonumerico generado en la BD<br />
*<br />
* @return int<br />
*/<br />
public function last_insert_id($table='', $primary_key=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
$id = false;<br />
$result = mssql_query("select max({$primary_key}) from $table");<br />
if ($row = mssql_fetch_row($result)) {<br />
$this->id_connection = trim($row[0]);<br />
}<br />
mssql_free_result($res);<br />
return $this->id_connection;<br />
}<br />
/**<br />
* Verifica si una tabla existe o no<br />
*<br />
* @param string $table<br />
* @return boolean<br />
*/<br />
public function table_exists($table, $schema=''){<br />
$table = addslashes("$table");<br />
if($schema==''){<br />
$num = $this->fetch_one("SELECT COUNT(*) FROM<br />
INFORMATION_SCHEMA.TABLES<br />
WHERE TABLE_NAME = '$table'");<br />
} else {<br />
$schema = addslashes("$schema");<br />
$num = $this->fetch_one("SELECT COUNT(*) FROM<br />
INFORMATION_SCHEMA.TABLES<br />
WHERE TABLE_NAME = '$table'<br />
AND TABLE_SCHEMA = '$schema'");<br />
}<br />
return $num[0];<br />
}<br />
/**<br />
* Devuelve un LIMIT valido para un SELECT del RBDM<br />
*<br />
* @param string $sql consulta sql<br />
* @return string<br />
*/<br />
public function limit($sql){<br />
$params = Util::getParams(func_get_args());<br />
$sql_new = $sql;<br />
if(isset($params['limit']) && is_numeric($params['limit'])){<br />
$sql_new = str_replace("SELECT ", "SELECT TOP $params[limit] ", $sql);<br />
} <br />
return $sql_new;<br />
}<br />
<br />
/**<br />
* Borra una tabla de la base de datos<br />
*<br />
* @param string $table<br />
* @return boolean<br />
*/<br />
public function drop_table($table, $if_exists=true){<br />
if($if_exists){<br />
$sql = "IF EXISTS(SELECT TABLE_NAME FROM<br />
INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '$table')<br />
DROP TABLE $table;";<br />
return $this->query($sql);<br />
} else {<br />
return $this->query("DROP TABLE $table");<br />
}<br />
}<br />
<br />
/**<br />
* Crea una tabla utilizando SQL nativo del RDBM<br />
*<br />
* TODO:<br />
* - Falta que el parametro index funcione. Este debe listar indices compuestos multipes y unicos<br />
* - Agregar el tipo de tabla que debe usarse (MsSQL)<br />
* - Soporte para campos autonumericos<br />
* - Soporte para llaves foraneas<br />
*<br />
* @param string $table<br />
* @param array $definition<br />
* @return boolean<br />
*/<br />
public function create_table($table, $definition, $index=array()){<br />
$create_sql = "CREATE TABLE $table (";<br />
if(!is_array($definition)){<br />
throw new KumbiaException("Definición invalida para crear la tabla '$table'");<br />
}<br />
$create_lines = array();<br />
$index = array();<br />
$unique_index = array();<br />
$primary = array();<br />
$not_null = "";<br />
$size = "";<br />
foreach($definition as $field => $field_def){<br />
if(isset($field_def['not_null'])){<br />
$not_null = $field_def['not_null'] ? 'NOT NULL' : '';<br />
} else {<br />
$not_null = "";<br />
}<br />
if(isset($field_def['size'])){<br />
$size = $field_def['size'] ? '('.$field_def['size'].')' : '';<br />
} else {<br />
$size = "";<br />
}<br />
if(isset($field_def['index'])){<br />
if($field_def['index']){<br />
$index[] = "INDEX(`$field`)";<br />
}<br />
}<br />
if(isset($field_def['unique_index'])){<br />
if($field_def['unique_index']){<br />
$index[] = "UNIQUE(`$field`)";<br />
}<br />
}<br />
if(isset($field_def['primary'])){<br />
if($field_def['primary']){<br />
$primary[] = "`$field`";<br />
}<br />
}<br />
if(isset($field_def['auto'])){<br />
if($field_def['auto']){<br />
$field_def['extra'] = isset($field_def['extra']) ? $field_def['extra']." AUTO_INCREMENT" : "AUTO_INCREMENT";<br />
}<br />
}<br />
if(isset($field_def['extra'])){<br />
$extra = $field_def['extra'];<br />
} else {<br />
$extra = "";<br />
}<br />
$create_lines[] = "`$field` ".$field_def['type'].$size.' '.$not_null.' '.$extra;<br />
}<br />
$create_sql.= join(',', $create_lines);<br />
$last_lines = array();<br />
if(count($primary)){<br />
$last_lines[] = 'PRIMARY KEY('.join(",", $primary).')';<br />
}<br />
if(count($index)){<br />
$last_lines[] = join(',', $index);<br />
}<br />
if(count($unique_index)){<br />
$last_lines[] = join(',', $unique_index);<br />
}<br />
if(count($last_lines)){<br />
$create_sql.= ','.join(',', $last_lines).')';<br />
}<br />
return $this->query($create_sql);<br />
<br />
}<br />
<br />
/**<br />
* Listar las tablas en la base de datos<br />
*<br />
* @return array<br />
*/<br />
public function list_tables(){<br />
return $this->fetch_all("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES");<br />
}<br />
<br />
/**<br />
* Listar los campos de una tabla<br />
*<br />
* @param string $table<br />
* @return array<br />
*/<br />
public function describe_table($table, $schema=''){<br />
$describe_table = $this->fetch_all("exec sp_columns @table_name = '$table'");<br />
$final_describe = array();<br />
foreach($describe_table as $field){<br />
if($field["TYPE_NAME"]=='int identity'){<br />
$final_describe[] = array(<br />
"Field" => $field["COLUMN_NAME"],<br />
"Type" => "int(".$field['LENGTH'].")",<br />
"Null" => $field['NULLABLE'] == 1 ? "YES" : "NO",<br />
"Key" => 'PRI',<br />
'Default' => $field['COLUMN_DEF']<br />
); <br />
}else{<br />
$final_describe[] = array(<br />
"Field" => $field["COLUMN_NAME"],<br />
"Type" => $field['LENGTH'] ? $field["TYPE_NAME"] : $field["TYPE_NAME"]."(".$field['LENGTH'].")",<br />
"Null" => $field['NULLABLE'] == 1 ? "YES" : "NO",<br />
"Key" => '',<br />
'Default' => $field['COLUMN_DEF'] <br />
); <br />
}<br />
}<br />
return $final_describe; <br />
//$sql = "SELECT A.name as Field,<br />
// (case when A.isnullable=0 then 'NO' when A.isnullable=1 then 'YES' end) as 'Null',<br />
// (case when A.colstat=1 then 'PRI' when A.colstat='' then '' end) as 'Key', <br />
// (case when A.cdefault=0 then 'NULL' when A.cdefault<>0 then '0' end) as 'Default'<br />
// FROM syscolumns A, sysobjects B WHERE A.ID = B.ID AND B.name = '$table'";<br />
//return $this->fetch_all($sql);<br />
}<br />
<br />
/**<br />
* Devuelve fila por fila el contenido de un select<br />
*<br />
* @param resource $result_query<br />
* @param string $class clase de objeto<br />
* @return object <br />
*/<br />
public function fetch_object($result_query=null, $class='stdClass'){<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
}<br />
return mssql_fetch_object($result_query, $class);<br />
}<br />
}<br />
<br />
</source><br />
<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
<br />
Realizado por: FiDeLio</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Adapter_MsSQL&diff=2993Adapter MsSQL2010-11-04T16:11:44Z<p>Fidelio: /* Adaptador para las bases MS SQL */</p>
<hr />
<div>== Adaptador para las bases MS SQL ==<br />
<br />
Este adaptador no utiliza PDO, es decir puedes configurar tu archivo database.ini de esta forma<br />
<br />
<source lang='ini'><br />
<br />
[development]<br />
host = localhost<br />
username = sa<br />
password = <br />
name = master<br />
type = '''mssql'''<br />
<br />
</source><br />
<br />
el código es el siguiente.<br />
<br />
<source lang='php'><br />
class DbMsSQL extends DbBase implements DbBaseInterface {<br />
<br />
/**<br />
* Resource de la Conexion a MsSQL<br />
*<br />
* @var resource<br />
*/<br />
public $id_connection;<br />
<br />
/**<br />
* Ultimo Resultado de una Query<br />
*<br />
* @var resource<br />
*/<br />
public $last_result_query;<br />
<br />
/**<br />
* Ultima sentencia SQL enviada a MsSQL<br />
*<br />
* @var string<br />
*/<br />
private $last_query;<br />
<br />
/**<br />
* Ultimo error generado por MsSQL<br />
*<br />
* @var string<br />
*/<br />
public $last_error;<br />
<br />
/**<br />
* Resultado de Array Asociativo<br />
*<br />
*/<br />
const DB_ASSOC = MSSQL_ASSOC;<br />
<br />
/**<br />
* Resultado de Array Asociativo y Numerico<br />
*<br />
*/<br />
const DB_BOTH = MSSQL_BOTH;<br />
<br />
/**<br />
* Resultado de Array Numerico<br />
*<br />
*/<br />
const DB_NUM = MSSQL_NUM;<br />
<br />
/**<br />
* Tipo de Dato Integer<br />
*<br />
*/<br />
const TYPE_INTEGER = 'INT';<br />
<br />
/**<br />
* Tipo de Dato Date<br />
*<br />
*/<br />
const TYPE_DATE = 'SMALLDATETIME';<br />
<br />
/**<br />
* Tipo de Dato Varchar<br />
*<br />
*/<br />
const TYPE_VARCHAR = 'VARCHAR';<br />
<br />
/**<br />
* Tipo de Dato Decimal<br />
*<br />
*/<br />
const TYPE_DECIMAL = 'DECIMAL';<br />
<br />
/**<br />
* Tipo de Dato Datetime<br />
*<br />
*/<br />
const TYPE_DATETIME = 'DATETIME';<br />
<br />
/**<br />
* Tipo de Dato Char<br />
*<br />
*/<br />
const TYPE_CHAR = 'CHAR';<br />
<br />
/**<br />
* Hace una conexion a la base de datos de MsSQL<br />
*<br />
* @param array $config<br />
* @return resource_connection<br />
*/<br />
public function connect($config){<br />
if(!extension_loaded('mssql')){<br />
throw new KumbiaException('Debe cargar la extensión de PHP llamada php_mssql');<br />
}<br />
if(!isset($config['port']) || !$config['port']) {<br />
$config['port'] = 1433;<br />
}<br />
if($this->id_connection = mssql_connect("{$config['host']},{$config['port']}", $config['username'], $config['password'], true)){<br />
if($config['name']!=='') {<br />
if(!mssql_select_db($config['name'], $this->id_connection)){<br />
throw new KumbiaException($this->error());<br />
}<br />
}<br />
return true;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
}<br />
/**<br />
* Efectua operaciones SQL sobre la base de datos<br />
*<br />
* @param string $sqlQuery<br />
* @return resource or false<br />
*/<br />
public function query($sql_query){<br />
$this->debug($sql_query);<br />
if($this->logger){<br />
Logger::debug($sql_query);<br />
}<br />
if(!$this->id_connection){<br />
$this->connect();<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
}<br />
$this->last_query = $sql_query;<br />
if($result_query = mssql_query($sql_query, $this->id_connection)){<br />
$this->last_result_query = $result_query;<br />
return $result_query;<br />
}else{<br />
$this->last_result_query = false;<br />
throw new KumbiaException($this->error(" al ejecutar <em>\"$sql_query\"</em>"));<br />
}<br />
}<br />
/**<br />
* Cierra la Conexión al Motor de Base de datos<br />
*/<br />
public function close(){<br />
if($this->id_connection) {<br />
return mssql_close();<br />
}<br />
return false;<br />
}<br />
/**<br />
* Devuelve fila por fila el contenido de un select<br />
*<br />
* @param resource $result_query<br />
* @param int $opt<br />
* @return array<br />
*/<br />
public function fetch_array($result_query='', $opt=MSSQL_BOTH){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
return mssql_fetch_array($result_query, $opt);<br />
}<br />
/**<br />
* Constructor de la Clase<br />
*<br />
* @param array $config<br />
*/<br />
public function __construct($config){<br />
$this->connect($config);<br />
}<br />
/**<br />
* Devuelve el numero de filas de un select<br />
*/<br />
public function num_rows($result_query=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($number_rows = mssql_num_rows($result_query))!==false){<br />
return $number_rows;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Devuelve el nombre de un campo en el resultado de un select<br />
*<br />
* @param int $number<br />
* @param resource $result_query<br />
* @return string<br />
*/<br />
public function field_name($number, $result_query=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($fieldName = mssql_field_name($result_query, $number))!==false){<br />
return $fieldName;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
/**<br />
* Se Mueve al resultado indicado por $number en un select<br />
*<br />
* @param int $number<br />
* @param resource $result_query<br />
* @return boolean<br />
*/<br />
public function data_seek($number, $result_query=''){<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($success = mssql_data_seek($result_query, $number))!==false){<br />
return $success;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Numero de Filas afectadas en un insert, update o delete<br />
*<br />
* @param resource $result_query<br />
* @return int<br />
*/<br />
public function affected_rows($result_query=''){<br />
if(($numberRows = mssql_affected_rows())!==false){<br />
return $numberRows;<br />
} else {<br />
$this->lastError = $this->error();<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Devuelve el error de MsSQL<br />
*<br />
* @return string<br />
*/<br />
public function error($err=''){<br />
if(!$this->id_connection){<br />
$this->last_error = mssql_get_last_message() ? mssql_get_last_message() : "[Error Desconocido en MsSQL: $err]";<br />
if($this->logger){<br />
Logger::error($this->last_error);<br />
}<br />
return $this->last_error;<br />
}<br />
$this->last_error = mssql_get_last_message() ? mssql_get_last_message() : "[Error Desconocido en MsSQL: $err]";<br />
$this->last_error.= $err;<br />
if($this->logger){<br />
Logger::error($this->last_error);<br />
}<br />
return $this->last_error;<br />
}<br />
/**<br />
* Devuelve el no error de MsSQL<br />
*<br />
* @return int<br />
*/<br />
public function no_error(){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
return mssql_errno();<br />
}<br />
/**<br />
* Devuelve el ultimo id autonumerico generado en la BD<br />
*<br />
* @return int<br />
*/<br />
public function last_insert_id($table='', $primary_key=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
$id = false;<br />
$result = mssql_query("select max({$primary_key}) from $table");<br />
if ($row = mssql_fetch_row($result)) {<br />
$this->id_connection = trim($row[0]);<br />
}<br />
mssql_free_result($res);<br />
return $this->id_connection;<br />
}<br />
/**<br />
* Verifica si una tabla existe o no<br />
*<br />
* @param string $table<br />
* @return boolean<br />
*/<br />
public function table_exists($table, $schema=''){<br />
$table = addslashes("$table");<br />
if($schema==''){<br />
$num = $this->fetch_one("SELECT COUNT(*) FROM<br />
INFORMATION_SCHEMA.TABLES<br />
WHERE TABLE_NAME = '$table'");<br />
} else {<br />
$schema = addslashes("$schema");<br />
$num = $this->fetch_one("SELECT COUNT(*) FROM<br />
INFORMATION_SCHEMA.TABLES<br />
WHERE TABLE_NAME = '$table'<br />
AND TABLE_SCHEMA = '$schema'");<br />
}<br />
return $num[0];<br />
}<br />
/**<br />
* Devuelve un LIMIT valido para un SELECT del RBDM<br />
*<br />
* @param string $sql consulta sql<br />
* @return string<br />
*/<br />
public function limit($sql){<br />
$params = Util::getParams(func_get_args());<br />
$sql_new = $sql;<br />
if(isset($params['limit']) && is_numeric($params['limit'])){<br />
$sql_new = str_replace("SELECT ", "SELECT TOP $params[limit] ", $sql);<br />
} <br />
return $sql_new;<br />
}<br />
<br />
/**<br />
* Borra una tabla de la base de datos<br />
*<br />
* @param string $table<br />
* @return boolean<br />
*/<br />
public function drop_table($table, $if_exists=true){<br />
if($if_exists){<br />
$sql = "IF EXISTS(SELECT TABLE_NAME FROM<br />
INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '$table')<br />
DROP TABLE $table;";<br />
return $this->query($sql);<br />
} else {<br />
return $this->query("DROP TABLE $table");<br />
}<br />
}<br />
<br />
/**<br />
* Crea una tabla utilizando SQL nativo del RDBM<br />
*<br />
* TODO:<br />
* - Falta que el parametro index funcione. Este debe listar indices compuestos multipes y unicos<br />
* - Agregar el tipo de tabla que debe usarse (MsSQL)<br />
* - Soporte para campos autonumericos<br />
* - Soporte para llaves foraneas<br />
*<br />
* @param string $table<br />
* @param array $definition<br />
* @return boolean<br />
*/<br />
public function create_table($table, $definition, $index=array()){<br />
$create_sql = "CREATE TABLE $table (";<br />
if(!is_array($definition)){<br />
throw new KumbiaException("Definición invalida para crear la tabla '$table'");<br />
}<br />
$create_lines = array();<br />
$index = array();<br />
$unique_index = array();<br />
$primary = array();<br />
$not_null = "";<br />
$size = "";<br />
foreach($definition as $field => $field_def){<br />
if(isset($field_def['not_null'])){<br />
$not_null = $field_def['not_null'] ? 'NOT NULL' : '';<br />
} else {<br />
$not_null = "";<br />
}<br />
if(isset($field_def['size'])){<br />
$size = $field_def['size'] ? '('.$field_def['size'].')' : '';<br />
} else {<br />
$size = "";<br />
}<br />
if(isset($field_def['index'])){<br />
if($field_def['index']){<br />
$index[] = "INDEX(`$field`)";<br />
}<br />
}<br />
if(isset($field_def['unique_index'])){<br />
if($field_def['unique_index']){<br />
$index[] = "UNIQUE(`$field`)";<br />
}<br />
}<br />
if(isset($field_def['primary'])){<br />
if($field_def['primary']){<br />
$primary[] = "`$field`";<br />
}<br />
}<br />
if(isset($field_def['auto'])){<br />
if($field_def['auto']){<br />
$field_def['extra'] = isset($field_def['extra']) ? $field_def['extra']." AUTO_INCREMENT" : "AUTO_INCREMENT";<br />
}<br />
}<br />
if(isset($field_def['extra'])){<br />
$extra = $field_def['extra'];<br />
} else {<br />
$extra = "";<br />
}<br />
$create_lines[] = "`$field` ".$field_def['type'].$size.' '.$not_null.' '.$extra;<br />
}<br />
$create_sql.= join(',', $create_lines);<br />
$last_lines = array();<br />
if(count($primary)){<br />
$last_lines[] = 'PRIMARY KEY('.join(",", $primary).')';<br />
}<br />
if(count($index)){<br />
$last_lines[] = join(',', $index);<br />
}<br />
if(count($unique_index)){<br />
$last_lines[] = join(',', $unique_index);<br />
}<br />
if(count($last_lines)){<br />
$create_sql.= ','.join(',', $last_lines).')';<br />
}<br />
return $this->query($create_sql);<br />
<br />
}<br />
<br />
/**<br />
* Listar las tablas en la base de datos<br />
*<br />
* @return array<br />
*/<br />
public function list_tables(){<br />
return $this->fetch_all("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES");<br />
}<br />
<br />
/**<br />
* Listar los campos de una tabla<br />
*<br />
* @param string $table<br />
* @return array<br />
*/<br />
public function describe_table($table, $schema=''){<br />
$describe_table = $this->fetch_all("exec sp_columns @table_name = '$table'");<br />
$final_describe = array();<br />
foreach($describe_table as $field){<br />
if($field["TYPE_NAME"]=='int identity'){<br />
$final_describe[] = array(<br />
"Field" => $field["COLUMN_NAME"],<br />
"Type" => "int(".$field['LENGTH'].")",<br />
"Null" => $field['NULLABLE'] == 1 ? "YES" : "NO",<br />
"Key" => 'PRI',<br />
'Default' => $field['COLUMN_DEF']<br />
); <br />
}else{<br />
$final_describe[] = array(<br />
"Field" => $field["COLUMN_NAME"],<br />
"Type" => $field['LENGTH'] ? $field["TYPE_NAME"] : $field["TYPE_NAME"]."(".$field['LENGTH'].")",<br />
"Null" => $field['NULLABLE'] == 1 ? "YES" : "NO",<br />
"Key" => '',<br />
'Default' => $field['COLUMN_DEF'] <br />
); <br />
}<br />
}<br />
return $final_describe; <br />
//$sql = "SELECT A.name as Field,<br />
// (case when A.isnullable=0 then 'NO' when A.isnullable=1 then 'YES' end) as 'Null',<br />
// (case when A.colstat=1 then 'PRI' when A.colstat='' then '' end) as 'Key', <br />
// (case when A.cdefault=0 then 'NULL' when A.cdefault<>0 then '0' end) as 'Default'<br />
// FROM syscolumns A, sysobjects B WHERE A.ID = B.ID AND B.name = '$table'";<br />
//return $this->fetch_all($sql);<br />
}<br />
<br />
/**<br />
* Devuelve fila por fila el contenido de un select<br />
*<br />
* @param resource $result_query<br />
* @param string $class clase de objeto<br />
* @return object <br />
*/<br />
public function fetch_object($result_query=null, $class='stdClass'){<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
}<br />
return mssql_fetch_object($result_query, $class);<br />
}<br />
}<br />
<br />
</source><br />
<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
<br />
Realizado por: FiDeLio</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Adapter_MsSQL&diff=2992Adapter MsSQL2010-11-04T16:11:06Z<p>Fidelio: Página creada con '== Adaptador para las bases MS SQL == Este adaptador no utiliza PDO, es decir puedes configurar tu archivo database.ini de esta forma <source> [development] host = localhost ...'</p>
<hr />
<div>== Adaptador para las bases MS SQL ==<br />
<br />
Este adaptador no utiliza PDO, es decir puedes configurar tu archivo database.ini de esta forma<br />
<br />
<source><br />
<br />
[development]<br />
host = localhost<br />
username = sa<br />
password = <br />
name = master<br />
type = '''mssql'''<br />
<br />
</source><br />
<br />
el código es el siguiente.<br />
<br />
<source lang='php'><br />
class DbMsSQL extends DbBase implements DbBaseInterface {<br />
<br />
/**<br />
* Resource de la Conexion a MsSQL<br />
*<br />
* @var resource<br />
*/<br />
public $id_connection;<br />
<br />
/**<br />
* Ultimo Resultado de una Query<br />
*<br />
* @var resource<br />
*/<br />
public $last_result_query;<br />
<br />
/**<br />
* Ultima sentencia SQL enviada a MsSQL<br />
*<br />
* @var string<br />
*/<br />
private $last_query;<br />
<br />
/**<br />
* Ultimo error generado por MsSQL<br />
*<br />
* @var string<br />
*/<br />
public $last_error;<br />
<br />
/**<br />
* Resultado de Array Asociativo<br />
*<br />
*/<br />
const DB_ASSOC = MSSQL_ASSOC;<br />
<br />
/**<br />
* Resultado de Array Asociativo y Numerico<br />
*<br />
*/<br />
const DB_BOTH = MSSQL_BOTH;<br />
<br />
/**<br />
* Resultado de Array Numerico<br />
*<br />
*/<br />
const DB_NUM = MSSQL_NUM;<br />
<br />
/**<br />
* Tipo de Dato Integer<br />
*<br />
*/<br />
const TYPE_INTEGER = 'INT';<br />
<br />
/**<br />
* Tipo de Dato Date<br />
*<br />
*/<br />
const TYPE_DATE = 'SMALLDATETIME';<br />
<br />
/**<br />
* Tipo de Dato Varchar<br />
*<br />
*/<br />
const TYPE_VARCHAR = 'VARCHAR';<br />
<br />
/**<br />
* Tipo de Dato Decimal<br />
*<br />
*/<br />
const TYPE_DECIMAL = 'DECIMAL';<br />
<br />
/**<br />
* Tipo de Dato Datetime<br />
*<br />
*/<br />
const TYPE_DATETIME = 'DATETIME';<br />
<br />
/**<br />
* Tipo de Dato Char<br />
*<br />
*/<br />
const TYPE_CHAR = 'CHAR';<br />
<br />
/**<br />
* Hace una conexion a la base de datos de MsSQL<br />
*<br />
* @param array $config<br />
* @return resource_connection<br />
*/<br />
public function connect($config){<br />
if(!extension_loaded('mssql')){<br />
throw new KumbiaException('Debe cargar la extensión de PHP llamada php_mssql');<br />
}<br />
if(!isset($config['port']) || !$config['port']) {<br />
$config['port'] = 1433;<br />
}<br />
if($this->id_connection = mssql_connect("{$config['host']},{$config['port']}", $config['username'], $config['password'], true)){<br />
if($config['name']!=='') {<br />
if(!mssql_select_db($config['name'], $this->id_connection)){<br />
throw new KumbiaException($this->error());<br />
}<br />
}<br />
return true;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
}<br />
/**<br />
* Efectua operaciones SQL sobre la base de datos<br />
*<br />
* @param string $sqlQuery<br />
* @return resource or false<br />
*/<br />
public function query($sql_query){<br />
$this->debug($sql_query);<br />
if($this->logger){<br />
Logger::debug($sql_query);<br />
}<br />
if(!$this->id_connection){<br />
$this->connect();<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
}<br />
$this->last_query = $sql_query;<br />
if($result_query = mssql_query($sql_query, $this->id_connection)){<br />
$this->last_result_query = $result_query;<br />
return $result_query;<br />
}else{<br />
$this->last_result_query = false;<br />
throw new KumbiaException($this->error(" al ejecutar <em>\"$sql_query\"</em>"));<br />
}<br />
}<br />
/**<br />
* Cierra la Conexión al Motor de Base de datos<br />
*/<br />
public function close(){<br />
if($this->id_connection) {<br />
return mssql_close();<br />
}<br />
return false;<br />
}<br />
/**<br />
* Devuelve fila por fila el contenido de un select<br />
*<br />
* @param resource $result_query<br />
* @param int $opt<br />
* @return array<br />
*/<br />
public function fetch_array($result_query='', $opt=MSSQL_BOTH){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
return mssql_fetch_array($result_query, $opt);<br />
}<br />
/**<br />
* Constructor de la Clase<br />
*<br />
* @param array $config<br />
*/<br />
public function __construct($config){<br />
$this->connect($config);<br />
}<br />
/**<br />
* Devuelve el numero de filas de un select<br />
*/<br />
public function num_rows($result_query=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($number_rows = mssql_num_rows($result_query))!==false){<br />
return $number_rows;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Devuelve el nombre de un campo en el resultado de un select<br />
*<br />
* @param int $number<br />
* @param resource $result_query<br />
* @return string<br />
*/<br />
public function field_name($number, $result_query=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($fieldName = mssql_field_name($result_query, $number))!==false){<br />
return $fieldName;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
/**<br />
* Se Mueve al resultado indicado por $number en un select<br />
*<br />
* @param int $number<br />
* @param resource $result_query<br />
* @return boolean<br />
*/<br />
public function data_seek($number, $result_query=''){<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
if(!$result_query){<br />
return false;<br />
}<br />
}<br />
if(($success = mssql_data_seek($result_query, $number))!==false){<br />
return $success;<br />
} else {<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Numero de Filas afectadas en un insert, update o delete<br />
*<br />
* @param resource $result_query<br />
* @return int<br />
*/<br />
public function affected_rows($result_query=''){<br />
if(($numberRows = mssql_affected_rows())!==false){<br />
return $numberRows;<br />
} else {<br />
$this->lastError = $this->error();<br />
throw new KumbiaException($this->error());<br />
}<br />
return false;<br />
}<br />
<br />
/**<br />
* Devuelve el error de MsSQL<br />
*<br />
* @return string<br />
*/<br />
public function error($err=''){<br />
if(!$this->id_connection){<br />
$this->last_error = mssql_get_last_message() ? mssql_get_last_message() : "[Error Desconocido en MsSQL: $err]";<br />
if($this->logger){<br />
Logger::error($this->last_error);<br />
}<br />
return $this->last_error;<br />
}<br />
$this->last_error = mssql_get_last_message() ? mssql_get_last_message() : "[Error Desconocido en MsSQL: $err]";<br />
$this->last_error.= $err;<br />
if($this->logger){<br />
Logger::error($this->last_error);<br />
}<br />
return $this->last_error;<br />
}<br />
/**<br />
* Devuelve el no error de MsSQL<br />
*<br />
* @return int<br />
*/<br />
public function no_error(){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
return mssql_errno();<br />
}<br />
/**<br />
* Devuelve el ultimo id autonumerico generado en la BD<br />
*<br />
* @return int<br />
*/<br />
public function last_insert_id($table='', $primary_key=''){<br />
if(!$this->id_connection){<br />
return false;<br />
}<br />
$id = false;<br />
$result = mssql_query("select max({$primary_key}) from $table");<br />
if ($row = mssql_fetch_row($result)) {<br />
$this->id_connection = trim($row[0]);<br />
}<br />
mssql_free_result($res);<br />
return $this->id_connection;<br />
}<br />
/**<br />
* Verifica si una tabla existe o no<br />
*<br />
* @param string $table<br />
* @return boolean<br />
*/<br />
public function table_exists($table, $schema=''){<br />
$table = addslashes("$table");<br />
if($schema==''){<br />
$num = $this->fetch_one("SELECT COUNT(*) FROM<br />
INFORMATION_SCHEMA.TABLES<br />
WHERE TABLE_NAME = '$table'");<br />
} else {<br />
$schema = addslashes("$schema");<br />
$num = $this->fetch_one("SELECT COUNT(*) FROM<br />
INFORMATION_SCHEMA.TABLES<br />
WHERE TABLE_NAME = '$table'<br />
AND TABLE_SCHEMA = '$schema'");<br />
}<br />
return $num[0];<br />
}<br />
/**<br />
* Devuelve un LIMIT valido para un SELECT del RBDM<br />
*<br />
* @param string $sql consulta sql<br />
* @return string<br />
*/<br />
public function limit($sql){<br />
$params = Util::getParams(func_get_args());<br />
$sql_new = $sql;<br />
if(isset($params['limit']) && is_numeric($params['limit'])){<br />
$sql_new = str_replace("SELECT ", "SELECT TOP $params[limit] ", $sql);<br />
} <br />
return $sql_new;<br />
}<br />
<br />
/**<br />
* Borra una tabla de la base de datos<br />
*<br />
* @param string $table<br />
* @return boolean<br />
*/<br />
public function drop_table($table, $if_exists=true){<br />
if($if_exists){<br />
$sql = "IF EXISTS(SELECT TABLE_NAME FROM<br />
INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '$table')<br />
DROP TABLE $table;";<br />
return $this->query($sql);<br />
} else {<br />
return $this->query("DROP TABLE $table");<br />
}<br />
}<br />
<br />
/**<br />
* Crea una tabla utilizando SQL nativo del RDBM<br />
*<br />
* TODO:<br />
* - Falta que el parametro index funcione. Este debe listar indices compuestos multipes y unicos<br />
* - Agregar el tipo de tabla que debe usarse (MsSQL)<br />
* - Soporte para campos autonumericos<br />
* - Soporte para llaves foraneas<br />
*<br />
* @param string $table<br />
* @param array $definition<br />
* @return boolean<br />
*/<br />
public function create_table($table, $definition, $index=array()){<br />
$create_sql = "CREATE TABLE $table (";<br />
if(!is_array($definition)){<br />
throw new KumbiaException("Definición invalida para crear la tabla '$table'");<br />
}<br />
$create_lines = array();<br />
$index = array();<br />
$unique_index = array();<br />
$primary = array();<br />
$not_null = "";<br />
$size = "";<br />
foreach($definition as $field => $field_def){<br />
if(isset($field_def['not_null'])){<br />
$not_null = $field_def['not_null'] ? 'NOT NULL' : '';<br />
} else {<br />
$not_null = "";<br />
}<br />
if(isset($field_def['size'])){<br />
$size = $field_def['size'] ? '('.$field_def['size'].')' : '';<br />
} else {<br />
$size = "";<br />
}<br />
if(isset($field_def['index'])){<br />
if($field_def['index']){<br />
$index[] = "INDEX(`$field`)";<br />
}<br />
}<br />
if(isset($field_def['unique_index'])){<br />
if($field_def['unique_index']){<br />
$index[] = "UNIQUE(`$field`)";<br />
}<br />
}<br />
if(isset($field_def['primary'])){<br />
if($field_def['primary']){<br />
$primary[] = "`$field`";<br />
}<br />
}<br />
if(isset($field_def['auto'])){<br />
if($field_def['auto']){<br />
$field_def['extra'] = isset($field_def['extra']) ? $field_def['extra']." AUTO_INCREMENT" : "AUTO_INCREMENT";<br />
}<br />
}<br />
if(isset($field_def['extra'])){<br />
$extra = $field_def['extra'];<br />
} else {<br />
$extra = "";<br />
}<br />
$create_lines[] = "`$field` ".$field_def['type'].$size.' '.$not_null.' '.$extra;<br />
}<br />
$create_sql.= join(',', $create_lines);<br />
$last_lines = array();<br />
if(count($primary)){<br />
$last_lines[] = 'PRIMARY KEY('.join(",", $primary).')';<br />
}<br />
if(count($index)){<br />
$last_lines[] = join(',', $index);<br />
}<br />
if(count($unique_index)){<br />
$last_lines[] = join(',', $unique_index);<br />
}<br />
if(count($last_lines)){<br />
$create_sql.= ','.join(',', $last_lines).')';<br />
}<br />
return $this->query($create_sql);<br />
<br />
}<br />
<br />
/**<br />
* Listar las tablas en la base de datos<br />
*<br />
* @return array<br />
*/<br />
public function list_tables(){<br />
return $this->fetch_all("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES");<br />
}<br />
<br />
/**<br />
* Listar los campos de una tabla<br />
*<br />
* @param string $table<br />
* @return array<br />
*/<br />
public function describe_table($table, $schema=''){<br />
$describe_table = $this->fetch_all("exec sp_columns @table_name = '$table'");<br />
$final_describe = array();<br />
foreach($describe_table as $field){<br />
if($field["TYPE_NAME"]=='int identity'){<br />
$final_describe[] = array(<br />
"Field" => $field["COLUMN_NAME"],<br />
"Type" => "int(".$field['LENGTH'].")",<br />
"Null" => $field['NULLABLE'] == 1 ? "YES" : "NO",<br />
"Key" => 'PRI',<br />
'Default' => $field['COLUMN_DEF']<br />
); <br />
}else{<br />
$final_describe[] = array(<br />
"Field" => $field["COLUMN_NAME"],<br />
"Type" => $field['LENGTH'] ? $field["TYPE_NAME"] : $field["TYPE_NAME"]."(".$field['LENGTH'].")",<br />
"Null" => $field['NULLABLE'] == 1 ? "YES" : "NO",<br />
"Key" => '',<br />
'Default' => $field['COLUMN_DEF'] <br />
); <br />
}<br />
}<br />
return $final_describe; <br />
//$sql = "SELECT A.name as Field,<br />
// (case when A.isnullable=0 then 'NO' when A.isnullable=1 then 'YES' end) as 'Null',<br />
// (case when A.colstat=1 then 'PRI' when A.colstat='' then '' end) as 'Key', <br />
// (case when A.cdefault=0 then 'NULL' when A.cdefault<>0 then '0' end) as 'Default'<br />
// FROM syscolumns A, sysobjects B WHERE A.ID = B.ID AND B.name = '$table'";<br />
//return $this->fetch_all($sql);<br />
}<br />
<br />
/**<br />
* Devuelve fila por fila el contenido de un select<br />
*<br />
* @param resource $result_query<br />
* @param string $class clase de objeto<br />
* @return object <br />
*/<br />
public function fetch_object($result_query=null, $class='stdClass'){<br />
if(!$result_query){<br />
$result_query = $this->last_result_query;<br />
}<br />
return mssql_fetch_object($result_query, $class);<br />
}<br />
}<br />
<br />
</source><br />
<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
<br />
Realizado por: FiDeLio</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Como_Programar_Consultas_Paginadas_en_KUMBIAPHP&diff=2982Como Programar Consultas Paginadas en KUMBIAPHP2010-11-02T04:17:39Z<p>Fidelio: </p>
<hr />
<div>== Ejemplo probado del uso de paginate en Beta 2 ==<br />
<br />
Controlador: consultarpaises_controller.php<br />
<source lang='php'><br />
<?php<br />
Load::models('pais');<br />
class ConsultarPaisesController extends ApplicationController {<br />
public function index($page=1)<br />
{<br />
$pais = new Pais();<br />
$this->listPaises = $pais->getPaises($page);<br />
}<br />
}<br />
?><br />
</source><br />
<br />
''' Modelo: pais.php '''<br />
<br />
<source lang='php'><br />
<?php<br />
class Pais extends ActiveRecord {<br />
public function getPaises($page, $ppage=25)<br />
{<br />
return $this->paginate("page: $page", "per_page: $ppage", 'order: nombre asc');<br />
}<br />
public function getNombre($id)<br />
{<br />
return $this->find($id)->nombre;<br />
}<br />
}<br />
?><br />
</source><br />
<br />
''' Vista: index.phtml de views/consultarpaises '''<br />
<br />
<source lang='php'><br />
<div class="content"><br />
<?php echo View::content();?><br />
<h3>Paises</h3><br />
<ul><br />
<?php foreach ($listPaises->items as $item):?><br />
<li><br />
<?php if ($item->id == 48) echo Html::link("consultardepartamentospais/index/1/$item->id", $item->codigo); else echo Html::link("consultarciudadespais/index/1/$item->id", $item->codigo);?> - <?php echo $item->nombre?><br />
</li><br />
<?php endforeach;?><br />
</ul><br />
<?php if($listPaises->prev) echo Html::linkAction("index/$listPaises->prev/", '<< Anterior |');?><br />
<?php if($listPaises->next) echo Html::linkAction("index/$listPaises->next/", 'Próximo >>');?><br />
</div><br />
</source><br />
<br />
Como se nota con Html::link("consultarciudadespais/index/1/$item->id"?> permite el despliegue de las ciudades del respectivo pais entonces:<br />
<br />
''' Controlador: consultarciudadespais_controller.php '''<br />
<br />
<source lang='php'><br />
<?php<br />
Load::models('ciudad', 'pais');<br />
class ConsultarCiudadesPaisController extends ApplicationController {<br />
public function index($page=1, $paisid=48)<br />
{<br />
$paises = new Pais();<br />
$this->nombredelpais = $paises->getNombre($paisid);<br />
$ciudadespais = new Ciudad();<br />
$this->listCiudadesPais = $ciudadespais->getCiudadesPais($page, $paisid);<br />
}<br />
}<br />
?><br />
</sorce><br />
<br />
La funcion index tiene el parametro $paisid con default 48 que en mi caso es el id de Colombia<br />
<br />
''' Modelo: ciudad.php '''<br />
<br />
<source lang='php'><br />
<?php<br />
class Ciudad extends ActiveRecord {<br />
public function getCiudadesPais($page, $paisid, $ppage=25)<br />
{<br />
return $this->paginate("page: $page", "pais_id = $paisid", "per_page: $ppage", 'order: nombre asc');<br />
}<br />
public function getCiudadesDepartamento($page, $departamentoid, $ppage=25)<br />
{<br />
return $this->paginate("page: $page", "departamento_id = $departamentoid", "per_page: $ppage", 'order: nombre asc');<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Al invocar paginate se debe incluir el parametro "pais_id = $paisid" con comillas dobles para que resuelva $paisid<br />
<br />
''' Vista: index.phtml de views/consultarciudadespais '''<br />
<br />
<source lang='php'><br />
<div class="content"><br />
<?php echo View::content();?><br />
<h3>Ciudades de <?php echo $nombredelpais;?></h3><br />
<ul><br />
<?php foreach ($listCiudadesPais->items as $item):?><br />
<li><br />
<?php if ($item->codigo == " ") echo "ZZZ"; else echo $item->codigo;?> - <?php echo $item->nombre;?><br />
</li><br />
<?php endforeach;?><br />
</ul><br />
<?php if($listCiudadesPais->prev) echo Html::linkAction("index/$listCiudadesPais->prev/$item->pais_id/", '<< Anterior |');?><br />
<?php if($listCiudadesPais->next) echo Html::linkAction("index/$listCiudadesPais->next/$item->pais_id/", 'Próximo >>');?><br />
</div><br />
</sorce><br />
<br />
Ahora para Colombia el Html::link("consultardepartamentospais/index/1/$item->id"?> permite el despliegue de los departamentos del respectivo pais entonces:<br />
<br />
''' Controlador: consultardepartamentospais_controller.php '''<br />
<br />
<source lang='php'><br />
<?php<br />
Load::models('departamento', 'pais');<br />
class ConsultarDepartamentosPaisController extends ApplicationController {<br />
public function index($page=1, $paisid=48)<br />
{<br />
$paises = new Pais();<br />
$this->nombredelpais = $paises->getNombre($paisid);<br />
$departamentospais = new Departamento();<br />
$this->listDepartamentosPais = $departamentospais->getDepartamentosPais($page, $paisid);<br />
}<br />
}<br />
?><br />
</sorce><br />
<br />
<br />
''' Modelo: departamento.php '''<br />
<br />
<source lang='php'><br />
<?php<br />
class Departamento extends ActiveRecord {<br />
public function getDepartamentosPais($page, $paisid, $ppage=25)<br />
{<br />
return $this->paginate("page: $page", "pais_id = $paisid", "per_page: $ppage", 'order: nombre asc');<br />
}<br />
public function getNombre($id)<br />
{<br />
return $this->find($id)->nombre;<br />
}<br />
public function getIdPais($id)<br />
{<br />
return $this->find($id)->pais_id;<br />
}<br />
}<br />
?><br />
</source><br />
<br />
''' Vista: index.phtml de views/consultardepartamentospais '''<br />
<br />
<source lang='php'><br />
<div class="content"><br />
<?php echo View::content();?><br />
<h3>Departamentos de <?php echo $nombredelpais;?></h3><br />
<ul><br />
<?php foreach ($listDepartamentosPais->items as $item):?><br />
<li><br />
<?php echo Html::link("consultarciudadesdepartamento/index/1/$item->id", str_pad($item->codigonumerico, 2, "0", STR_PAD_LEFT));?> - <?php echo $item->nombre;?><br />
</li><br />
<?php endforeach;?><br />
</ul><br />
<?php if($listDepartamentosPais->prev) echo Html::linkAction("index/$listDepartamentosPais->prev/$item->pais_id/", '<< Anterior |');?><br />
<?php if($listDepartamentosPais->next) echo Html::linkAction("index/$listDepartamentosPais->next/$item->pais_id/", 'Próximo >>');?><br />
</div><br />
</source><br />
<br />
<br />
Como se nota Html::link("consultarciudadesdepartamento/index/1/$item->id"?> permite el despliegue de los departamentos del respectivo pais entonces:<br />
<br />
''' Controlador: consultarciudadesdepartamento_controller.php '''<br />
<br />
<source lang='php'><br />
<?php<br />
Load::models('ciudad', 'departamento', 'pais');<br />
class ConsultarCiudadesDepartamentoController extends ApplicationController {<br />
public function index($page=1, $departamentoid=15)<br />
{<br />
$departamentos = new Departamento();<br />
$this->nombredeldepartamento = $departamentos->getNombre($departamentoid);<br />
$this->idpais = $departamentos->getIdPais($departamentoid);<br />
$paises = new Pais();<br />
$this->nombredelpais = $paises->getNombre($this->idpais);<br />
$ciudadesdepartamento = new Ciudad();<br />
$this->listCiudadesDepartamento = $ciudadesdepartamento->getCiudadesDepartamento($page, $departamentoid);<br />
}<br />
}<br />
?><br />
</source><br />
<br />
''' Vista: index.phtml de views/consultarciudadesdepartamento '''<br />
<br />
<source lang='php'><br />
<div class="content"><br />
<?php echo View::content();?><br />
<h3>Ciudades de <?php echo $nombredeldepartamento;?> - <?php echo $nombredelpais;?></h3><br />
<ul><br />
<?php foreach ($listCiudadesDepartamento->items as $item):?><br />
<li><br />
<?php if ($item->codigo == " ") echo "ZZZ"; else echo $item->codigo;?> - <?php echo str_pad($item->codigonumerico, 3, "0", STR_PAD_LEFT);?> - <?php echo $item->nombre;?><br />
</li><br />
<?php endforeach;?><br />
</ul><br />
<?php if($listCiudadesDepartamento->prev) echo Html::linkAction("index/$listCiudadesDepartamento->prev/$item->departamento_id/", '<< Anterior |');?><br />
<?php if($listCiudadesDepartamento->next) echo Html::linkAction("index/$listCiudadesDepartamento->next/$item->departamento_id/", 'Próximo >>');?><br />
</div><br />
</source><br />
<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
--[[Usuario:Cbeltranv|Cbeltranv]] 02:56 2 nov 2010 (UTC)</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Generar_y_Leer_archivos_excel_(xls)_con_KumbiaPHP&diff=2962Generar y Leer archivos excel (xls) con KumbiaPHP2010-10-25T14:43:51Z<p>Fidelio: /* Programación MVC */</p>
<hr />
<div>= Creando un archivo excel en KumbiaPHP =<br />
<br />
Esto es un tema sencillo, solo hay que implementar las buenas practicas de pogramación.<br />
<br />
Para implemantar el tema de las 3 capas veamos un ejemplo sencillo<br />
<br />
listado de nombres de usuarios. (id y nombre);<br />
<br />
= Tabla de usuarios =<br />
<br />
<source lang="mysql"><br />
CREATE TABLE `usuarios` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />
</source><br />
<br />
<br />
= Programación MVC =<br />
<br />
'''Modelo'''<br />
<br />
Creamos nuestro modelo llamado usuarios.php<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Modelo Usuarios<br />
* <br />
* @category app<br />
* @package models<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
class Usuarios extends ActiveRecord{<br />
public function findByName($conditions){<br />
return $this->find("nombre like '$conditions'");<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos un controlador.<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Controlador Usuarios<br />
* <br />
* @category app<br />
* @package controllers<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
Load::lib('excel');<br />
Load::model('usuarios');<br />
class Usuarios extends ApplicationController{<br />
public function sendFile(){<br />
$this->set_response('xls');<br />
$usuarios = new Usuarios();<br />
if(!$this->usuarios = $usuarios->findByName('%')){<br />
Flash::warning('No existen registros para exportar');<br />
$this->render(NULL);<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos una vista con el nombre ''' sendFile.xls.phtml ''' por que le estamos indicando una salida xls ''' $this->set_response('xls') '''<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista sendFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
<br />
//invoco la clase para generar el libro excel<br />
$libro = new Spreadsheet_Excel_Writer();<br />
<br />
//creo una hoja, es decir, puedo crear N hojas<br />
$hoja1 = $libro->addWorksheet("Hoja1");<br />
<br />
//charset<br />
$hoja1->setInputEncoding('utf-8');<br />
<br />
//Formato de letra, en este caso negrita, existen más, números, fecha, etc...<br />
$negrita =& $libro->addFormat();<br />
$negrita->setBold();<br />
<br />
//titulos<br />
$hoja1->write(0, 0, "ID", $negrita);<br />
$hoja1->write(0, 1, "NOMBRE", $negrita);<br />
<br />
//detalle<br />
$row = 1;<br />
foreach($usuarios as $usuario):<br />
$hoja1->write($row, 0, $usuario->id);<br />
$hoja1->write($row, 1, $usuario->nombre);<br />
$row++;<br />
endforeach;<br />
$libro->send("Libro1.xls");<br />
$libro->close();<br />
?><br />
</source><br />
<br />
Con esto tenemos un ejemplo sencillo y bien hecho, no deben olvidar que una programacion MVC les ayudara con el tiempo a realizar mantenciones y en este caso hacer otra salida que no sea un excel, por ejemplo un pdf, solo hay que crear una vista sin tocar el controlador ni el modelo.<br />
<br />
El modelo debe tener contacto con la base de datos. el controlador solo envia esos datos a la vista, pero ni uno de los dos deben estar en contacto con la base de datos.<br />
<br />
= Importando un archivo excel en KumbiaPHP =<br />
<br />
Esta segunda parte vamos a tomar un archivo similar al que exportamos para poder poblar nuestraba base, aplicaremos la misma libreria.<br />
<br />
la forma de implementar este tema es primero subir el archo xls al servidor, para esto se debe dejar en una carpeta<br />
que tenga acceso de lectura y escritura. despues que el archivo este disponible en el servidor, leeremos el excel y mostraremos los primeros 10 registros, para que el usuario sepa que el archivo que va a importar es el correcto. y con un boton finalizar importremos los datos que se almaceno en memoria (array), yo lo implemento de esta manera por varias razones, y una que es la mas importante, la rapidez, es mas rápido poblar un array en vez estar poblando directo a la base, y una vez que el usuario este conforme poble ese array a la base. También es bueno utilizar las transacciones de la base, por que puede ocurrir un error, y seria bueno hacerlo desde cero, en vez que este buscando cuantos registro quedaron.<br />
<br />
utilizaremos el mismo controller usuarios.<br />
<br />
con el control FILE subimos un archivo al servidor. para esto utilizamos una vista, llama readFile.phtml<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista readFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<?php View::content() ?><br />
<?php echo form_tag("$controller_name/$action_name", "enctype: multipart/form-data")?><br />
<table><br />
<tr><br />
<th>ARCHIVO</th><br />
<th>&nbsp;</th><br />
</tr><br />
<tr><br />
<td><?php echo file_field_tag('file') ?></td><br />
<td><?php echo submit_tag('Leer Excel')?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag() ?><br />
</source><br />
<br />
<br />
en el controller con la accion firstStep subimos el excel y creamos el array<br />
<br />
<source lang='php'><br />
/**<br />
* Subimos el archivo excel y creamos un array con los indices<br />
* para ser insertados más tarde en la base<br />
**/<br />
public function firstStep(){<br />
$new_name = "pagos.xls";<br />
$dir = "temp";<br />
if(!$this->upload_file("file",$dir,$new_name)){<br />
Flash::success("Error al intentar de subir el archivo");<br />
}else{<br />
error_reporting(E_ALL ^ E_NOTICE);<br />
Session::unset_data('array_pagos');<br />
$reader = new Spreadsheet_Excel_Reader(); <br />
$reader->setUTFEncoder('UTF8');<br />
$reader->setOutputEncoding('UTF8');<br />
$reader->read("$dir/$new_name");<br />
for ($i = 2; $i <= 65535; $i++){// EMPEZAMOS A LEER DESDE LA SEGUNDA LINEA 'POR QUE LA 1° SON LOS TITULOS'<br />
$array_usuarios[] = array(<br />
'id' => $reader->sheets[0]['cells'][$i][1],<br />
'nombre' => $reader->sheets[0]['cells'][$i][2]<br />
); <br />
$c=$i+1;<br />
if($reader->sheets[0]['cells'][$c][1]=="") $i = 65535; //LEEMOS HASTA EL FINAL, PERO SI ENCUENTRA UN ESPACIO BASIO TERMINA DE LEER<br />
}<br />
Session::set('array_usuarios', $array_usuarios); <br />
}<br />
}<br />
</source><br />
<br />
vista firstStep.phtml, muestra siempre los primeros 10 registros. En una tabla.<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista firstStep<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<br />
<table><br />
<tr><br />
<th>ID</th><br />
<th>NOMBRE</th><br />
</tr><br />
<?php for($i=0;$i<10;$i++){?><br />
<tr><br />
<td><?php echo $array_usuarios[$i]['id'] ?></td><br />
<td><?php echo $array_usuarios[$i]['nombre'] ?></td><br />
</tr><br />
<?php } ?><br />
</table><br />
<?php <br />
echo form_tag("$controller_name/insertArray");<br />
echo submit_tag("Agregar");<br />
echo end_form_tag();<br />
?><br />
</source><br />
<br />
insertamos los datos a la base. <br />
<br />
Controlador usuarios_controller.php<br />
<br />
<source lang='php'><br />
<br />
/**<br />
* invocamos el modelo para que<br />
* insertamos los datos del array a la base de datos<br />
*/<br />
public function insertArray(){<br />
$this->render(NULL);<br />
$usuarios = new Usuarios();<br />
$usuarios->insertArray();<br />
}<br />
</source><br />
<br />
Modelo usuarios.php<br />
<br />
<source lang='php'><br />
/**<br />
* Recorremos el array para insertar en la base.<br />
**/<br />
public function insertArray(){<br />
$array_usuarios = Session::get("array_usuarios");<br />
$tamano = count($array_usuarios);<br />
$this->sql('BEGIN');<br />
for($i=0;$i<$tamano;$i++){<br />
$this->nombre = $array_usuarios[$i]['nombre'];<br />
if(!$this->create()){<br />
Flash::error("Error registro $i");<br />
}<br />
}<br />
$this->sql('COMMIT');<br />
Session::unset_data("array_usuarios");<br />
}<br />
</source><br />
<br />
PD: es mejor utilizar el create en vez del save, cuando uno debe insertar muchos registros el tiempo de respuesta es más rápido.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Generar_y_Leer_archivos_excel_(xls)_con_KumbiaPHP&diff=2961Generar y Leer archivos excel (xls) con KumbiaPHP2010-10-25T13:56:26Z<p>Fidelio: /* Programación MVC */</p>
<hr />
<div>= Creando un archivo excel en KumbiaPHP =<br />
<br />
Esto es un tema sencillo, solo hay que implementar las buenas practicas de pogramación.<br />
<br />
Para implemantar el tema de las 3 capas veamos un ejemplo sencillo<br />
<br />
listado de nombres de usuarios. (id y nombre);<br />
<br />
= Tabla de usuarios =<br />
<br />
<source lang="mysql"><br />
CREATE TABLE `usuarios` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />
</source><br />
<br />
<br />
= Programación MVC =<br />
<br />
'''Modelo'''<br />
<br />
Creamos nuestro modelo llamado usuarios.php<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Modelo Usuarios<br />
* <br />
* @category app<br />
* @package models<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
class Usuarios extends ActiveRecord{<br />
public function findByName($conditions){<br />
return $this->find("nombre like '$conditions'");<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos un controlador.<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Controlador Usuarios<br />
* <br />
* @category app<br />
* @package controllers<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
Load::lib('excel');<br />
Load::model('usuarios');<br />
class Usuarios extends ApplicationController{<br />
public function sendFile(){<br />
$this->set_response('xls');<br />
$usuarios = new Usuarios();<br />
if(!$this->usuarios = $usuarios->findByName('%')){<br />
Flash::warning('No existen registros para exportar');<br />
$this->render(NULL);<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Vista con el nomnbre ''' sendFile.xls.phtml '''<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista sendFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
<br />
//invoco la clase para generar el libro excel<br />
$libro = new Spreadsheet_Excel_Writer();<br />
<br />
//creo una hoja, es decir, puedo crear N hojas<br />
$hoja1 = $libro->addWorksheet("Hoja1");<br />
<br />
//charset<br />
$hoja1->setInputEncoding('utf-8');<br />
<br />
//Formato de letra, en este caso negrita, existen más, números, fecha, etc...<br />
$negrita =& $libro->addFormat();<br />
$negrita->setBold();<br />
<br />
//titulos<br />
$hoja1->write(0, 0, "ID", $negrita);<br />
$hoja1->write(0, 1, "NOMBRE", $negrita);<br />
<br />
//detalle<br />
$row = 1;<br />
foreach($usuarios as $usuario):<br />
$hoja1->write($row, 0, $usuario->id);<br />
$hoja1->write($row, 1, $usuario->nombre);<br />
$row++;<br />
endforeach;<br />
$libro->send("Libro1.xls");<br />
$libro->close();<br />
?><br />
</source><br />
<br />
Con esto tenemos un ejemplo sencillo y bien hecho, no deben olvidar que una programacion MVC les ayudara con el tiempo a realizar mantenciones y en este caso hacer otra salida que no sea un excel, por ejemplo un pdf, solo hay que crear una vista sin tocar el controlador ni el modelo.<br />
<br />
El modelo debe tener contacto con la base de datos. el controlador solo envia esos datos a la vista, pero ni uno de los dos deben estar en contacto con la base de datos.<br />
<br />
= Importando un archivo excel en KumbiaPHP =<br />
<br />
Esta segunda parte vamos a tomar un archivo similar al que exportamos para poder poblar nuestraba base, aplicaremos la misma libreria.<br />
<br />
la forma de implementar este tema es primero subir el archo xls al servidor, para esto se debe dejar en una carpeta<br />
que tenga acceso de lectura y escritura. despues que el archivo este disponible en el servidor, leeremos el excel y mostraremos los primeros 10 registros, para que el usuario sepa que el archivo que va a importar es el correcto. y con un boton finalizar importremos los datos que se almaceno en memoria (array), yo lo implemento de esta manera por varias razones, y una que es la mas importante, la rapidez, es mas rápido poblar un array en vez estar poblando directo a la base, y una vez que el usuario este conforme poble ese array a la base. También es bueno utilizar las transacciones de la base, por que puede ocurrir un error, y seria bueno hacerlo desde cero, en vez que este buscando cuantos registro quedaron.<br />
<br />
utilizaremos el mismo controller usuarios.<br />
<br />
con el control FILE subimos un archivo al servidor. para esto utilizamos una vista, llama readFile.phtml<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista readFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<?php View::content() ?><br />
<?php echo form_tag("$controller_name/$action_name", "enctype: multipart/form-data")?><br />
<table><br />
<tr><br />
<th>ARCHIVO</th><br />
<th>&nbsp;</th><br />
</tr><br />
<tr><br />
<td><?php echo file_field_tag('file') ?></td><br />
<td><?php echo submit_tag('Leer Excel')?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag() ?><br />
</source><br />
<br />
<br />
en el controller con la accion firstStep subimos el excel y creamos el array<br />
<br />
<source lang='php'><br />
/**<br />
* Subimos el archivo excel y creamos un array con los indices<br />
* para ser insertados más tarde en la base<br />
**/<br />
public function firstStep(){<br />
$new_name = "pagos.xls";<br />
$dir = "temp";<br />
if(!$this->upload_file("file",$dir,$new_name)){<br />
Flash::success("Error al intentar de subir el archivo");<br />
}else{<br />
error_reporting(E_ALL ^ E_NOTICE);<br />
Session::unset_data('array_pagos');<br />
$reader = new Spreadsheet_Excel_Reader(); <br />
$reader->setUTFEncoder('UTF8');<br />
$reader->setOutputEncoding('UTF8');<br />
$reader->read("$dir/$new_name");<br />
for ($i = 2; $i <= 65535; $i++){// EMPEZAMOS A LEER DESDE LA SEGUNDA LINEA 'POR QUE LA 1° SON LOS TITULOS'<br />
$array_usuarios[] = array(<br />
'id' => $reader->sheets[0]['cells'][$i][1],<br />
'nombre' => $reader->sheets[0]['cells'][$i][2]<br />
); <br />
$c=$i+1;<br />
if($reader->sheets[0]['cells'][$c][1]=="") $i = 65535; //LEEMOS HASTA EL FINAL, PERO SI ENCUENTRA UN ESPACIO BASIO TERMINA DE LEER<br />
}<br />
Session::set('array_usuarios', $array_usuarios); <br />
}<br />
}<br />
</source><br />
<br />
vista firstStep.phtml, muestra siempre los primeros 10 registros. En una tabla.<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista firstStep<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<br />
<table><br />
<tr><br />
<th>ID</th><br />
<th>NOMBRE</th><br />
</tr><br />
<?php for($i=0;$i<10;$i++){?><br />
<tr><br />
<td><?php echo $array_usuarios[$i]['id'] ?></td><br />
<td><?php echo $array_usuarios[$i]['nombre'] ?></td><br />
</tr><br />
<?php } ?><br />
</table><br />
<?php <br />
echo form_tag("$controller_name/insertArray");<br />
echo submit_tag("Agregar");<br />
echo end_form_tag();<br />
?><br />
</source><br />
<br />
insertamos los datos a la base. <br />
<br />
Controlador usuarios_controller.php<br />
<br />
<source lang='php'><br />
<br />
/**<br />
* invocamos el modelo para que<br />
* insertamos los datos del array a la base de datos<br />
*/<br />
public function insertArray(){<br />
$this->render(NULL);<br />
$usuarios = new Usuarios();<br />
$usuarios->insertArray();<br />
}<br />
</source><br />
<br />
Modelo usuarios.php<br />
<br />
<source lang='php'><br />
/**<br />
* Recorremos el array para insertar en la base.<br />
**/<br />
public function insertArray(){<br />
$array_usuarios = Session::get("array_usuarios");<br />
$tamano = count($array_usuarios);<br />
$this->sql('BEGIN');<br />
for($i=0;$i<$tamano;$i++){<br />
$this->nombre = $array_usuarios[$i]['nombre'];<br />
if(!$this->create()){<br />
Flash::error("Error registro $i");<br />
}<br />
}<br />
$this->sql('COMMIT');<br />
Session::unset_data("array_usuarios");<br />
}<br />
</source><br />
<br />
PD: es mejor utilizar el create en vez del save, cuando uno debe insertar muchos registros el tiempo de respuesta es más rápido.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Generar_y_Leer_archivos_excel_(xls)_con_KumbiaPHP&diff=2960Generar y Leer archivos excel (xls) con KumbiaPHP2010-10-25T00:10:55Z<p>Fidelio: </p>
<hr />
<div>= Creando un archivo excel en KumbiaPHP =<br />
<br />
Esto es un tema sencillo, solo hay que implementar las buenas practicas de pogramación.<br />
<br />
Para implemantar el tema de las 3 capas veamos un ejemplo sencillo<br />
<br />
listado de nombres de usuarios. (id y nombre);<br />
<br />
= Tabla de usuarios =<br />
<br />
<source lang="mysql"><br />
CREATE TABLE `usuarios` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />
</source><br />
<br />
<br />
= Programación MVC =<br />
<br />
'''Modelo'''<br />
<br />
Creamos nuestro modelo llamado usuarios.php<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Modelo Usuarios<br />
* <br />
* @category app<br />
* @package models<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
class Usuarios extends ActiveRecord{<br />
public function findByName($conditions){<br />
return $this->find("nombre like '$conditions'");<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos un controlador.<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Controlador Usuarios<br />
* <br />
* @category app<br />
* @package controllers<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
Load::lib('excel');<br />
Load::model('usuarios');<br />
class Usuarios extends ApplicationController{<br />
public function sendFile(){<br />
$this->set_response('xls');<br />
$usuarios = new Usuarios();<br />
if(!$this->usuarios = $usuarios->findByName('%')){<br />
Flash::warning('No existen registros para exportar');<br />
$this->render(NULL);<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Vista con el nomnbre ''' sendFile.xls.phtml '''<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista sendFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
<br />
//invoco la clase para generar el libro excel<br />
$libro = new Spreadsheet_Excel_Writer();<br />
<br />
//creo una hoja, es decir, puedo crear N hojas<br />
$hoja1 = $libro->addWorksheet("Hoja1");<br />
<br />
//charset<br />
$hoja1->setInputEncoding('utf-8');<br />
<br />
//Formato de letra, en este caso negrita, existen más, números, fecha, etc...<br />
$negrita =& $libro->addFormat();<br />
$negrita->setBold();<br />
<br />
//titulos<br />
$hoja1->write(0, 0, "ID", $negrita);<br />
$hoja1->write(0, 1, "NOMBRE", $negrita);<br />
<br />
//detalle<br />
$row = 1;<br />
foreach($usuarios as $usuario):<br />
$hoja->write($row, 0, $usuario->id);<br />
$hoja->write($row, 1, $usuario->nombre);<br />
$row++;<br />
endforeach;<br />
$libro->send("Libro1.xls");<br />
$libro->close();<br />
?><br />
</source><br />
<br />
Con esto tenemos un ejemplo sencillo y bien hecho, no deben olvidar que una programacion MVC les ayudara con el tiempo a realizar mantenciones y en este caso hacer otra salida que no sea un excel, por ejemplo un pdf, solo hay que crear una vista sin tocar el controlador ni el modelo.<br />
<br />
El modelo debe tener contacto con la base de datos. el controlador solo envia esos datos a la vista, pero ni uno de los dos deben estar en contacto con la base de datos.<br />
<br />
= Importando un archivo excel en KumbiaPHP =<br />
<br />
Esta segunda parte vamos a tomar un archivo similar al que exportamos para poder poblar nuestraba base, aplicaremos la misma libreria.<br />
<br />
la forma de implementar este tema es primero subir el archo xls al servidor, para esto se debe dejar en una carpeta<br />
que tenga acceso de lectura y escritura. despues que el archivo este disponible en el servidor, leeremos el excel y mostraremos los primeros 10 registros, para que el usuario sepa que el archivo que va a importar es el correcto. y con un boton finalizar importremos los datos que se almaceno en memoria (array), yo lo implemento de esta manera por varias razones, y una que es la mas importante, la rapidez, es mas rápido poblar un array en vez estar poblando directo a la base, y una vez que el usuario este conforme poble ese array a la base. También es bueno utilizar las transacciones de la base, por que puede ocurrir un error, y seria bueno hacerlo desde cero, en vez que este buscando cuantos registro quedaron.<br />
<br />
utilizaremos el mismo controller usuarios.<br />
<br />
con el control FILE subimos un archivo al servidor. para esto utilizamos una vista, llama readFile.phtml<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista readFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<?php View::content() ?><br />
<?php echo form_tag("$controller_name/$action_name", "enctype: multipart/form-data")?><br />
<table><br />
<tr><br />
<th>ARCHIVO</th><br />
<th>&nbsp;</th><br />
</tr><br />
<tr><br />
<td><?php echo file_field_tag('file') ?></td><br />
<td><?php echo submit_tag('Leer Excel')?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag() ?><br />
</source><br />
<br />
<br />
en el controller con la accion firstStep subimos el excel y creamos el array<br />
<br />
<source lang='php'><br />
/**<br />
* Subimos el archivo excel y creamos un array con los indices<br />
* para ser insertados más tarde en la base<br />
**/<br />
public function firstStep(){<br />
$new_name = "pagos.xls";<br />
$dir = "temp";<br />
if(!$this->upload_file("file",$dir,$new_name)){<br />
Flash::success("Error al intentar de subir el archivo");<br />
}else{<br />
error_reporting(E_ALL ^ E_NOTICE);<br />
Session::unset_data('array_pagos');<br />
$reader = new Spreadsheet_Excel_Reader(); <br />
$reader->setUTFEncoder('UTF8');<br />
$reader->setOutputEncoding('UTF8');<br />
$reader->read("$dir/$new_name");<br />
for ($i = 2; $i <= 65535; $i++){// EMPEZAMOS A LEER DESDE LA SEGUNDA LINEA 'POR QUE LA 1° SON LOS TITULOS'<br />
$array_usuarios[] = array(<br />
'id' => $reader->sheets[0]['cells'][$i][1],<br />
'nombre' => $reader->sheets[0]['cells'][$i][2]<br />
); <br />
$c=$i+1;<br />
if($reader->sheets[0]['cells'][$c][1]=="") $i = 65535; //LEEMOS HASTA EL FINAL, PERO SI ENCUENTRA UN ESPACIO BASIO TERMINA DE LEER<br />
}<br />
Session::set('array_usuarios', $array_usuarios); <br />
}<br />
}<br />
</source><br />
<br />
vista firstStep.phtml, muestra siempre los primeros 10 registros. En una tabla.<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista firstStep<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<br />
<table><br />
<tr><br />
<th>ID</th><br />
<th>NOMBRE</th><br />
</tr><br />
<?php for($i=0;$i<10;$i++){?><br />
<tr><br />
<td><?php echo $array_usuarios[$i]['id'] ?></td><br />
<td><?php echo $array_usuarios[$i]['nombre'] ?></td><br />
</tr><br />
<?php } ?><br />
</table><br />
<?php <br />
echo form_tag("$controller_name/insertArray");<br />
echo submit_tag("Agregar");<br />
echo end_form_tag();<br />
?><br />
</source><br />
<br />
insertamos los datos a la base. <br />
<br />
Controlador usuarios_controller.php<br />
<br />
<source lang='php'><br />
<br />
/**<br />
* invocamos el modelo para que<br />
* insertamos los datos del array a la base de datos<br />
*/<br />
public function insertArray(){<br />
$this->render(NULL);<br />
$usuarios = new Usuarios();<br />
$usuarios->insertArray();<br />
}<br />
</source><br />
<br />
Modelo usuarios.php<br />
<br />
<source lang='php'><br />
/**<br />
* Recorremos el array para insertar en la base.<br />
**/<br />
public function insertArray(){<br />
$array_usuarios = Session::get("array_usuarios");<br />
$tamano = count($array_usuarios);<br />
$this->sql('BEGIN');<br />
for($i=0;$i<$tamano;$i++){<br />
$this->nombre = $array_usuarios[$i]['nombre'];<br />
if(!$this->create()){<br />
Flash::error("Error registro $i");<br />
}<br />
}<br />
$this->sql('COMMIT');<br />
Session::unset_data("array_usuarios");<br />
}<br />
</source><br />
<br />
PD: es mejor utilizar el create en vez del save, cuando uno debe insertar muchos registros el tiempo de respuesta es más rápido.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Generar_y_Leer_archivos_excel_(xls)_con_KumbiaPHP&diff=2959Generar y Leer archivos excel (xls) con KumbiaPHP2010-10-24T22:59:29Z<p>Fidelio: /* Programacion MVC */</p>
<hr />
<div>= Creando un archivo excel en KumbiaPHP =<br />
<br />
Esto es un tema sencillo, solo hay que implementar las buenas practicas de pogramación.<br />
<br />
Para implemantar el tema de las 3 capas veamos un ejemplo sencillo<br />
<br />
listado de nombres de usuarios. (id y nombre);<br />
<br />
= Tabla de usuarios =<br />
<br />
<source lang="mysql"><br />
CREATE TABLE `usuarios` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />
</source><br />
<br />
<br />
= Programación MVC =<br />
<br />
'''Modelo'''<br />
<br />
Creamos nuestro modelo llamado usuarios.php<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Modelo Usuarios<br />
* <br />
* @category app<br />
* @package models<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
class Usuarios extends ActiveRecord{<br />
public function findByName($conditions){<br />
return $this->find("nombre like '$conditions'");<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos un controlador.<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Controlador Usuarios<br />
* <br />
* @category app<br />
* @package controllers<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
Load::lib('excel');<br />
Load::model('usuarios');<br />
class Usuarios extends ApplicationController{<br />
public function sendFile(){<br />
$this->set_response('xls');<br />
$usuarios = new Usuarios();<br />
if(!$this->usuarios = $usuarios->findByName('%')){<br />
Flash::warning('No existen registros para exportar');<br />
$this->render(NULL);<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Vista con el nomnbre ''' sendFile.xls.phtml '''<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista sendFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
<br />
//invoco la clase para generar el libro excel<br />
$libro = new Spreadsheet_Excel_Writer();<br />
<br />
//creo una hoja, es decir, puedo crear N hojas<br />
$hoja1 = $libro->addWorksheet("Hoja1");<br />
<br />
//charset<br />
$hoja1->setInputEncoding('utf-8');<br />
<br />
//Formato de letra, en este caso negrita, existen más, números, fecha, etc...<br />
$negrita =& $libro->addFormat();<br />
$negrita->setBold();<br />
<br />
//titulos<br />
$hoja1->write(0, 0, "ID", $negrita);<br />
$hoja1->write(0, 1, "NOMBRE", $negrita);<br />
<br />
//detalle<br />
$row = 1;<br />
foreach($usuarios as $usuario):<br />
$hoja->write($row, 0, $usuario->id);<br />
$hoja->write($row, 1, $usuario->nombre);<br />
$row++;<br />
endforeach;<br />
$libro->send("Libro1.xls");<br />
$libro->close();<br />
?><br />
</source><br />
<br />
Con esto tenemos un ejemplo sencillo y bien hecho, no deben olvidar que una programacion MVC les ayudara con el tiempo a realizar mantenciones y en este caso hacer otra salida que no sea un excel, por ejemplo un pdf, solo hay que crear una vista sin tocar el controlador ni el modelo.<br />
<br />
El modelo debe tener contacto con la base de datos. el controlador solo envia esos datos a la vista, pero ni uno de los dos deben estar en contacto con la base de datos.<br />
<br />
= Importando un archivo excel en KumbiaPHP =<br />
<br />
Esta segunda parte vamos a tomar un archivo similar al que exportamos para poder poblar nuestraba base, aplicaremos la misma libreria.<br />
<br />
la forma de implementar este tema es primero subir el archo xls al servidor, para esto se debe dejar en una carpeta<br />
que tenga acceso de lectura y escritura. despues que el archivo este disponible en el servidor, leeremos el excel y mostraremos los primeros 10 registros, para que el usuario sepa que el archivo que va a importar es el correcto. y con un boton finalizar importremos los datos que se almaceno en memoria (array), yo lo implemento de esta manera por varias razones, y una que es la mas importante, la rapidez, es mas rápido poblar un array en vez estar poblando directo a la base, y una vez que el usuario este conforme poble ese array a la base. También es bueno utilizar las transacciones de la base, por que puede ocurrir un error, y seria bueno hacerlo desde cero, en vez que este buscando cuantos registro quedaron.<br />
<br />
utilizaremos el mismo controller usuarios.<br />
<br />
con el control FILE subimos un archivo al servidor. para esto utilizamos una vista, llama readFile.phtml<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista readFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<?php View::content() ?><br />
<?php echo form_tag("$controller_name/$action_name", "enctype: multipart/form-data")?><br />
<table><br />
<tr><br />
<th>ARCHIVO</th><br />
<th>&nbsp;</th><br />
</tr><br />
<tr><br />
<td><?php echo file_field_tag('file') ?></td><br />
<td><?php echo submit_tag('Leer Excel')?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag() ?><br />
</source><br />
<br />
<br />
en el controller con la accion firstStep subimos el excel y creamos el array<br />
<br />
<source lang='php'><br />
/**<br />
* Subimos el archivo excel y creamos un array con los indices<br />
* para ser insertados más tarde en la base<br />
**/<br />
public function firstStep(){<br />
$new_name = "pagos.xls";<br />
$dir = "temp";<br />
if(!$this->upload_file("file",$dir,$new_name)){<br />
Flash::success("Error al intentar de subir el archivo");<br />
}else{<br />
error_reporting(E_ALL ^ E_NOTICE);<br />
Session::unset_data('array_pagos');<br />
$reader = new Spreadsheet_Excel_Reader(); <br />
$reader->setUTFEncoder('UTF8');<br />
$reader->setOutputEncoding('UTF8');<br />
$reader->read("$dir/$new_name");<br />
for ($i = 2; $i <= 65535; $i++){// EMPEZAMOS A LEER DESDE LA SEGUNDA LINEA 'POR QUE LA 1° SON LOS TITULOS'<br />
$array_usuarios[] = array(<br />
'id' => $reader->sheets[0]['cells'][$i][1],<br />
'nombre' => $reader->sheets[0]['cells'][$i][2]<br />
); <br />
$c=$i+1;<br />
if($reader->sheets[0]['cells'][$c][1]=="") $i = 65535; //LEEMOS HASTA EL FINAL, PERO SI ENCUENTRA UN ESPACIO BASIO TERMINA DE LEER<br />
}<br />
Session::set('array_usuarios', $array_usuarios); <br />
}<br />
}<br />
</source><br />
<br />
vista firstStep.phtml, muestra siempre los primeros 10 registros. En una tabla.<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista firstStep<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<br />
<table><br />
<tr><br />
<th>ID</th><br />
<th>NOMBRE</th><br />
</tr><br />
<?php for($i=0;$i<10;$i++){?><br />
<tr><br />
<td><?php echo $array_usuarios[$i]['id'] ?></td><br />
<td><?php echo $array_usuarios[$i]['nombre'] ?></td><br />
</tr><br />
<?php } ?><br />
</table><br />
<?php <br />
echo form_tag("$controller_name/insertArray");<br />
echo submit_tag("Agregar");<br />
echo end_form_tag();<br />
?><br />
</source><br />
<br />
insertamos los datos a la base. <br />
<br />
Controlador usuarios_controller.php<br />
<br />
<source lang='php'><br />
<br />
/**<br />
* invocamos el modelo para que<br />
* insertamos los datos del array a la base de datos<br />
*/<br />
public function insertArray(){<br />
$this->render(NULL);<br />
$usuarios = new Usuarios();<br />
$usuarios->insertArray();<br />
}<br />
</source><br />
<br />
Modelo usuarios.php<br />
<br />
<source lang='php'><br />
/**<br />
* Recorremos el array para insertar en la base.<br />
**/<br />
public function insertArray(){<br />
$array_usuarios = Session::get("array_usuarios");<br />
$tamano = count($array_usuarios);<br />
$this->sql('BEGIN');<br />
for($i=0;$i<$tamano;$i++){<br />
$this->nombre = $array_usuarios[$i]['nombre'];<br />
if(!$this->create()){<br />
Flash::error("Error registro $i");<br />
}<br />
}<br />
$this->sql('COMMIT');<br />
Session::unset_data("array_usuarios");<br />
}<br />
</source><br />
<br />
PD: es mejor utilizar el create en vez del save, cuando uno debe insertar muchos registros el tiempo de respuesta es más rápido.</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Generar_y_Leer_archivos_excel_(xls)_con_KumbiaPHP&diff=2958Generar y Leer archivos excel (xls) con KumbiaPHP2010-10-24T22:59:12Z<p>Fidelio: /* Programacion MVC */</p>
<hr />
<div>= Creando un archivo excel en KumbiaPHP =<br />
<br />
Esto es un tema sencillo, solo hay que implementar las buenas practicas de pogramación.<br />
<br />
Para implemantar el tema de las 3 capas veamos un ejemplo sencillo<br />
<br />
listado de nombres de usuarios. (id y nombre);<br />
<br />
= Tabla de usuarios =<br />
<br />
<source lang="mysql"><br />
CREATE TABLE `usuarios` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />
</source><br />
<br />
<br />
= Programacion MVC =<br />
<br />
'''Modelo'''<br />
<br />
Creamos nuestro modelo llamado usuarios.php<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Modelo Usuarios<br />
* <br />
* @category app<br />
* @package models<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
class Usuarios extends ActiveRecord{<br />
public function findByName($conditions){<br />
return $this->find("nombre like '$conditions'");<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos un controlador.<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Controlador Usuarios<br />
* <br />
* @category app<br />
* @package controllers<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
Load::lib('excel');<br />
Load::model('usuarios');<br />
class Usuarios extends ApplicationController{<br />
public function sendFile(){<br />
$this->set_response('xls');<br />
$usuarios = new Usuarios();<br />
if(!$this->usuarios = $usuarios->findByName('%')){<br />
Flash::warning('No existen registros para exportar');<br />
$this->render(NULL);<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Vista con el nomnbre ''' sendFile.xls.phtml '''<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista sendFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
<br />
//invoco la clase para generar el libro excel<br />
$libro = new Spreadsheet_Excel_Writer();<br />
<br />
//creo una hoja, es decir, puedo crear N hojas<br />
$hoja1 = $libro->addWorksheet("Hoja1");<br />
<br />
//charset<br />
$hoja1->setInputEncoding('utf-8');<br />
<br />
//Formato de letra, en este caso negrita, existen más, números, fecha, etc...<br />
$negrita =& $libro->addFormat();<br />
$negrita->setBold();<br />
<br />
//titulos<br />
$hoja1->write(0, 0, "ID", $negrita);<br />
$hoja1->write(0, 1, "NOMBRE", $negrita);<br />
<br />
//detalle<br />
$row = 1;<br />
foreach($usuarios as $usuario):<br />
$hoja->write($row, 0, $usuario->id);<br />
$hoja->write($row, 1, $usuario->nombre);<br />
$row++;<br />
endforeach;<br />
$libro->send("Libro1.xls");<br />
$libro->close();<br />
?><br />
</source><br />
<br />
Con esto tenemos un ejemplo sencillo y bien hecho, no deben olvidar que una programacion MVC les ayudara con el tiempo a realizar mantenciones y en este caso hacer otra salida que no sea un excel, por ejemplo un pdf, solo hay que crear una vista sin tocar el controlador ni el modelo.<br />
<br />
El modelo debe tener contacto con la base de datos. el controlador solo envia esos datos a la vista, pero ni uno de los dos deben estar en contacto con la base de datos.<br />
<br />
= Importando un archivo excel en KumbiaPHP =<br />
<br />
Esta segunda parte vamos a tomar un archivo similar al que exportamos para poder poblar nuestraba base, aplicaremos la misma libreria.<br />
<br />
la forma de implementar este tema es primero subir el archo xls al servidor, para esto se debe dejar en una carpeta<br />
que tenga acceso de lectura y escritura. despues que el archivo este disponible en el servidor, leeremos el excel y mostraremos los primeros 10 registros, para que el usuario sepa que el archivo que va a importar es el correcto. y con un boton finalizar importremos los datos que se almaceno en memoria (array), yo lo implemento de esta manera por varias razones, y una que es la mas importante, la rapidez, es mas rápido poblar un array en vez estar poblando directo a la base, y una vez que el usuario este conforme poble ese array a la base. También es bueno utilizar las transacciones de la base, por que puede ocurrir un error, y seria bueno hacerlo desde cero, en vez que este buscando cuantos registro quedaron.<br />
<br />
utilizaremos el mismo controller usuarios.<br />
<br />
con el control FILE subimos un archivo al servidor. para esto utilizamos una vista, llama readFile.phtml<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista readFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<?php View::content() ?><br />
<?php echo form_tag("$controller_name/$action_name", "enctype: multipart/form-data")?><br />
<table><br />
<tr><br />
<th>ARCHIVO</th><br />
<th>&nbsp;</th><br />
</tr><br />
<tr><br />
<td><?php echo file_field_tag('file') ?></td><br />
<td><?php echo submit_tag('Leer Excel')?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag() ?><br />
</source><br />
<br />
<br />
en el controller con la accion firstStep subimos el excel y creamos el array<br />
<br />
<source lang='php'><br />
/**<br />
* Subimos el archivo excel y creamos un array con los indices<br />
* para ser insertados más tarde en la base<br />
**/<br />
public function firstStep(){<br />
$new_name = "pagos.xls";<br />
$dir = "temp";<br />
if(!$this->upload_file("file",$dir,$new_name)){<br />
Flash::success("Error al intentar de subir el archivo");<br />
}else{<br />
error_reporting(E_ALL ^ E_NOTICE);<br />
Session::unset_data('array_pagos');<br />
$reader = new Spreadsheet_Excel_Reader(); <br />
$reader->setUTFEncoder('UTF8');<br />
$reader->setOutputEncoding('UTF8');<br />
$reader->read("$dir/$new_name");<br />
for ($i = 2; $i <= 65535; $i++){// EMPEZAMOS A LEER DESDE LA SEGUNDA LINEA 'POR QUE LA 1° SON LOS TITULOS'<br />
$array_usuarios[] = array(<br />
'id' => $reader->sheets[0]['cells'][$i][1],<br />
'nombre' => $reader->sheets[0]['cells'][$i][2]<br />
); <br />
$c=$i+1;<br />
if($reader->sheets[0]['cells'][$c][1]=="") $i = 65535; //LEEMOS HASTA EL FINAL, PERO SI ENCUENTRA UN ESPACIO BASIO TERMINA DE LEER<br />
}<br />
Session::set('array_usuarios', $array_usuarios); <br />
}<br />
}<br />
</source><br />
<br />
vista firstStep.phtml, muestra siempre los primeros 10 registros. En una tabla.<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista firstStep<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<br />
<table><br />
<tr><br />
<th>ID</th><br />
<th>NOMBRE</th><br />
</tr><br />
<?php for($i=0;$i<10;$i++){?><br />
<tr><br />
<td><?php echo $array_usuarios[$i]['id'] ?></td><br />
<td><?php echo $array_usuarios[$i]['nombre'] ?></td><br />
</tr><br />
<?php } ?><br />
</table><br />
<?php <br />
echo form_tag("$controller_name/insertArray");<br />
echo submit_tag("Agregar");<br />
echo end_form_tag();<br />
?><br />
</source><br />
<br />
insertamos los datos a la base. <br />
<br />
Controlador usuarios_controller.php<br />
<br />
<source lang='php'><br />
<br />
/**<br />
* invocamos el modelo para que<br />
* insertamos los datos del array a la base de datos<br />
*/<br />
public function insertArray(){<br />
$this->render(NULL);<br />
$usuarios = new Usuarios();<br />
$usuarios->insertArray();<br />
}<br />
</source><br />
<br />
Modelo usuarios.php<br />
<br />
<source lang='php'><br />
/**<br />
* Recorremos el array para insertar en la base.<br />
**/<br />
public function insertArray(){<br />
$array_usuarios = Session::get("array_usuarios");<br />
$tamano = count($array_usuarios);<br />
$this->sql('BEGIN');<br />
for($i=0;$i<$tamano;$i++){<br />
$this->nombre = $array_usuarios[$i]['nombre'];<br />
if(!$this->create()){<br />
Flash::error("Error registro $i");<br />
}<br />
}<br />
$this->sql('COMMIT');<br />
Session::unset_data("array_usuarios");<br />
}<br />
</source><br />
<br />
PD: es mejor utilizar el create en vez del save, cuando uno debe insertar muchos registros el tiempo de respuesta es más rápido.</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Generar_y_Leer_archivos_excel_(xls)_con_KumbiaPHP&diff=2957Generar y Leer archivos excel (xls) con KumbiaPHP2010-10-24T22:57:40Z<p>Fidelio: /* Creando un archivo excel en KumbiaPHP */</p>
<hr />
<div>= Creando un archivo excel en KumbiaPHP =<br />
<br />
Esto es un tema sencillo, solo hay que implementar las buenas practicas de pogramación.<br />
<br />
Para implemantar el tema de las 3 capas veamos un ejemplo sencillo<br />
<br />
listado de nombres de usuarios. (id y nombre);<br />
<br />
= Tabla de usuarios =<br />
<br />
<source lang="mysql"><br />
CREATE TABLE `usuarios` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />
</source><br />
<br />
<br />
= Programacion MVC =<br />
<br />
'''Modelo'''<br />
<br />
Creamos nuestro modelo llamado usuarios.php<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Modelo Usuarios<br />
* <br />
* @category app<br />
* @package models<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
class Usuarios extends ActiveRecord{<br />
public function findByName($conditions){<br />
return $this->find("nombre like '$conditions'");<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos un controlador.<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Controlador Usuarios<br />
* <br />
* @category app<br />
* @package controllers<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
Load::lib('excel');<br />
Load::model('usuarios');<br />
class Usuarios extends ApplicationController{<br />
public function sendFile(){<br />
$this->set_response('xls');<br />
$usuarios = new Usuarios();<br />
if(!$this->usuarios = $usuarios->findByName('%')){<br />
Flash::warning('No existen registros para exportar');<br />
$this->render(NULL);<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Vista con el nomnbre ''' sendFile.xls.phtml '''<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista sendFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
<br />
//invoco la clase para generar el libro excel<br />
$libro = new Spreadsheet_Excel_Writer();<br />
<br />
//creo una hoja, es decir, puedo crear N hojas<br />
$hoja1 = $libro->addWorksheet("Hoja1");<br />
<br />
//charset<br />
$hoja1->setInputEncoding('utf-8');<br />
<br />
//Formato de letra, en este caso negrita, existen más, números, fecha, etc...<br />
$negrita =& $libro->addFormat();<br />
$negrita->setBold();<br />
<br />
//titulos<br />
$hoja1->write(0, 0, "ID", $negrita);<br />
$hoja1->write(0, 1, "NOMBRE", $negrita);<br />
<br />
//detalle<br />
$row = 1;<br />
foreach($usuarios as $usuario):<br />
$hoja->write($row, 0, $usuario->id);<br />
$hoja->write($row, 1, $usuario->nombre);<br />
$row++;<br />
endforeach;<br />
$libro->send("Libro1.xls");<br />
$libro->close();<br />
?><br />
</source><br />
<br />
con esto tenemos un ejemplo sencillo y bien hecho, no deben olvidar que una programacion MVC les ayudara con el tiempo a realizar mantenciones y en este caso hacer otra salida que no sea un excel, por ejemplo un pdf, solo hay que crear una vista sin tocar el controlador no el modelo.<br />
<br />
El modelo debe tener contacto con la base de datos. el controlador solo envia esos datos a la vista, pero ni uno de los dos deben estar en contacto con la base de datos.<br />
<br />
= Importando un archivo excel en KumbiaPHP =<br />
<br />
Esta segunda parte vamos a tomar un archivo similar al que exportamos para poder poblar nuestraba base, aplicaremos la misma libreria.<br />
<br />
la forma de implementar este tema es primero subir el archo xls al servidor, para esto se debe dejar en una carpeta<br />
que tenga acceso de lectura y escritura. despues que el archivo este disponible en el servidor, leeremos el excel y mostraremos los primeros 10 registros, para que el usuario sepa que el archivo que va a importar es el correcto. y con un boton finalizar importremos los datos que se almaceno en memoria (array), yo lo implemento de esta manera por varias razones, y una que es la mas importante, la rapidez, es mas rápido poblar un array en vez estar poblando directo a la base, y una vez que el usuario este conforme poble ese array a la base. También es bueno utilizar las transacciones de la base, por que puede ocurrir un error, y seria bueno hacerlo desde cero, en vez que este buscando cuantos registro quedaron.<br />
<br />
utilizaremos el mismo controller usuarios.<br />
<br />
con el control FILE subimos un archivo al servidor. para esto utilizamos una vista, llama readFile.phtml<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista readFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<?php View::content() ?><br />
<?php echo form_tag("$controller_name/$action_name", "enctype: multipart/form-data")?><br />
<table><br />
<tr><br />
<th>ARCHIVO</th><br />
<th>&nbsp;</th><br />
</tr><br />
<tr><br />
<td><?php echo file_field_tag('file') ?></td><br />
<td><?php echo submit_tag('Leer Excel')?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag() ?><br />
</source><br />
<br />
<br />
en el controller con la accion firstStep subimos el excel y creamos el array<br />
<br />
<source lang='php'><br />
/**<br />
* Subimos el archivo excel y creamos un array con los indices<br />
* para ser insertados más tarde en la base<br />
**/<br />
public function firstStep(){<br />
$new_name = "pagos.xls";<br />
$dir = "temp";<br />
if(!$this->upload_file("file",$dir,$new_name)){<br />
Flash::success("Error al intentar de subir el archivo");<br />
}else{<br />
error_reporting(E_ALL ^ E_NOTICE);<br />
Session::unset_data('array_pagos');<br />
$reader = new Spreadsheet_Excel_Reader(); <br />
$reader->setUTFEncoder('UTF8');<br />
$reader->setOutputEncoding('UTF8');<br />
$reader->read("$dir/$new_name");<br />
for ($i = 2; $i <= 65535; $i++){// EMPEZAMOS A LEER DESDE LA SEGUNDA LINEA 'POR QUE LA 1° SON LOS TITULOS'<br />
$array_usuarios[] = array(<br />
'id' => $reader->sheets[0]['cells'][$i][1],<br />
'nombre' => $reader->sheets[0]['cells'][$i][2]<br />
); <br />
$c=$i+1;<br />
if($reader->sheets[0]['cells'][$c][1]=="") $i = 65535; //LEEMOS HASTA EL FINAL, PERO SI ENCUENTRA UN ESPACIO BASIO TERMINA DE LEER<br />
}<br />
Session::set('array_usuarios', $array_usuarios); <br />
}<br />
}<br />
</source><br />
<br />
vista firstStep.phtml, muestra siempre los primeros 10 registros. En una tabla.<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista firstStep<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<br />
<table><br />
<tr><br />
<th>ID</th><br />
<th>NOMBRE</th><br />
</tr><br />
<?php for($i=0;$i<10;$i++){?><br />
<tr><br />
<td><?php echo $array_usuarios[$i]['id'] ?></td><br />
<td><?php echo $array_usuarios[$i]['nombre'] ?></td><br />
</tr><br />
<?php } ?><br />
</table><br />
<?php <br />
echo form_tag("$controller_name/insertArray");<br />
echo submit_tag("Agregar");<br />
echo end_form_tag();<br />
?><br />
</source><br />
<br />
insertamos los datos a la base. <br />
<br />
Controlador usuarios_controller.php<br />
<br />
<source lang='php'><br />
<br />
/**<br />
* invocamos el modelo para que<br />
* insertamos los datos del array a la base de datos<br />
*/<br />
public function insertArray(){<br />
$this->render(NULL);<br />
$usuarios = new Usuarios();<br />
$usuarios->insertArray();<br />
}<br />
</source><br />
<br />
Modelo usuarios.php<br />
<br />
<source lang='php'><br />
/**<br />
* Recorremos el array para insertar en la base.<br />
**/<br />
public function insertArray(){<br />
$array_usuarios = Session::get("array_usuarios");<br />
$tamano = count($array_usuarios);<br />
$this->sql('BEGIN');<br />
for($i=0;$i<$tamano;$i++){<br />
$this->nombre = $array_usuarios[$i]['nombre'];<br />
if(!$this->create()){<br />
Flash::error("Error registro $i");<br />
}<br />
}<br />
$this->sql('COMMIT');<br />
Session::unset_data("array_usuarios");<br />
}<br />
</source><br />
<br />
PD: es mejor utilizar el create en vez del save, cuando uno debe insertar muchos registros el tiempo de respuesta es más rápido.</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Generar_y_Leer_archivos_excel_(xls)_con_KumbiaPHP&diff=2956Generar y Leer archivos excel (xls) con KumbiaPHP2010-10-24T22:45:30Z<p>Fidelio: /* Importando un archivo excel en KumbiaPHP */</p>
<hr />
<div>= Creando un archivo excel en KumbiaPHP =<br />
<br />
esto es un tema sencillo, solo hay que implementar las buenas practicas de pogramación.<br />
<br />
Para implemantar el tema de las 3 capas veamos un ejemplo sencillo<br />
<br />
listado de nombres de usuarios. (id y nombre);<br />
<br />
= Tabla de usuarios =<br />
<br />
<source lang="mysql"><br />
CREATE TABLE `usuarios` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />
</source><br />
<br />
<br />
= Programacion MVC =<br />
<br />
'''Modelo'''<br />
<br />
Creamos nuestro modelo llamado usuarios.php<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Modelo Usuarios<br />
* <br />
* @category app<br />
* @package models<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
class Usuarios extends ActiveRecord{<br />
public function findByName($conditions){<br />
return $this->find("nombre like '$conditions'");<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos un controlador.<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Controlador Usuarios<br />
* <br />
* @category app<br />
* @package controllers<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
Load::lib('excel');<br />
Load::model('usuarios');<br />
class Usuarios extends ApplicationController{<br />
public function sendFile(){<br />
$this->set_response('xls');<br />
$usuarios = new Usuarios();<br />
if(!$this->usuarios = $usuarios->findByName('%')){<br />
Flash::warning('No existen registros para exportar');<br />
$this->render(NULL);<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Vista con el nomnbre ''' sendFile.xls.phtml '''<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista sendFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
<br />
//invoco la clase para generar el libro excel<br />
$libro = new Spreadsheet_Excel_Writer();<br />
<br />
//creo una hoja, es decir, puedo crear N hojas<br />
$hoja1 = $libro->addWorksheet("Hoja1");<br />
<br />
//charset<br />
$hoja1->setInputEncoding('utf-8');<br />
<br />
//Formato de letra, en este caso negrita, existen más, números, fecha, etc...<br />
$negrita =& $libro->addFormat();<br />
$negrita->setBold();<br />
<br />
//titulos<br />
$hoja1->write(0, 0, "ID", $negrita);<br />
$hoja1->write(0, 1, "NOMBRE", $negrita);<br />
<br />
//detalle<br />
$row = 1;<br />
foreach($usuarios as $usuario):<br />
$hoja->write($row, 0, $usuario->id);<br />
$hoja->write($row, 1, $usuario->nombre);<br />
$row++;<br />
endforeach;<br />
$libro->send("Libro1.xls");<br />
$libro->close();<br />
?><br />
</source><br />
<br />
con esto tenemos un ejemplo sencillo y bien hecho, no deben olvidar que una programacion MVC les ayudara con el tiempo a realizar mantenciones y en este caso hacer otra salida que no sea un excel, por ejemplo un pdf, solo hay que crear una vista sin tocar el controlador no el modelo.<br />
<br />
El modelo debe tener contacto con la base de datos. el controlador solo envia esos datos a la vista, pero ni uno de los dos deben estar en contacto con la base de datos.<br />
<br />
= Importando un archivo excel en KumbiaPHP =<br />
<br />
Esta segunda parte vamos a tomar un archivo similar al que exportamos para poder poblar nuestraba base, aplicaremos la misma libreria.<br />
<br />
la forma de implementar este tema es primero subir el archo xls al servidor, para esto se debe dejar en una carpeta<br />
que tenga acceso de lectura y escritura. despues que el archivo este disponible en el servidor, leeremos el excel y mostraremos los primeros 10 registros, para que el usuario sepa que el archivo que va a importar es el correcto. y con un boton finalizar importremos los datos que se almaceno en memoria (array), yo lo implemento de esta manera por varias razones, y una que es la mas importante, la rapidez, es mas rápido poblar un array en vez estar poblando directo a la base, y una vez que el usuario este conforme poble ese array a la base. También es bueno utilizar las transacciones de la base, por que puede ocurrir un error, y seria bueno hacerlo desde cero, en vez que este buscando cuantos registro quedaron.<br />
<br />
utilizaremos el mismo controller usuarios.<br />
<br />
con el control FILE subimos un archivo al servidor. para esto utilizamos una vista, llama readFile.phtml<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista readFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<?php View::content() ?><br />
<?php echo form_tag("$controller_name/$action_name", "enctype: multipart/form-data")?><br />
<table><br />
<tr><br />
<th>ARCHIVO</th><br />
<th>&nbsp;</th><br />
</tr><br />
<tr><br />
<td><?php echo file_field_tag('file') ?></td><br />
<td><?php echo submit_tag('Leer Excel')?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag() ?><br />
</source><br />
<br />
<br />
en el controller con la accion firstStep subimos el excel y creamos el array<br />
<br />
<source lang='php'><br />
/**<br />
* Subimos el archivo excel y creamos un array con los indices<br />
* para ser insertados más tarde en la base<br />
**/<br />
public function firstStep(){<br />
$new_name = "pagos.xls";<br />
$dir = "temp";<br />
if(!$this->upload_file("file",$dir,$new_name)){<br />
Flash::success("Error al intentar de subir el archivo");<br />
}else{<br />
error_reporting(E_ALL ^ E_NOTICE);<br />
Session::unset_data('array_pagos');<br />
$reader = new Spreadsheet_Excel_Reader(); <br />
$reader->setUTFEncoder('UTF8');<br />
$reader->setOutputEncoding('UTF8');<br />
$reader->read("$dir/$new_name");<br />
for ($i = 2; $i <= 65535; $i++){// EMPEZAMOS A LEER DESDE LA SEGUNDA LINEA 'POR QUE LA 1° SON LOS TITULOS'<br />
$array_usuarios[] = array(<br />
'id' => $reader->sheets[0]['cells'][$i][1],<br />
'nombre' => $reader->sheets[0]['cells'][$i][2]<br />
); <br />
$c=$i+1;<br />
if($reader->sheets[0]['cells'][$c][1]=="") $i = 65535; //LEEMOS HASTA EL FINAL, PERO SI ENCUENTRA UN ESPACIO BASIO TERMINA DE LEER<br />
}<br />
Session::set('array_usuarios', $array_usuarios); <br />
}<br />
}<br />
</source><br />
<br />
vista firstStep.phtml, muestra siempre los primeros 10 registros. En una tabla.<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista firstStep<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<br />
<table><br />
<tr><br />
<th>ID</th><br />
<th>NOMBRE</th><br />
</tr><br />
<?php for($i=0;$i<10;$i++){?><br />
<tr><br />
<td><?php echo $array_usuarios[$i]['id'] ?></td><br />
<td><?php echo $array_usuarios[$i]['nombre'] ?></td><br />
</tr><br />
<?php } ?><br />
</table><br />
<?php <br />
echo form_tag("$controller_name/insertArray");<br />
echo submit_tag("Agregar");<br />
echo end_form_tag();<br />
?><br />
</source><br />
<br />
insertamos los datos a la base. <br />
<br />
Controlador usuarios_controller.php<br />
<br />
<source lang='php'><br />
<br />
/**<br />
* invocamos el modelo para que<br />
* insertamos los datos del array a la base de datos<br />
*/<br />
public function insertArray(){<br />
$this->render(NULL);<br />
$usuarios = new Usuarios();<br />
$usuarios->insertArray();<br />
}<br />
</source><br />
<br />
Modelo usuarios.php<br />
<br />
<source lang='php'><br />
/**<br />
* Recorremos el array para insertar en la base.<br />
**/<br />
public function insertArray(){<br />
$array_usuarios = Session::get("array_usuarios");<br />
$tamano = count($array_usuarios);<br />
$this->sql('BEGIN');<br />
for($i=0;$i<$tamano;$i++){<br />
$this->nombre = $array_usuarios[$i]['nombre'];<br />
if(!$this->create()){<br />
Flash::error("Error registro $i");<br />
}<br />
}<br />
$this->sql('COMMIT');<br />
Session::unset_data("array_usuarios");<br />
}<br />
</source><br />
<br />
PD: es mejor utilizar el create en vez del save, cuando uno debe insertar muchos registros el tiempo de respuesta es más rápido.</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Generar_y_Leer_archivos_excel_(xls)_con_KumbiaPHP&diff=2955Generar y Leer archivos excel (xls) con KumbiaPHP2010-10-24T22:44:25Z<p>Fidelio: </p>
<hr />
<div>= Creando un archivo excel en KumbiaPHP =<br />
<br />
esto es un tema sencillo, solo hay que implementar las buenas practicas de pogramación.<br />
<br />
Para implemantar el tema de las 3 capas veamos un ejemplo sencillo<br />
<br />
listado de nombres de usuarios. (id y nombre);<br />
<br />
= Tabla de usuarios =<br />
<br />
<source lang="mysql"><br />
CREATE TABLE `usuarios` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />
</source><br />
<br />
<br />
= Programacion MVC =<br />
<br />
'''Modelo'''<br />
<br />
Creamos nuestro modelo llamado usuarios.php<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Modelo Usuarios<br />
* <br />
* @category app<br />
* @package models<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
class Usuarios extends ActiveRecord{<br />
public function findByName($conditions){<br />
return $this->find("nombre like '$conditions'");<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos un controlador.<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Controlador Usuarios<br />
* <br />
* @category app<br />
* @package controllers<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
Load::lib('excel');<br />
Load::model('usuarios');<br />
class Usuarios extends ApplicationController{<br />
public function sendFile(){<br />
$this->set_response('xls');<br />
$usuarios = new Usuarios();<br />
if(!$this->usuarios = $usuarios->findByName('%')){<br />
Flash::warning('No existen registros para exportar');<br />
$this->render(NULL);<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Vista con el nomnbre ''' sendFile.xls.phtml '''<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista sendFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
<br />
//invoco la clase para generar el libro excel<br />
$libro = new Spreadsheet_Excel_Writer();<br />
<br />
//creo una hoja, es decir, puedo crear N hojas<br />
$hoja1 = $libro->addWorksheet("Hoja1");<br />
<br />
//charset<br />
$hoja1->setInputEncoding('utf-8');<br />
<br />
//Formato de letra, en este caso negrita, existen más, números, fecha, etc...<br />
$negrita =& $libro->addFormat();<br />
$negrita->setBold();<br />
<br />
//titulos<br />
$hoja1->write(0, 0, "ID", $negrita);<br />
$hoja1->write(0, 1, "NOMBRE", $negrita);<br />
<br />
//detalle<br />
$row = 1;<br />
foreach($usuarios as $usuario):<br />
$hoja->write($row, 0, $usuario->id);<br />
$hoja->write($row, 1, $usuario->nombre);<br />
$row++;<br />
endforeach;<br />
$libro->send("Libro1.xls");<br />
$libro->close();<br />
?><br />
</source><br />
<br />
con esto tenemos un ejemplo sencillo y bien hecho, no deben olvidar que una programacion MVC les ayudara con el tiempo a realizar mantenciones y en este caso hacer otra salida que no sea un excel, por ejemplo un pdf, solo hay que crear una vista sin tocar el controlador no el modelo.<br />
<br />
El modelo debe tener contacto con la base de datos. el controlador solo envia esos datos a la vista, pero ni uno de los dos deben estar en contacto con la base de datos.<br />
<br />
= Importando un archivo excel en KumbiaPHP =<br />
<br />
Esta segunda parte vamos a tomar un archivo similar al que exportamos para poder poblar nuestraba base, aplicaremos la misma libreria.<br />
<br />
la forma de implementar este tema es primero subir el archo xls al servidor, para esto se debe dejar en una carpeta<br />
que tenga acceso de lectura y escritura. despues que el archivo este disponible en el servidor, leeremos el excel y mostraremos los primeros 10 registros, para que el usuario sepa que el archivo que va a importar es el correcto. y con un boton finalizar importremos los datos que se almaceno en memoria (array), yo lo implemento de esta manera por varias razones, y una que es la mas importante, la rapidez, es mas rápido poblar un array en vez estar poblando directo a la base, y una vez que el usuario este conforme poble ese array a la base. También es bueno utilizar las transacciones de la base, por que puede ocurrir un error, y seria bueno hacerlo desde cero, en vez que este buscando cuantos registro quedaron.<br />
<br />
utilizaremos el mismo controller usuarios.<br />
<br />
con el control FILE subimos un archivo al servidor. para esto utilizamos una vista, llama readFile.phtml<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista readFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<?php View::content() ?><br />
<?php echo form_tag("$controller_name/$action_name", "enctype: multipart/form-data")?><br />
<table><br />
<tr><br />
<th>ARCHIVO</th><br />
<th>&nbsp;</th><br />
</tr><br />
<tr><br />
<td><?php echo file_field_tag('file') ?></td><br />
<td><?php echo submit_tag('Leer Excel')?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag() ?><br />
</source><br />
<br />
<br />
en el controller con la accion firstStep subimos el excel y creamos el array<br />
<br />
<soure lang='php'><br />
/**<br />
* Subimos el archivo excel y creamos un array con los indices<br />
* para ser insertados más tarde en la base<br />
**/<br />
public function firstStep(){<br />
$new_name = "pagos.xls";<br />
$dir = "temp";<br />
if(!$this->upload_file("file",$dir,$new_name)){<br />
Flash::success("Error al intentar de subir el archivo");<br />
}else{<br />
error_reporting(E_ALL ^ E_NOTICE);<br />
Session::unset_data('array_pagos');<br />
$reader = new Spreadsheet_Excel_Reader(); <br />
$reader->setUTFEncoder('UTF8');<br />
$reader->setOutputEncoding('UTF8');<br />
$reader->read("$dir/$new_name");<br />
for ($i = 2; $i <= 65535; $i++){// EMPEZAMOS A LEER DESDE LA SEGUNDA LINEA 'POR QUE LA 1° SON LOS TITULOS'<br />
$array_usuarios[] = array(<br />
'id' => $reader->sheets[0]['cells'][$i][1],<br />
'nombre' => $reader->sheets[0]['cells'][$i][2]<br />
); <br />
$c=$i+1;<br />
if($reader->sheets[0]['cells'][$c][1]=="") $i = 65535; //LEEMOS HASTA EL FINAL, PERO SI ENCUENTRA UN ESPACIO BASIO TERMINA DE LEER<br />
}<br />
Session::set('array_usuarios', $array_usuarios); <br />
}<br />
}<br />
</source><br />
<br />
vista firstStep.phtml, muestra siempre los primeros 10 registros. En una tabla.<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista firstStep<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<br />
<table><br />
<tr><br />
<th>ID</th><br />
<th>NOMBRE</th><br />
</tr><br />
<?php for($i=0;$i<10;$i++){?><br />
<tr><br />
<td><?php echo $array_usuarios[$i]['id'] ?></td><br />
<td><?php echo $array_usuarios[$i]['nombre'] ?></td><br />
</tr><br />
<?php } ?><br />
</table><br />
<?php <br />
echo form_tag("$controller_name/insertArray");<br />
echo submit_tag("Agregar");<br />
echo end_form_tag();<br />
?><br />
</source><br />
<br />
insertamos los datos a la base. <br />
<br />
Controlador usuarios_controller.php<br />
<br />
<source lang='php'><br />
<br />
/**<br />
* invocamos el modelo para que<br />
* insertamos los datos del array a la base de datos<br />
*/<br />
public function insertArray(){<br />
$this->render(NULL);<br />
$usuarios = new Usuarios();<br />
$usuarios->insertArray();<br />
}<br />
</source><br />
<br />
Modelo usuarios.php<br />
<br />
<source lang='php'><br />
/**<br />
* Recorremos el array para insertar en la base.<br />
**/<br />
public function insertArray(){<br />
$array_usuarios = Session::get("array_usuarios");<br />
$tamano = count($array_usuarios);<br />
$this->sql('BEGIN');<br />
for($i=0;$i<$tamano;$i++){<br />
$this->nombre = $array_usuarios[$i]['nombre'];<br />
if(!$this->create()){<br />
Flash::error("Error registro $i");<br />
}<br />
}<br />
$this->sql('COMMIT');<br />
Session::unset_data("array_usuarios");<br />
}<br />
</source><br />
<br />
PD: es mejor utilizar el create en vez del save, cuando uno debe insertar muchos registros el tiempo de respuesta es más rápido.</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Helper_Datagrid&diff=2835Helper Datagrid2010-06-30T16:10:57Z<p>Fidelio: /* Screenshots */</p>
<hr />
<div>== DATAGRID FACIL DE USAR.==<br />
<br />
Invocando el helper datagrid y pasando el model se crea automáticamente una grilla con los campos (fields). La forma de modificar el diseño del datagrid es 100% hoja estilo 'CSS'. También con un poco de programación podrás<br />
ocultar campos, cambiar los titulos de los campos, crear link por fila el cual llamara una acción pasando el<br />
id como parámetro, link para editar y eliminar, personalizar mensajes de advertencias. asignar el tipo de campo<br />
que se está visualizando (moneda, número, porcentaje o una imagen). crear paginado.<br />
<br />
<br />
<br />
===setValue($field_id, $field)===<br />
<br />
Asigna un campo a mostrar de la tabla _id<br />
$field_id: campo_id del modelo.<br />
$field: nombre del campo que se encuentra en la tabla relacionada<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
</source><br />
<br />
<br />
<source lang=php><br />
$dataGrid = new($Usuarios);<br />
$dataGrid->setValue('roles_id', 'rol');<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
$dataGrid->setValue('ciudades_id', 'ciudad');<br />
</source><br />
<br />
<br />
===setCaption($field, $title)===<br />
<br />
Cambia el nombre de una columna<br />
$field: campo del modelo<br />
$title: nombre a mostrar en la columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setCaption('id', 'COD');<br />
$dataGrid->setCaption('paises_id', 'PAIS');<br />
</source><br />
<br />
<br />
===setTextUpper($field)===<br />
<br />
Transforma toda la cadena de texto en letras Mayúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpper('nombres');<br />
</source><br />
<br />
<br />
===setTextLower($field)===<br />
<br />
Transforma toda la cadena de texto en letras minúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextLower('nombres');<br />
</source><br />
<br />
<br />
===setTextUpperFirst($field)===<br />
<br />
Transforma en mayúscula la primera letra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperFirst('nombres');<br />
</source><br />
<br />
===setTextUpperWords($field)===<br />
<br />
Transforma en mayúscula la primera letra de cada palabra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperWords('nombres');<br />
</source><br />
<br />
<br />
===setTypeDate($field)===<br />
<br />
Formato de salida d/m/Y (01/01/2002) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeDateTime($field)===<br />
<br />
Formato de salida d/m/Y H:m:s (01/01/2002 12:00:00) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeImage($field)===<br />
<br />
Muestra una imagen que se encuentra en la carpeta img/, es decir, solo se almacena el nombre de la imagen en formato jpg, gif o png. Debe existir un subdirectorio llamdo thumbs el cual almacena las imagenes redimencionadas. <br />
El archivo config/datagrid.ini tiene información del tamaño de la imagen redimensionada.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeImage('photo');<br />
</source><br />
<br />
===setTypeMoney($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para el signo y separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeMoney('monto');<br />
</source><br />
<br />
===setTypeNumeric($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para los separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeNumeric('cantidad');<br />
</source><br />
<br />
<br />
<br />
===setTypePercent($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información adicional.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypePercent('porcentaje');<br />
</source><br />
<br />
===setMimes($params=array())===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
array $params: array de parametros <br />
<br />
el primer paramtro es el nombre de la imagen que se encuentra en la carpeta img/ con extensión gif. 'xls:' el siguiente es el nombre de la accion que se encuetra en el mismo controlador creada la grilla, envia el id.<br />
ej: http://dominio.com/kumbia/clientes/verExcel/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setMimes('xls: verExcel', 'pdf: verPdf');<br />
</source><br />
<br />
===setAlias($fields, $data=array())===<br />
Crea alias a los datos que se encuentran en la tabla<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo', 'D'=>'Desactivo'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero', '1'=>'Uno', '2'=>'Dos', '3'=>'Tres', '4'=>'Cuatro', '5'=>'Cinco'));<br />
</source><br />
<br />
===setImage($fields, $data=array())===<br />
Coloca una imagen según el campo. La imagen puede ser cualquier formato soportado y debe estar almacenada en img/datagrid/<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo.png', 'D'=>'Desactivo.png'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero.gif', '1'=>'Uno.gif', '2'=>'Dos.gif', '3'=>'Tres.gif', '4'=>'Cuatro.gif', '5'=>'Cinco.gif'));<br />
</source><br />
<br />
===setClass($fields, $data=array())===<br />
Asigna una clase "CSS" al campo que se despliega según su valor<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setClass('status', array('P'=>'text-color-red', 'A'=>'text-color-green', 'R'=>'text-bold'));<br />
</source><br />
<br />
===auto_filter = true===<br />
Genera por cada celda un select o combo para realizar búsquedas en la misma grilla.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
</source><br />
<br />
===ignoreAutoFilter(array($campos))===<br />
Cuando se realiza un autofiltro, con esta funcion se puede eliminar filtros de una columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
$dataGrid->ignoreAutoFilter(array('id', 'status'));<br />
</source><br />
<br />
===ignore($field)===<br />
No muestra un campo del molelo en la grilla<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->ignore('id');<br />
</source><br />
<br />
===createCol($caption, $html)===<br />
Crea una nueva columna a la grilla<br />
<br />
$caption: Nombre de la columna.<br />
<br />
$html: crea un html para ser visualizado<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->createCol('APROBAR', '<div id="div_a_{id}">' . Html::img('yes.gif', 'APROBAR', 'onclick=aprobar({id}); class="manito" id="img_a_{id}"') . '</div>');<br />
</source><br />
<br />
o<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->createCol('PRIMER V°B°', '');<br />
</source><br />
<br />
===create = $url ===<br />
Visualiza una imagen sobre la grilla y crea un link a la accion crear<br />
<br />
$url: nombre del controlador más la accion<br />
<br />
ej: http://dominio.com/kumbia/clientes/create<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/create';<br />
</source><br />
<br />
<br />
===edit = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/edit/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/edit';<br />
</source><br />
<br />
===delete = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/delete/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = controller_name . '/delete';<br />
</source><br />
<br />
<br />
===delete_confirm = $msg===<br />
Mensaje de alerta para la accion delete.<br />
$msg: se puede visualizar el valor de un campo pasandoselo entre llaves {$field}.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = 'Desea elimina el registro {id}';<br />
</source><br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea elmimar este registro {nombre}, {apellido}?';<br />
</source><br />
<br />
===paginator_name = $paginador===<br />
<br />
$paginador: Nombre del paginador para la grilla por defecto usa el default<br />
puede incluir paginadores del kumbia.<br />
Classic - Digg - Extended - Punbb - Simple<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->paginator_name = 'classic';<br />
</source><br />
<br />
<br />
===url = $url===<br />
Si utiliza paginator la grilla se debe indicar la url para el paginado, sino se indica por defecto obtiene el nombre del controlador y su accion de donde fue creado el dataGrid.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->url = 'usurios/index';<br />
</source><br />
<br />
===show = 10===<br />
número de paginas que se mostraran en el paginador, por defecto 10.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->show = 10;<br />
</source><br />
<br />
===style = $name===<br />
$name: nombre de la hoja de estilo ubicado en public/css/<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->style = 'default';<br />
</source><br />
<br />
===Ejemplo 1 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<br />
<source lang="php"><br />
public function index()<br />
{<br />
$this->clientes = $this->Clientes->find("order: nombre");;<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<source lang="php"><br />
View::content();<br />
View::helpers('dataGrid');<br />
$dataGrid = new dataGrid($clientes);<br />
View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid));<br />
</source><br />
<br />
===Ejemplo 2 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<source lang="php"><br />
public function index($page=1)<br />
{<br />
$this->clientes = $this->Clientes->paginate('per_page: 20', "page: $page");<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<br />
<source lang="php"><br />
<?php View::content() ?><br />
<?php View::helpers('dataGrid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($clientes);<br />
$dataGrid->setValue('ciudades_id', 'nombre');<br />
$dataGrid->setTextLower('nombre');<br />
$dataGrid->setTypeImage('photo');<br />
$dataGrid->setMimes('xls: verXls');<br />
$dataGrid->ignore('id');<br />
$dataGrid->setCaption('ciudades_id', 'CIUDAD');<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete_confirm = 'Eliminar el registro {rut}-{dv}';<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
<br />
<br />
===Screenshots===<br />
Modelo Paises<br />
<br />
[[Archivo:Model_paises.gif]]<br />
<br />
[[Archivo:DataGrid2.png]]<br />
<br />
===Descargar===<br />
[https://sourceforge.net/projects/helperdatagrid/files/dataGrid%20Jquery-ui%20Beta1%20rc0.9.tar.gz/download Descargar] para '''Spirit v1.0 beta1''' con temas de jquery-ui<br />
<br />
<br />
<br />
<br />
<br />
[[Categoría:Helpers]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Archivo:DataGrid2.png&diff=2834Archivo:DataGrid2.png2010-06-30T16:09:57Z<p>Fidelio: </p>
<hr />
<div></div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Helper_Datagrid&diff=2833Helper Datagrid2010-06-30T15:57:41Z<p>Fidelio: /* Screenshots */</p>
<hr />
<div>== DATAGRID FACIL DE USAR.==<br />
<br />
Invocando el helper datagrid y pasando el model se crea automáticamente una grilla con los campos (fields). La forma de modificar el diseño del datagrid es 100% hoja estilo 'CSS'. También con un poco de programación podrás<br />
ocultar campos, cambiar los titulos de los campos, crear link por fila el cual llamara una acción pasando el<br />
id como parámetro, link para editar y eliminar, personalizar mensajes de advertencias. asignar el tipo de campo<br />
que se está visualizando (moneda, número, porcentaje o una imagen). crear paginado.<br />
<br />
<br />
<br />
===setValue($field_id, $field)===<br />
<br />
Asigna un campo a mostrar de la tabla _id<br />
$field_id: campo_id del modelo.<br />
$field: nombre del campo que se encuentra en la tabla relacionada<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
</source><br />
<br />
<br />
<source lang=php><br />
$dataGrid = new($Usuarios);<br />
$dataGrid->setValue('roles_id', 'rol');<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
$dataGrid->setValue('ciudades_id', 'ciudad');<br />
</source><br />
<br />
<br />
===setCaption($field, $title)===<br />
<br />
Cambia el nombre de una columna<br />
$field: campo del modelo<br />
$title: nombre a mostrar en la columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setCaption('id', 'COD');<br />
$dataGrid->setCaption('paises_id', 'PAIS');<br />
</source><br />
<br />
<br />
===setTextUpper($field)===<br />
<br />
Transforma toda la cadena de texto en letras Mayúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpper('nombres');<br />
</source><br />
<br />
<br />
===setTextLower($field)===<br />
<br />
Transforma toda la cadena de texto en letras minúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextLower('nombres');<br />
</source><br />
<br />
<br />
===setTextUpperFirst($field)===<br />
<br />
Transforma en mayúscula la primera letra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperFirst('nombres');<br />
</source><br />
<br />
===setTextUpperWords($field)===<br />
<br />
Transforma en mayúscula la primera letra de cada palabra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperWords('nombres');<br />
</source><br />
<br />
<br />
===setTypeDate($field)===<br />
<br />
Formato de salida d/m/Y (01/01/2002) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeDateTime($field)===<br />
<br />
Formato de salida d/m/Y H:m:s (01/01/2002 12:00:00) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeImage($field)===<br />
<br />
Muestra una imagen que se encuentra en la carpeta img/, es decir, solo se almacena el nombre de la imagen en formato jpg, gif o png. Debe existir un subdirectorio llamdo thumbs el cual almacena las imagenes redimencionadas. <br />
El archivo config/datagrid.ini tiene información del tamaño de la imagen redimensionada.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeImage('photo');<br />
</source><br />
<br />
===setTypeMoney($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para el signo y separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeMoney('monto');<br />
</source><br />
<br />
===setTypeNumeric($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para los separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeNumeric('cantidad');<br />
</source><br />
<br />
<br />
<br />
===setTypePercent($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información adicional.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypePercent('porcentaje');<br />
</source><br />
<br />
===setMimes($params=array())===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
array $params: array de parametros <br />
<br />
el primer paramtro es el nombre de la imagen que se encuentra en la carpeta img/ con extensión gif. 'xls:' el siguiente es el nombre de la accion que se encuetra en el mismo controlador creada la grilla, envia el id.<br />
ej: http://dominio.com/kumbia/clientes/verExcel/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setMimes('xls: verExcel', 'pdf: verPdf');<br />
</source><br />
<br />
===setAlias($fields, $data=array())===<br />
Crea alias a los datos que se encuentran en la tabla<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo', 'D'=>'Desactivo'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero', '1'=>'Uno', '2'=>'Dos', '3'=>'Tres', '4'=>'Cuatro', '5'=>'Cinco'));<br />
</source><br />
<br />
===setImage($fields, $data=array())===<br />
Coloca una imagen según el campo. La imagen puede ser cualquier formato soportado y debe estar almacenada en img/datagrid/<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo.png', 'D'=>'Desactivo.png'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero.gif', '1'=>'Uno.gif', '2'=>'Dos.gif', '3'=>'Tres.gif', '4'=>'Cuatro.gif', '5'=>'Cinco.gif'));<br />
</source><br />
<br />
===setClass($fields, $data=array())===<br />
Asigna una clase "CSS" al campo que se despliega según su valor<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setClass('status', array('P'=>'text-color-red', 'A'=>'text-color-green', 'R'=>'text-bold'));<br />
</source><br />
<br />
===auto_filter = true===<br />
Genera por cada celda un select o combo para realizar búsquedas en la misma grilla.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
</source><br />
<br />
===ignoreAutoFilter(array($campos))===<br />
Cuando se realiza un autofiltro, con esta funcion se puede eliminar filtros de una columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
$dataGrid->ignoreAutoFilter(array('id', 'status'));<br />
</source><br />
<br />
===ignore($field)===<br />
No muestra un campo del molelo en la grilla<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->ignore('id');<br />
</source><br />
<br />
===createCol($caption, $html)===<br />
Crea una nueva columna a la grilla<br />
<br />
$caption: Nombre de la columna.<br />
<br />
$html: crea un html para ser visualizado<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->createCol('APROBAR', '<div id="div_a_{id}">' . Html::img('yes.gif', 'APROBAR', 'onclick=aprobar({id}); class="manito" id="img_a_{id}"') . '</div>');<br />
</source><br />
<br />
o<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->createCol('PRIMER V°B°', '');<br />
</source><br />
<br />
===create = $url ===<br />
Visualiza una imagen sobre la grilla y crea un link a la accion crear<br />
<br />
$url: nombre del controlador más la accion<br />
<br />
ej: http://dominio.com/kumbia/clientes/create<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/create';<br />
</source><br />
<br />
<br />
===edit = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/edit/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/edit';<br />
</source><br />
<br />
===delete = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/delete/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = controller_name . '/delete';<br />
</source><br />
<br />
<br />
===delete_confirm = $msg===<br />
Mensaje de alerta para la accion delete.<br />
$msg: se puede visualizar el valor de un campo pasandoselo entre llaves {$field}.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = 'Desea elimina el registro {id}';<br />
</source><br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea elmimar este registro {nombre}, {apellido}?';<br />
</source><br />
<br />
===paginator_name = $paginador===<br />
<br />
$paginador: Nombre del paginador para la grilla por defecto usa el default<br />
puede incluir paginadores del kumbia.<br />
Classic - Digg - Extended - Punbb - Simple<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->paginator_name = 'classic';<br />
</source><br />
<br />
<br />
===url = $url===<br />
Si utiliza paginator la grilla se debe indicar la url para el paginado, sino se indica por defecto obtiene el nombre del controlador y su accion de donde fue creado el dataGrid.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->url = 'usurios/index';<br />
</source><br />
<br />
===show = 10===<br />
número de paginas que se mostraran en el paginador, por defecto 10.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->show = 10;<br />
</source><br />
<br />
===style = $name===<br />
$name: nombre de la hoja de estilo ubicado en public/css/<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->style = 'default';<br />
</source><br />
<br />
===Ejemplo 1 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<br />
<source lang="php"><br />
public function index()<br />
{<br />
$this->clientes = $this->Clientes->find("order: nombre");;<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<source lang="php"><br />
View::content();<br />
View::helpers('dataGrid');<br />
$dataGrid = new dataGrid($clientes);<br />
View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid));<br />
</source><br />
<br />
===Ejemplo 2 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<source lang="php"><br />
public function index($page=1)<br />
{<br />
$this->clientes = $this->Clientes->paginate('per_page: 20', "page: $page");<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<br />
<source lang="php"><br />
<?php View::content() ?><br />
<?php View::helpers('dataGrid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($clientes);<br />
$dataGrid->setValue('ciudades_id', 'nombre');<br />
$dataGrid->setTextLower('nombre');<br />
$dataGrid->setTypeImage('photo');<br />
$dataGrid->setMimes('xls: verXls');<br />
$dataGrid->ignore('id');<br />
$dataGrid->setCaption('ciudades_id', 'CIUDAD');<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete_confirm = 'Eliminar el registro {rut}-{dv}';<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
<br />
<br />
===Screenshots===<br />
Modelo Paises<br />
<br />
[[Archivo:Model_paises.gif]]<br />
<br />
[[Archivo:DataGrid1.png]]<br />
<br />
===Descargar===<br />
[https://sourceforge.net/projects/helperdatagrid/files/dataGrid%20Jquery-ui%20Beta1%20rc0.9.tar.gz/download Descargar] para '''Spirit v1.0 beta1''' con temas de jquery-ui<br />
<br />
<br />
<br />
<br />
<br />
[[Categoría:Helpers]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Helper_Datagrid&diff=2832Helper Datagrid2010-06-30T15:56:53Z<p>Fidelio: /* Screenshots */</p>
<hr />
<div>== DATAGRID FACIL DE USAR.==<br />
<br />
Invocando el helper datagrid y pasando el model se crea automáticamente una grilla con los campos (fields). La forma de modificar el diseño del datagrid es 100% hoja estilo 'CSS'. También con un poco de programación podrás<br />
ocultar campos, cambiar los titulos de los campos, crear link por fila el cual llamara una acción pasando el<br />
id como parámetro, link para editar y eliminar, personalizar mensajes de advertencias. asignar el tipo de campo<br />
que se está visualizando (moneda, número, porcentaje o una imagen). crear paginado.<br />
<br />
<br />
<br />
===setValue($field_id, $field)===<br />
<br />
Asigna un campo a mostrar de la tabla _id<br />
$field_id: campo_id del modelo.<br />
$field: nombre del campo que se encuentra en la tabla relacionada<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
</source><br />
<br />
<br />
<source lang=php><br />
$dataGrid = new($Usuarios);<br />
$dataGrid->setValue('roles_id', 'rol');<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
$dataGrid->setValue('ciudades_id', 'ciudad');<br />
</source><br />
<br />
<br />
===setCaption($field, $title)===<br />
<br />
Cambia el nombre de una columna<br />
$field: campo del modelo<br />
$title: nombre a mostrar en la columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setCaption('id', 'COD');<br />
$dataGrid->setCaption('paises_id', 'PAIS');<br />
</source><br />
<br />
<br />
===setTextUpper($field)===<br />
<br />
Transforma toda la cadena de texto en letras Mayúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpper('nombres');<br />
</source><br />
<br />
<br />
===setTextLower($field)===<br />
<br />
Transforma toda la cadena de texto en letras minúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextLower('nombres');<br />
</source><br />
<br />
<br />
===setTextUpperFirst($field)===<br />
<br />
Transforma en mayúscula la primera letra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperFirst('nombres');<br />
</source><br />
<br />
===setTextUpperWords($field)===<br />
<br />
Transforma en mayúscula la primera letra de cada palabra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperWords('nombres');<br />
</source><br />
<br />
<br />
===setTypeDate($field)===<br />
<br />
Formato de salida d/m/Y (01/01/2002) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeDateTime($field)===<br />
<br />
Formato de salida d/m/Y H:m:s (01/01/2002 12:00:00) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeImage($field)===<br />
<br />
Muestra una imagen que se encuentra en la carpeta img/, es decir, solo se almacena el nombre de la imagen en formato jpg, gif o png. Debe existir un subdirectorio llamdo thumbs el cual almacena las imagenes redimencionadas. <br />
El archivo config/datagrid.ini tiene información del tamaño de la imagen redimensionada.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeImage('photo');<br />
</source><br />
<br />
===setTypeMoney($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para el signo y separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeMoney('monto');<br />
</source><br />
<br />
===setTypeNumeric($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para los separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeNumeric('cantidad');<br />
</source><br />
<br />
<br />
<br />
===setTypePercent($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información adicional.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypePercent('porcentaje');<br />
</source><br />
<br />
===setMimes($params=array())===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
array $params: array de parametros <br />
<br />
el primer paramtro es el nombre de la imagen que se encuentra en la carpeta img/ con extensión gif. 'xls:' el siguiente es el nombre de la accion que se encuetra en el mismo controlador creada la grilla, envia el id.<br />
ej: http://dominio.com/kumbia/clientes/verExcel/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setMimes('xls: verExcel', 'pdf: verPdf');<br />
</source><br />
<br />
===setAlias($fields, $data=array())===<br />
Crea alias a los datos que se encuentran en la tabla<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo', 'D'=>'Desactivo'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero', '1'=>'Uno', '2'=>'Dos', '3'=>'Tres', '4'=>'Cuatro', '5'=>'Cinco'));<br />
</source><br />
<br />
===setImage($fields, $data=array())===<br />
Coloca una imagen según el campo. La imagen puede ser cualquier formato soportado y debe estar almacenada en img/datagrid/<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo.png', 'D'=>'Desactivo.png'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero.gif', '1'=>'Uno.gif', '2'=>'Dos.gif', '3'=>'Tres.gif', '4'=>'Cuatro.gif', '5'=>'Cinco.gif'));<br />
</source><br />
<br />
===setClass($fields, $data=array())===<br />
Asigna una clase "CSS" al campo que se despliega según su valor<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setClass('status', array('P'=>'text-color-red', 'A'=>'text-color-green', 'R'=>'text-bold'));<br />
</source><br />
<br />
===auto_filter = true===<br />
Genera por cada celda un select o combo para realizar búsquedas en la misma grilla.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
</source><br />
<br />
===ignoreAutoFilter(array($campos))===<br />
Cuando se realiza un autofiltro, con esta funcion se puede eliminar filtros de una columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
$dataGrid->ignoreAutoFilter(array('id', 'status'));<br />
</source><br />
<br />
===ignore($field)===<br />
No muestra un campo del molelo en la grilla<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->ignore('id');<br />
</source><br />
<br />
===createCol($caption, $html)===<br />
Crea una nueva columna a la grilla<br />
<br />
$caption: Nombre de la columna.<br />
<br />
$html: crea un html para ser visualizado<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->createCol('APROBAR', '<div id="div_a_{id}">' . Html::img('yes.gif', 'APROBAR', 'onclick=aprobar({id}); class="manito" id="img_a_{id}"') . '</div>');<br />
</source><br />
<br />
o<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->createCol('PRIMER V°B°', '');<br />
</source><br />
<br />
===create = $url ===<br />
Visualiza una imagen sobre la grilla y crea un link a la accion crear<br />
<br />
$url: nombre del controlador más la accion<br />
<br />
ej: http://dominio.com/kumbia/clientes/create<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/create';<br />
</source><br />
<br />
<br />
===edit = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/edit/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/edit';<br />
</source><br />
<br />
===delete = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/delete/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = controller_name . '/delete';<br />
</source><br />
<br />
<br />
===delete_confirm = $msg===<br />
Mensaje de alerta para la accion delete.<br />
$msg: se puede visualizar el valor de un campo pasandoselo entre llaves {$field}.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = 'Desea elimina el registro {id}';<br />
</source><br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea elmimar este registro {nombre}, {apellido}?';<br />
</source><br />
<br />
===paginator_name = $paginador===<br />
<br />
$paginador: Nombre del paginador para la grilla por defecto usa el default<br />
puede incluir paginadores del kumbia.<br />
Classic - Digg - Extended - Punbb - Simple<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->paginator_name = 'classic';<br />
</source><br />
<br />
<br />
===url = $url===<br />
Si utiliza paginator la grilla se debe indicar la url para el paginado, sino se indica por defecto obtiene el nombre del controlador y su accion de donde fue creado el dataGrid.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->url = 'usurios/index';<br />
</source><br />
<br />
===show = 10===<br />
número de paginas que se mostraran en el paginador, por defecto 10.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->show = 10;<br />
</source><br />
<br />
===style = $name===<br />
$name: nombre de la hoja de estilo ubicado en public/css/<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->style = 'default';<br />
</source><br />
<br />
===Ejemplo 1 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<br />
<source lang="php"><br />
public function index()<br />
{<br />
$this->clientes = $this->Clientes->find("order: nombre");;<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<source lang="php"><br />
View::content();<br />
View::helpers('dataGrid');<br />
$dataGrid = new dataGrid($clientes);<br />
View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid));<br />
</source><br />
<br />
===Ejemplo 2 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<source lang="php"><br />
public function index($page=1)<br />
{<br />
$this->clientes = $this->Clientes->paginate('per_page: 20', "page: $page");<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<br />
<source lang="php"><br />
<?php View::content() ?><br />
<?php View::helpers('dataGrid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($clientes);<br />
$dataGrid->setValue('ciudades_id', 'nombre');<br />
$dataGrid->setTextLower('nombre');<br />
$dataGrid->setTypeImage('photo');<br />
$dataGrid->setMimes('xls: verXls');<br />
$dataGrid->ignore('id');<br />
$dataGrid->setCaption('ciudades_id', 'CIUDAD');<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete_confirm = 'Eliminar el registro {rut}-{dv}';<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
<br />
<br />
===Screenshots===<br />
Modelo Paises<br />
<br />
[[Archivo:Model_paises.gif]]<br />
<br />
Perfiles<br />
[[Archivo:DataGrid1.png]]<br />
<br />
* paises_controller.php<br />
<br />
<source lang='php'> <br />
class PaisesController extends ApplicationController{<br />
public function index($page=1)<br />
{<br />
$this->paises = Load::model('paises')->paginate('per_page: 10', "page: $page");<br />
}<br />
}<br />
</source><br />
<br />
* views/paises/index.phtml<br />
<br />
<source lang='php'> <br />
<?php View::content() ?><br />
<?php View::helpers('data_grid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($paises);<br />
$dataGrid->setCaption('nombre', 'PAIS');<br />
$dataGrid->setTypeImage('imagen');<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea eliminar el pais: {nombre}?';<br />
<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
===Descargar===<br />
[https://sourceforge.net/projects/helperdatagrid/files/dataGrid%20Jquery-ui%20Beta1%20rc0.9.tar.gz/download Descargar] para '''Spirit v1.0 beta1''' con temas de jquery-ui<br />
<br />
<br />
<br />
<br />
<br />
[[Categoría:Helpers]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Archivo:DataGrid1.png&diff=2831Archivo:DataGrid1.png2010-06-30T15:55:37Z<p>Fidelio: </p>
<hr />
<div></div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Helper_Datagrid&diff=2830Helper Datagrid2010-06-30T15:51:14Z<p>Fidelio: /* setImage($fields, $data=array()) */</p>
<hr />
<div>== DATAGRID FACIL DE USAR.==<br />
<br />
Invocando el helper datagrid y pasando el model se crea automáticamente una grilla con los campos (fields). La forma de modificar el diseño del datagrid es 100% hoja estilo 'CSS'. También con un poco de programación podrás<br />
ocultar campos, cambiar los titulos de los campos, crear link por fila el cual llamara una acción pasando el<br />
id como parámetro, link para editar y eliminar, personalizar mensajes de advertencias. asignar el tipo de campo<br />
que se está visualizando (moneda, número, porcentaje o una imagen). crear paginado.<br />
<br />
<br />
<br />
===setValue($field_id, $field)===<br />
<br />
Asigna un campo a mostrar de la tabla _id<br />
$field_id: campo_id del modelo.<br />
$field: nombre del campo que se encuentra en la tabla relacionada<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
</source><br />
<br />
<br />
<source lang=php><br />
$dataGrid = new($Usuarios);<br />
$dataGrid->setValue('roles_id', 'rol');<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
$dataGrid->setValue('ciudades_id', 'ciudad');<br />
</source><br />
<br />
<br />
===setCaption($field, $title)===<br />
<br />
Cambia el nombre de una columna<br />
$field: campo del modelo<br />
$title: nombre a mostrar en la columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setCaption('id', 'COD');<br />
$dataGrid->setCaption('paises_id', 'PAIS');<br />
</source><br />
<br />
<br />
===setTextUpper($field)===<br />
<br />
Transforma toda la cadena de texto en letras Mayúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpper('nombres');<br />
</source><br />
<br />
<br />
===setTextLower($field)===<br />
<br />
Transforma toda la cadena de texto en letras minúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextLower('nombres');<br />
</source><br />
<br />
<br />
===setTextUpperFirst($field)===<br />
<br />
Transforma en mayúscula la primera letra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperFirst('nombres');<br />
</source><br />
<br />
===setTextUpperWords($field)===<br />
<br />
Transforma en mayúscula la primera letra de cada palabra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperWords('nombres');<br />
</source><br />
<br />
<br />
===setTypeDate($field)===<br />
<br />
Formato de salida d/m/Y (01/01/2002) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeDateTime($field)===<br />
<br />
Formato de salida d/m/Y H:m:s (01/01/2002 12:00:00) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeImage($field)===<br />
<br />
Muestra una imagen que se encuentra en la carpeta img/, es decir, solo se almacena el nombre de la imagen en formato jpg, gif o png. Debe existir un subdirectorio llamdo thumbs el cual almacena las imagenes redimencionadas. <br />
El archivo config/datagrid.ini tiene información del tamaño de la imagen redimensionada.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeImage('photo');<br />
</source><br />
<br />
===setTypeMoney($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para el signo y separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeMoney('monto');<br />
</source><br />
<br />
===setTypeNumeric($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para los separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeNumeric('cantidad');<br />
</source><br />
<br />
<br />
<br />
===setTypePercent($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información adicional.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypePercent('porcentaje');<br />
</source><br />
<br />
===setMimes($params=array())===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
array $params: array de parametros <br />
<br />
el primer paramtro es el nombre de la imagen que se encuentra en la carpeta img/ con extensión gif. 'xls:' el siguiente es el nombre de la accion que se encuetra en el mismo controlador creada la grilla, envia el id.<br />
ej: http://dominio.com/kumbia/clientes/verExcel/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setMimes('xls: verExcel', 'pdf: verPdf');<br />
</source><br />
<br />
===setAlias($fields, $data=array())===<br />
Crea alias a los datos que se encuentran en la tabla<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo', 'D'=>'Desactivo'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero', '1'=>'Uno', '2'=>'Dos', '3'=>'Tres', '4'=>'Cuatro', '5'=>'Cinco'));<br />
</source><br />
<br />
===setImage($fields, $data=array())===<br />
Coloca una imagen según el campo. La imagen puede ser cualquier formato soportado y debe estar almacenada en img/datagrid/<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo.png', 'D'=>'Desactivo.png'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero.gif', '1'=>'Uno.gif', '2'=>'Dos.gif', '3'=>'Tres.gif', '4'=>'Cuatro.gif', '5'=>'Cinco.gif'));<br />
</source><br />
<br />
===setClass($fields, $data=array())===<br />
Asigna una clase "CSS" al campo que se despliega según su valor<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setClass('status', array('P'=>'text-color-red', 'A'=>'text-color-green', 'R'=>'text-bold'));<br />
</source><br />
<br />
===auto_filter = true===<br />
Genera por cada celda un select o combo para realizar búsquedas en la misma grilla.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
</source><br />
<br />
===ignoreAutoFilter(array($campos))===<br />
Cuando se realiza un autofiltro, con esta funcion se puede eliminar filtros de una columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
$dataGrid->ignoreAutoFilter(array('id', 'status'));<br />
</source><br />
<br />
===ignore($field)===<br />
No muestra un campo del molelo en la grilla<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->ignore('id');<br />
</source><br />
<br />
===createCol($caption, $html)===<br />
Crea una nueva columna a la grilla<br />
<br />
$caption: Nombre de la columna.<br />
<br />
$html: crea un html para ser visualizado<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->createCol('APROBAR', '<div id="div_a_{id}">' . Html::img('yes.gif', 'APROBAR', 'onclick=aprobar({id}); class="manito" id="img_a_{id}"') . '</div>');<br />
</source><br />
<br />
o<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->createCol('PRIMER V°B°', '');<br />
</source><br />
<br />
===create = $url ===<br />
Visualiza una imagen sobre la grilla y crea un link a la accion crear<br />
<br />
$url: nombre del controlador más la accion<br />
<br />
ej: http://dominio.com/kumbia/clientes/create<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/create';<br />
</source><br />
<br />
<br />
===edit = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/edit/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/edit';<br />
</source><br />
<br />
===delete = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/delete/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = controller_name . '/delete';<br />
</source><br />
<br />
<br />
===delete_confirm = $msg===<br />
Mensaje de alerta para la accion delete.<br />
$msg: se puede visualizar el valor de un campo pasandoselo entre llaves {$field}.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = 'Desea elimina el registro {id}';<br />
</source><br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea elmimar este registro {nombre}, {apellido}?';<br />
</source><br />
<br />
===paginator_name = $paginador===<br />
<br />
$paginador: Nombre del paginador para la grilla por defecto usa el default<br />
puede incluir paginadores del kumbia.<br />
Classic - Digg - Extended - Punbb - Simple<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->paginator_name = 'classic';<br />
</source><br />
<br />
<br />
===url = $url===<br />
Si utiliza paginator la grilla se debe indicar la url para el paginado, sino se indica por defecto obtiene el nombre del controlador y su accion de donde fue creado el dataGrid.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->url = 'usurios/index';<br />
</source><br />
<br />
===show = 10===<br />
número de paginas que se mostraran en el paginador, por defecto 10.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->show = 10;<br />
</source><br />
<br />
===style = $name===<br />
$name: nombre de la hoja de estilo ubicado en public/css/<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->style = 'default';<br />
</source><br />
<br />
===Ejemplo 1 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<br />
<source lang="php"><br />
public function index()<br />
{<br />
$this->clientes = $this->Clientes->find("order: nombre");;<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<source lang="php"><br />
View::content();<br />
View::helpers('dataGrid');<br />
$dataGrid = new dataGrid($clientes);<br />
View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid));<br />
</source><br />
<br />
===Ejemplo 2 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<source lang="php"><br />
public function index($page=1)<br />
{<br />
$this->clientes = $this->Clientes->paginate('per_page: 20', "page: $page");<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<br />
<source lang="php"><br />
<?php View::content() ?><br />
<?php View::helpers('dataGrid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($clientes);<br />
$dataGrid->setValue('ciudades_id', 'nombre');<br />
$dataGrid->setTextLower('nombre');<br />
$dataGrid->setTypeImage('photo');<br />
$dataGrid->setMimes('xls: verXls');<br />
$dataGrid->ignore('id');<br />
$dataGrid->setCaption('ciudades_id', 'CIUDAD');<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete_confirm = 'Eliminar el registro {rut}-{dv}';<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
<br />
<br />
===Screenshots===<br />
Modelo Paises<br />
<br />
[[Archivo:Model_paises.gif]]<br />
<br />
* paises_controller.php<br />
<br />
<source lang='php'> <br />
class PaisesController extends ApplicationController{<br />
public function index($page=1)<br />
{<br />
$this->paises = Load::model('paises')->paginate('per_page: 10', "page: $page");<br />
}<br />
}<br />
</source><br />
<br />
* views/paises/index.phtml<br />
<br />
<source lang='php'> <br />
<?php View::content() ?><br />
<?php View::helpers('data_grid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($paises);<br />
$dataGrid->setCaption('nombre', 'PAIS');<br />
$dataGrid->setTypeImage('imagen');<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea eliminar el pais: {nombre}?';<br />
<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
===Descargar===<br />
[https://sourceforge.net/projects/helperdatagrid/files/dataGrid%20Jquery-ui%20Beta1%20rc0.9.tar.gz/download Descargar] para '''Spirit v1.0 beta1''' con temas de jquery-ui<br />
<br />
<br />
<br />
<br />
<br />
[[Categoría:Helpers]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Helper_Datagrid&diff=2829Helper Datagrid2010-06-30T15:17:13Z<p>Fidelio: /* createCol($caption, $html) */</p>
<hr />
<div>== DATAGRID FACIL DE USAR.==<br />
<br />
Invocando el helper datagrid y pasando el model se crea automáticamente una grilla con los campos (fields). La forma de modificar el diseño del datagrid es 100% hoja estilo 'CSS'. También con un poco de programación podrás<br />
ocultar campos, cambiar los titulos de los campos, crear link por fila el cual llamara una acción pasando el<br />
id como parámetro, link para editar y eliminar, personalizar mensajes de advertencias. asignar el tipo de campo<br />
que se está visualizando (moneda, número, porcentaje o una imagen). crear paginado.<br />
<br />
<br />
<br />
===setValue($field_id, $field)===<br />
<br />
Asigna un campo a mostrar de la tabla _id<br />
$field_id: campo_id del modelo.<br />
$field: nombre del campo que se encuentra en la tabla relacionada<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
</source><br />
<br />
<br />
<source lang=php><br />
$dataGrid = new($Usuarios);<br />
$dataGrid->setValue('roles_id', 'rol');<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
$dataGrid->setValue('ciudades_id', 'ciudad');<br />
</source><br />
<br />
<br />
===setCaption($field, $title)===<br />
<br />
Cambia el nombre de una columna<br />
$field: campo del modelo<br />
$title: nombre a mostrar en la columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setCaption('id', 'COD');<br />
$dataGrid->setCaption('paises_id', 'PAIS');<br />
</source><br />
<br />
<br />
===setTextUpper($field)===<br />
<br />
Transforma toda la cadena de texto en letras Mayúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpper('nombres');<br />
</source><br />
<br />
<br />
===setTextLower($field)===<br />
<br />
Transforma toda la cadena de texto en letras minúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextLower('nombres');<br />
</source><br />
<br />
<br />
===setTextUpperFirst($field)===<br />
<br />
Transforma en mayúscula la primera letra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperFirst('nombres');<br />
</source><br />
<br />
===setTextUpperWords($field)===<br />
<br />
Transforma en mayúscula la primera letra de cada palabra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperWords('nombres');<br />
</source><br />
<br />
<br />
===setTypeDate($field)===<br />
<br />
Formato de salida d/m/Y (01/01/2002) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeDateTime($field)===<br />
<br />
Formato de salida d/m/Y H:m:s (01/01/2002 12:00:00) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeImage($field)===<br />
<br />
Muestra una imagen que se encuentra en la carpeta img/, es decir, solo se almacena el nombre de la imagen en formato jpg, gif o png. Debe existir un subdirectorio llamdo thumbs el cual almacena las imagenes redimencionadas. <br />
El archivo config/datagrid.ini tiene información del tamaño de la imagen redimensionada.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeImage('photo');<br />
</source><br />
<br />
===setTypeMoney($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para el signo y separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeMoney('monto');<br />
</source><br />
<br />
===setTypeNumeric($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para los separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeNumeric('cantidad');<br />
</source><br />
<br />
<br />
<br />
===setTypePercent($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información adicional.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypePercent('porcentaje');<br />
</source><br />
<br />
===setMimes($params=array())===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
array $params: array de parametros <br />
<br />
el primer paramtro es el nombre de la imagen que se encuentra en la carpeta img/ con extensión gif. 'xls:' el siguiente es el nombre de la accion que se encuetra en el mismo controlador creada la grilla, envia el id.<br />
ej: http://dominio.com/kumbia/clientes/verExcel/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setMimes('xls: verExcel', 'pdf: verPdf');<br />
</source><br />
<br />
===setAlias($fields, $data=array())===<br />
Crea alias a los datos que se encuentran en la tabla<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo', 'D'=>'Desactivo'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero', '1'=>'Uno', '2'=>'Dos', '3'=>'Tres', '4'=>'Cuatro', '5'=>'Cinco'));<br />
</source><br />
<br />
===setImage($fields, $data=array())===<br />
Coloca una imagen según el campo. La imagen puede ser cualquier formato soportado y debe estar almacenada en img/datagrid/<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo.png', 'D'=>'Desactivo.png'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero.gif', '1'=>'Uno.gif', '2'=>'Dos.gif', '3'=>'Tres.gif', '4'=>'Cuatro.gif', '5'=>'Cinco.gif'));<br />
</source><br />
<br />
<br />
===auto_filter = true===<br />
Genera por cada celda un select o combo para realizar búsquedas en la misma grilla.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
</source><br />
<br />
===ignoreAutoFilter(array($campos))===<br />
Cuando se realiza un autofiltro, con esta funcion se puede eliminar filtros de una columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
$dataGrid->ignoreAutoFilter(array('id', 'status'));<br />
</source><br />
<br />
===ignore($field)===<br />
No muestra un campo del molelo en la grilla<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->ignore('id');<br />
</source><br />
<br />
===createCol($caption, $html)===<br />
Crea una nueva columna a la grilla<br />
<br />
$caption: Nombre de la columna.<br />
<br />
$html: crea un html para ser visualizado<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->createCol('APROBAR', '<div id="div_a_{id}">' . Html::img('yes.gif', 'APROBAR', 'onclick=aprobar({id}); class="manito" id="img_a_{id}"') . '</div>');<br />
</source><br />
<br />
o<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->createCol('PRIMER V°B°', '');<br />
</source><br />
<br />
===create = $url ===<br />
Visualiza una imagen sobre la grilla y crea un link a la accion crear<br />
<br />
$url: nombre del controlador más la accion<br />
<br />
ej: http://dominio.com/kumbia/clientes/create<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/create';<br />
</source><br />
<br />
<br />
===edit = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/edit/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/edit';<br />
</source><br />
<br />
===delete = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/delete/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = controller_name . '/delete';<br />
</source><br />
<br />
<br />
===delete_confirm = $msg===<br />
Mensaje de alerta para la accion delete.<br />
$msg: se puede visualizar el valor de un campo pasandoselo entre llaves {$field}.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = 'Desea elimina el registro {id}';<br />
</source><br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea elmimar este registro {nombre}, {apellido}?';<br />
</source><br />
<br />
===paginator_name = $paginador===<br />
<br />
$paginador: Nombre del paginador para la grilla por defecto usa el default<br />
puede incluir paginadores del kumbia.<br />
Classic - Digg - Extended - Punbb - Simple<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->paginator_name = 'classic';<br />
</source><br />
<br />
<br />
===url = $url===<br />
Si utiliza paginator la grilla se debe indicar la url para el paginado, sino se indica por defecto obtiene el nombre del controlador y su accion de donde fue creado el dataGrid.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->url = 'usurios/index';<br />
</source><br />
<br />
===show = 10===<br />
número de paginas que se mostraran en el paginador, por defecto 10.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->show = 10;<br />
</source><br />
<br />
===style = $name===<br />
$name: nombre de la hoja de estilo ubicado en public/css/<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->style = 'default';<br />
</source><br />
<br />
===Ejemplo 1 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<br />
<source lang="php"><br />
public function index()<br />
{<br />
$this->clientes = $this->Clientes->find("order: nombre");;<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<source lang="php"><br />
View::content();<br />
View::helpers('dataGrid');<br />
$dataGrid = new dataGrid($clientes);<br />
View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid));<br />
</source><br />
<br />
===Ejemplo 2 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<source lang="php"><br />
public function index($page=1)<br />
{<br />
$this->clientes = $this->Clientes->paginate('per_page: 20', "page: $page");<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<br />
<source lang="php"><br />
<?php View::content() ?><br />
<?php View::helpers('dataGrid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($clientes);<br />
$dataGrid->setValue('ciudades_id', 'nombre');<br />
$dataGrid->setTextLower('nombre');<br />
$dataGrid->setTypeImage('photo');<br />
$dataGrid->setMimes('xls: verXls');<br />
$dataGrid->ignore('id');<br />
$dataGrid->setCaption('ciudades_id', 'CIUDAD');<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete_confirm = 'Eliminar el registro {rut}-{dv}';<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
<br />
<br />
===Screenshots===<br />
Modelo Paises<br />
<br />
[[Archivo:Model_paises.gif]]<br />
<br />
* paises_controller.php<br />
<br />
<source lang='php'> <br />
class PaisesController extends ApplicationController{<br />
public function index($page=1)<br />
{<br />
$this->paises = Load::model('paises')->paginate('per_page: 10', "page: $page");<br />
}<br />
}<br />
</source><br />
<br />
* views/paises/index.phtml<br />
<br />
<source lang='php'> <br />
<?php View::content() ?><br />
<?php View::helpers('data_grid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($paises);<br />
$dataGrid->setCaption('nombre', 'PAIS');<br />
$dataGrid->setTypeImage('imagen');<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea eliminar el pais: {nombre}?';<br />
<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
===Descargar===<br />
[https://sourceforge.net/projects/helperdatagrid/files/dataGrid%20Jquery-ui%20Beta1%20rc0.9.tar.gz/download Descargar] para '''Spirit v1.0 beta1''' con temas de jquery-ui<br />
<br />
<br />
<br />
<br />
<br />
[[Categoría:Helpers]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Helper_Datagrid&diff=2828Helper Datagrid2010-06-30T15:12:13Z<p>Fidelio: /* ignore($field) */</p>
<hr />
<div>== DATAGRID FACIL DE USAR.==<br />
<br />
Invocando el helper datagrid y pasando el model se crea automáticamente una grilla con los campos (fields). La forma de modificar el diseño del datagrid es 100% hoja estilo 'CSS'. También con un poco de programación podrás<br />
ocultar campos, cambiar los titulos de los campos, crear link por fila el cual llamara una acción pasando el<br />
id como parámetro, link para editar y eliminar, personalizar mensajes de advertencias. asignar el tipo de campo<br />
que se está visualizando (moneda, número, porcentaje o una imagen). crear paginado.<br />
<br />
<br />
<br />
===setValue($field_id, $field)===<br />
<br />
Asigna un campo a mostrar de la tabla _id<br />
$field_id: campo_id del modelo.<br />
$field: nombre del campo que se encuentra en la tabla relacionada<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
</source><br />
<br />
<br />
<source lang=php><br />
$dataGrid = new($Usuarios);<br />
$dataGrid->setValue('roles_id', 'rol');<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
$dataGrid->setValue('ciudades_id', 'ciudad');<br />
</source><br />
<br />
<br />
===setCaption($field, $title)===<br />
<br />
Cambia el nombre de una columna<br />
$field: campo del modelo<br />
$title: nombre a mostrar en la columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setCaption('id', 'COD');<br />
$dataGrid->setCaption('paises_id', 'PAIS');<br />
</source><br />
<br />
<br />
===setTextUpper($field)===<br />
<br />
Transforma toda la cadena de texto en letras Mayúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpper('nombres');<br />
</source><br />
<br />
<br />
===setTextLower($field)===<br />
<br />
Transforma toda la cadena de texto en letras minúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextLower('nombres');<br />
</source><br />
<br />
<br />
===setTextUpperFirst($field)===<br />
<br />
Transforma en mayúscula la primera letra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperFirst('nombres');<br />
</source><br />
<br />
===setTextUpperWords($field)===<br />
<br />
Transforma en mayúscula la primera letra de cada palabra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperWords('nombres');<br />
</source><br />
<br />
<br />
===setTypeDate($field)===<br />
<br />
Formato de salida d/m/Y (01/01/2002) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeDateTime($field)===<br />
<br />
Formato de salida d/m/Y H:m:s (01/01/2002 12:00:00) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeImage($field)===<br />
<br />
Muestra una imagen que se encuentra en la carpeta img/, es decir, solo se almacena el nombre de la imagen en formato jpg, gif o png. Debe existir un subdirectorio llamdo thumbs el cual almacena las imagenes redimencionadas. <br />
El archivo config/datagrid.ini tiene información del tamaño de la imagen redimensionada.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeImage('photo');<br />
</source><br />
<br />
===setTypeMoney($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para el signo y separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeMoney('monto');<br />
</source><br />
<br />
===setTypeNumeric($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para los separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeNumeric('cantidad');<br />
</source><br />
<br />
<br />
<br />
===setTypePercent($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información adicional.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypePercent('porcentaje');<br />
</source><br />
<br />
===setMimes($params=array())===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
array $params: array de parametros <br />
<br />
el primer paramtro es el nombre de la imagen que se encuentra en la carpeta img/ con extensión gif. 'xls:' el siguiente es el nombre de la accion que se encuetra en el mismo controlador creada la grilla, envia el id.<br />
ej: http://dominio.com/kumbia/clientes/verExcel/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setMimes('xls: verExcel', 'pdf: verPdf');<br />
</source><br />
<br />
===setAlias($fields, $data=array())===<br />
Crea alias a los datos que se encuentran en la tabla<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo', 'D'=>'Desactivo'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero', '1'=>'Uno', '2'=>'Dos', '3'=>'Tres', '4'=>'Cuatro', '5'=>'Cinco'));<br />
</source><br />
<br />
===setImage($fields, $data=array())===<br />
Coloca una imagen según el campo. La imagen puede ser cualquier formato soportado y debe estar almacenada en img/datagrid/<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo.png', 'D'=>'Desactivo.png'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero.gif', '1'=>'Uno.gif', '2'=>'Dos.gif', '3'=>'Tres.gif', '4'=>'Cuatro.gif', '5'=>'Cinco.gif'));<br />
</source><br />
<br />
<br />
===auto_filter = true===<br />
Genera por cada celda un select o combo para realizar búsquedas en la misma grilla.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
</source><br />
<br />
===ignoreAutoFilter(array($campos))===<br />
Cuando se realiza un autofiltro, con esta funcion se puede eliminar filtros de una columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
$dataGrid->ignoreAutoFilter(array('id', 'status'));<br />
</source><br />
<br />
===ignore($field)===<br />
No muestra un campo del molelo en la grilla<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->ignore('id');<br />
</source><br />
<br />
===createCol($caption, $html)===<br />
Crea una nueva columna a la grilla<br />
<br />
$caption: Nombre de la columna.<br />
$html: crea un html para ser visualizado<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->createCol('APROBAR', '<div id="div_a_{id}">' . Html::img('yes.gif', 'APROBAR', 'onclick=aprobar({id}); class="manito" id="img_a_{id}"') . '</div>');<br />
</source><br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->createCol('PRIMER V°B°', '');<br />
</source><br />
<br />
===create = $url ===<br />
Visualiza una imagen sobre la grilla y crea un link a la accion crear<br />
<br />
$url: nombre del controlador más la accion<br />
<br />
ej: http://dominio.com/kumbia/clientes/create<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/create';<br />
</source><br />
<br />
<br />
===edit = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/edit/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/edit';<br />
</source><br />
<br />
===delete = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/delete/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = controller_name . '/delete';<br />
</source><br />
<br />
<br />
===delete_confirm = $msg===<br />
Mensaje de alerta para la accion delete.<br />
$msg: se puede visualizar el valor de un campo pasandoselo entre llaves {$field}.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = 'Desea elimina el registro {id}';<br />
</source><br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea elmimar este registro {nombre}, {apellido}?';<br />
</source><br />
<br />
===paginator_name = $paginador===<br />
<br />
$paginador: Nombre del paginador para la grilla por defecto usa el default<br />
puede incluir paginadores del kumbia.<br />
Classic - Digg - Extended - Punbb - Simple<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->paginator_name = 'classic';<br />
</source><br />
<br />
<br />
===url = $url===<br />
Si utiliza paginator la grilla se debe indicar la url para el paginado, sino se indica por defecto obtiene el nombre del controlador y su accion de donde fue creado el dataGrid.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->url = 'usurios/index';<br />
</source><br />
<br />
===show = 10===<br />
número de paginas que se mostraran en el paginador, por defecto 10.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->show = 10;<br />
</source><br />
<br />
===style = $name===<br />
$name: nombre de la hoja de estilo ubicado en public/css/<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->style = 'default';<br />
</source><br />
<br />
===Ejemplo 1 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<br />
<source lang="php"><br />
public function index()<br />
{<br />
$this->clientes = $this->Clientes->find("order: nombre");;<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<source lang="php"><br />
View::content();<br />
View::helpers('dataGrid');<br />
$dataGrid = new dataGrid($clientes);<br />
View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid));<br />
</source><br />
<br />
===Ejemplo 2 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<source lang="php"><br />
public function index($page=1)<br />
{<br />
$this->clientes = $this->Clientes->paginate('per_page: 20', "page: $page");<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<br />
<source lang="php"><br />
<?php View::content() ?><br />
<?php View::helpers('dataGrid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($clientes);<br />
$dataGrid->setValue('ciudades_id', 'nombre');<br />
$dataGrid->setTextLower('nombre');<br />
$dataGrid->setTypeImage('photo');<br />
$dataGrid->setMimes('xls: verXls');<br />
$dataGrid->ignore('id');<br />
$dataGrid->setCaption('ciudades_id', 'CIUDAD');<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete_confirm = 'Eliminar el registro {rut}-{dv}';<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
<br />
<br />
===Screenshots===<br />
Modelo Paises<br />
<br />
[[Archivo:Model_paises.gif]]<br />
<br />
* paises_controller.php<br />
<br />
<source lang='php'> <br />
class PaisesController extends ApplicationController{<br />
public function index($page=1)<br />
{<br />
$this->paises = Load::model('paises')->paginate('per_page: 10', "page: $page");<br />
}<br />
}<br />
</source><br />
<br />
* views/paises/index.phtml<br />
<br />
<source lang='php'> <br />
<?php View::content() ?><br />
<?php View::helpers('data_grid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($paises);<br />
$dataGrid->setCaption('nombre', 'PAIS');<br />
$dataGrid->setTypeImage('imagen');<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea eliminar el pais: {nombre}?';<br />
<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
===Descargar===<br />
[https://sourceforge.net/projects/helperdatagrid/files/dataGrid%20Jquery-ui%20Beta1%20rc0.9.tar.gz/download Descargar] para '''Spirit v1.0 beta1''' con temas de jquery-ui<br />
<br />
<br />
<br />
<br />
<br />
[[Categoría:Helpers]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Helper_Datagrid&diff=2827Helper Datagrid2010-06-29T22:09:28Z<p>Fidelio: /* ignoreAutoFilter(array($campos)) */</p>
<hr />
<div>== DATAGRID FACIL DE USAR.==<br />
<br />
Invocando el helper datagrid y pasando el model se crea automáticamente una grilla con los campos (fields). La forma de modificar el diseño del datagrid es 100% hoja estilo 'CSS'. También con un poco de programación podrás<br />
ocultar campos, cambiar los titulos de los campos, crear link por fila el cual llamara una acción pasando el<br />
id como parámetro, link para editar y eliminar, personalizar mensajes de advertencias. asignar el tipo de campo<br />
que se está visualizando (moneda, número, porcentaje o una imagen). crear paginado.<br />
<br />
<br />
<br />
===setValue($field_id, $field)===<br />
<br />
Asigna un campo a mostrar de la tabla _id<br />
$field_id: campo_id del modelo.<br />
$field: nombre del campo que se encuentra en la tabla relacionada<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
</source><br />
<br />
<br />
<source lang=php><br />
$dataGrid = new($Usuarios);<br />
$dataGrid->setValue('roles_id', 'rol');<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
$dataGrid->setValue('ciudades_id', 'ciudad');<br />
</source><br />
<br />
<br />
===setCaption($field, $title)===<br />
<br />
Cambia el nombre de una columna<br />
$field: campo del modelo<br />
$title: nombre a mostrar en la columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setCaption('id', 'COD');<br />
$dataGrid->setCaption('paises_id', 'PAIS');<br />
</source><br />
<br />
<br />
===setTextUpper($field)===<br />
<br />
Transforma toda la cadena de texto en letras Mayúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpper('nombres');<br />
</source><br />
<br />
<br />
===setTextLower($field)===<br />
<br />
Transforma toda la cadena de texto en letras minúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextLower('nombres');<br />
</source><br />
<br />
<br />
===setTextUpperFirst($field)===<br />
<br />
Transforma en mayúscula la primera letra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperFirst('nombres');<br />
</source><br />
<br />
===setTextUpperWords($field)===<br />
<br />
Transforma en mayúscula la primera letra de cada palabra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperWords('nombres');<br />
</source><br />
<br />
<br />
===setTypeDate($field)===<br />
<br />
Formato de salida d/m/Y (01/01/2002) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeDateTime($field)===<br />
<br />
Formato de salida d/m/Y H:m:s (01/01/2002 12:00:00) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeImage($field)===<br />
<br />
Muestra una imagen que se encuentra en la carpeta img/, es decir, solo se almacena el nombre de la imagen en formato jpg, gif o png. Debe existir un subdirectorio llamdo thumbs el cual almacena las imagenes redimencionadas. <br />
El archivo config/datagrid.ini tiene información del tamaño de la imagen redimensionada.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeImage('photo');<br />
</source><br />
<br />
===setTypeMoney($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para el signo y separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeMoney('monto');<br />
</source><br />
<br />
===setTypeNumeric($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para los separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeNumeric('cantidad');<br />
</source><br />
<br />
<br />
<br />
===setTypePercent($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información adicional.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypePercent('porcentaje');<br />
</source><br />
<br />
===setMimes($params=array())===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
array $params: array de parametros <br />
<br />
el primer paramtro es el nombre de la imagen que se encuentra en la carpeta img/ con extensión gif. 'xls:' el siguiente es el nombre de la accion que se encuetra en el mismo controlador creada la grilla, envia el id.<br />
ej: http://dominio.com/kumbia/clientes/verExcel/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setMimes('xls: verExcel', 'pdf: verPdf');<br />
</source><br />
<br />
===setAlias($fields, $data=array())===<br />
Crea alias a los datos que se encuentran en la tabla<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo', 'D'=>'Desactivo'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero', '1'=>'Uno', '2'=>'Dos', '3'=>'Tres', '4'=>'Cuatro', '5'=>'Cinco'));<br />
</source><br />
<br />
===setImage($fields, $data=array())===<br />
Coloca una imagen según el campo. La imagen puede ser cualquier formato soportado y debe estar almacenada en img/datagrid/<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo.png', 'D'=>'Desactivo.png'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero.gif', '1'=>'Uno.gif', '2'=>'Dos.gif', '3'=>'Tres.gif', '4'=>'Cuatro.gif', '5'=>'Cinco.gif'));<br />
</source><br />
<br />
<br />
===auto_filter = true===<br />
Genera por cada celda un select o combo para realizar búsquedas en la misma grilla.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
</source><br />
<br />
===ignoreAutoFilter(array($campos))===<br />
Cuando se realiza un autofiltro, con esta funcion se puede eliminar filtros de una columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
$dataGrid->ignoreAutoFilter(array('id', 'status'));<br />
</source><br />
<br />
===ignore($field)===<br />
No muestra un campo del molelo en la grilla<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->ignore('id');<br />
</source><br />
<br />
===create = $url ===<br />
Visualiza una imagen sobre la grilla y crea un link a la accion crear<br />
<br />
$url: nombre del controlador más la accion<br />
<br />
ej: http://dominio.com/kumbia/clientes/create<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/create';<br />
</source><br />
<br />
<br />
===edit = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/edit/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/edit';<br />
</source><br />
<br />
===delete = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/delete/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = controller_name . '/delete';<br />
</source><br />
<br />
<br />
===delete_confirm = $msg===<br />
Mensaje de alerta para la accion delete.<br />
$msg: se puede visualizar el valor de un campo pasandoselo entre llaves {$field}.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = 'Desea elimina el registro {id}';<br />
</source><br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea elmimar este registro {nombre}, {apellido}?';<br />
</source><br />
<br />
===paginator_name = $paginador===<br />
<br />
$paginador: Nombre del paginador para la grilla por defecto usa el default<br />
puede incluir paginadores del kumbia.<br />
Classic - Digg - Extended - Punbb - Simple<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->paginator_name = 'classic';<br />
</source><br />
<br />
<br />
===url = $url===<br />
Si utiliza paginator la grilla se debe indicar la url para el paginado, sino se indica por defecto obtiene el nombre del controlador y su accion de donde fue creado el dataGrid.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->url = 'usurios/index';<br />
</source><br />
<br />
===show = 10===<br />
número de paginas que se mostraran en el paginador, por defecto 10.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->show = 10;<br />
</source><br />
<br />
===style = $name===<br />
$name: nombre de la hoja de estilo ubicado en public/css/<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->style = 'default';<br />
</source><br />
<br />
===Ejemplo 1 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<br />
<source lang="php"><br />
public function index()<br />
{<br />
$this->clientes = $this->Clientes->find("order: nombre");;<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<source lang="php"><br />
View::content();<br />
View::helpers('dataGrid');<br />
$dataGrid = new dataGrid($clientes);<br />
View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid));<br />
</source><br />
<br />
===Ejemplo 2 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<source lang="php"><br />
public function index($page=1)<br />
{<br />
$this->clientes = $this->Clientes->paginate('per_page: 20', "page: $page");<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<br />
<source lang="php"><br />
<?php View::content() ?><br />
<?php View::helpers('dataGrid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($clientes);<br />
$dataGrid->setValue('ciudades_id', 'nombre');<br />
$dataGrid->setTextLower('nombre');<br />
$dataGrid->setTypeImage('photo');<br />
$dataGrid->setMimes('xls: verXls');<br />
$dataGrid->ignore('id');<br />
$dataGrid->setCaption('ciudades_id', 'CIUDAD');<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete_confirm = 'Eliminar el registro {rut}-{dv}';<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
<br />
<br />
===Screenshots===<br />
Modelo Paises<br />
<br />
[[Archivo:Model_paises.gif]]<br />
<br />
* paises_controller.php<br />
<br />
<source lang='php'> <br />
class PaisesController extends ApplicationController{<br />
public function index($page=1)<br />
{<br />
$this->paises = Load::model('paises')->paginate('per_page: 10', "page: $page");<br />
}<br />
}<br />
</source><br />
<br />
* views/paises/index.phtml<br />
<br />
<source lang='php'> <br />
<?php View::content() ?><br />
<?php View::helpers('data_grid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($paises);<br />
$dataGrid->setCaption('nombre', 'PAIS');<br />
$dataGrid->setTypeImage('imagen');<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea eliminar el pais: {nombre}?';<br />
<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
===Descargar===<br />
[https://sourceforge.net/projects/helperdatagrid/files/dataGrid%20Jquery-ui%20Beta1%20rc0.9.tar.gz/download Descargar] para '''Spirit v1.0 beta1''' con temas de jquery-ui<br />
<br />
<br />
<br />
<br />
<br />
[[Categoría:Helpers]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Helper_Datagrid&diff=2826Helper Datagrid2010-06-29T22:08:59Z<p>Fidelio: /* auto_filter = true */</p>
<hr />
<div>== DATAGRID FACIL DE USAR.==<br />
<br />
Invocando el helper datagrid y pasando el model se crea automáticamente una grilla con los campos (fields). La forma de modificar el diseño del datagrid es 100% hoja estilo 'CSS'. También con un poco de programación podrás<br />
ocultar campos, cambiar los titulos de los campos, crear link por fila el cual llamara una acción pasando el<br />
id como parámetro, link para editar y eliminar, personalizar mensajes de advertencias. asignar el tipo de campo<br />
que se está visualizando (moneda, número, porcentaje o una imagen). crear paginado.<br />
<br />
<br />
<br />
===setValue($field_id, $field)===<br />
<br />
Asigna un campo a mostrar de la tabla _id<br />
$field_id: campo_id del modelo.<br />
$field: nombre del campo que se encuentra en la tabla relacionada<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
</source><br />
<br />
<br />
<source lang=php><br />
$dataGrid = new($Usuarios);<br />
$dataGrid->setValue('roles_id', 'rol');<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
$dataGrid->setValue('ciudades_id', 'ciudad');<br />
</source><br />
<br />
<br />
===setCaption($field, $title)===<br />
<br />
Cambia el nombre de una columna<br />
$field: campo del modelo<br />
$title: nombre a mostrar en la columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setCaption('id', 'COD');<br />
$dataGrid->setCaption('paises_id', 'PAIS');<br />
</source><br />
<br />
<br />
===setTextUpper($field)===<br />
<br />
Transforma toda la cadena de texto en letras Mayúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpper('nombres');<br />
</source><br />
<br />
<br />
===setTextLower($field)===<br />
<br />
Transforma toda la cadena de texto en letras minúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextLower('nombres');<br />
</source><br />
<br />
<br />
===setTextUpperFirst($field)===<br />
<br />
Transforma en mayúscula la primera letra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperFirst('nombres');<br />
</source><br />
<br />
===setTextUpperWords($field)===<br />
<br />
Transforma en mayúscula la primera letra de cada palabra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperWords('nombres');<br />
</source><br />
<br />
<br />
===setTypeDate($field)===<br />
<br />
Formato de salida d/m/Y (01/01/2002) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeDateTime($field)===<br />
<br />
Formato de salida d/m/Y H:m:s (01/01/2002 12:00:00) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeImage($field)===<br />
<br />
Muestra una imagen que se encuentra en la carpeta img/, es decir, solo se almacena el nombre de la imagen en formato jpg, gif o png. Debe existir un subdirectorio llamdo thumbs el cual almacena las imagenes redimencionadas. <br />
El archivo config/datagrid.ini tiene información del tamaño de la imagen redimensionada.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeImage('photo');<br />
</source><br />
<br />
===setTypeMoney($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para el signo y separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeMoney('monto');<br />
</source><br />
<br />
===setTypeNumeric($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para los separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeNumeric('cantidad');<br />
</source><br />
<br />
<br />
<br />
===setTypePercent($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información adicional.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypePercent('porcentaje');<br />
</source><br />
<br />
===setMimes($params=array())===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
array $params: array de parametros <br />
<br />
el primer paramtro es el nombre de la imagen que se encuentra en la carpeta img/ con extensión gif. 'xls:' el siguiente es el nombre de la accion que se encuetra en el mismo controlador creada la grilla, envia el id.<br />
ej: http://dominio.com/kumbia/clientes/verExcel/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setMimes('xls: verExcel', 'pdf: verPdf');<br />
</source><br />
<br />
===setAlias($fields, $data=array())===<br />
Crea alias a los datos que se encuentran en la tabla<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo', 'D'=>'Desactivo'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero', '1'=>'Uno', '2'=>'Dos', '3'=>'Tres', '4'=>'Cuatro', '5'=>'Cinco'));<br />
</source><br />
<br />
===setImage($fields, $data=array())===<br />
Coloca una imagen según el campo. La imagen puede ser cualquier formato soportado y debe estar almacenada en img/datagrid/<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo.png', 'D'=>'Desactivo.png'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero.gif', '1'=>'Uno.gif', '2'=>'Dos.gif', '3'=>'Tres.gif', '4'=>'Cuatro.gif', '5'=>'Cinco.gif'));<br />
</source><br />
<br />
<br />
===auto_filter = true===<br />
Genera por cada celda un select o combo para realizar búsquedas en la misma grilla.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
</source><br />
<br />
===ignoreAutoFilter(array($campos))===<br />
Cuando se realiza un autofiltro, con esta funcion se puede eliminar filtros de una columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
$dataGrid->ignoreAutoFilter('id', 'status');<br />
</source><br />
<br />
===ignore($field)===<br />
No muestra un campo del molelo en la grilla<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->ignore('id');<br />
</source><br />
<br />
===create = $url ===<br />
Visualiza una imagen sobre la grilla y crea un link a la accion crear<br />
<br />
$url: nombre del controlador más la accion<br />
<br />
ej: http://dominio.com/kumbia/clientes/create<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/create';<br />
</source><br />
<br />
<br />
===edit = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/edit/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/edit';<br />
</source><br />
<br />
===delete = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/delete/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = controller_name . '/delete';<br />
</source><br />
<br />
<br />
===delete_confirm = $msg===<br />
Mensaje de alerta para la accion delete.<br />
$msg: se puede visualizar el valor de un campo pasandoselo entre llaves {$field}.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = 'Desea elimina el registro {id}';<br />
</source><br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea elmimar este registro {nombre}, {apellido}?';<br />
</source><br />
<br />
===paginator_name = $paginador===<br />
<br />
$paginador: Nombre del paginador para la grilla por defecto usa el default<br />
puede incluir paginadores del kumbia.<br />
Classic - Digg - Extended - Punbb - Simple<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->paginator_name = 'classic';<br />
</source><br />
<br />
<br />
===url = $url===<br />
Si utiliza paginator la grilla se debe indicar la url para el paginado, sino se indica por defecto obtiene el nombre del controlador y su accion de donde fue creado el dataGrid.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->url = 'usurios/index';<br />
</source><br />
<br />
===show = 10===<br />
número de paginas que se mostraran en el paginador, por defecto 10.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->show = 10;<br />
</source><br />
<br />
===style = $name===<br />
$name: nombre de la hoja de estilo ubicado en public/css/<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->style = 'default';<br />
</source><br />
<br />
===Ejemplo 1 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<br />
<source lang="php"><br />
public function index()<br />
{<br />
$this->clientes = $this->Clientes->find("order: nombre");;<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<source lang="php"><br />
View::content();<br />
View::helpers('dataGrid');<br />
$dataGrid = new dataGrid($clientes);<br />
View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid));<br />
</source><br />
<br />
===Ejemplo 2 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<source lang="php"><br />
public function index($page=1)<br />
{<br />
$this->clientes = $this->Clientes->paginate('per_page: 20', "page: $page");<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<br />
<source lang="php"><br />
<?php View::content() ?><br />
<?php View::helpers('dataGrid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($clientes);<br />
$dataGrid->setValue('ciudades_id', 'nombre');<br />
$dataGrid->setTextLower('nombre');<br />
$dataGrid->setTypeImage('photo');<br />
$dataGrid->setMimes('xls: verXls');<br />
$dataGrid->ignore('id');<br />
$dataGrid->setCaption('ciudades_id', 'CIUDAD');<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete_confirm = 'Eliminar el registro {rut}-{dv}';<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
<br />
<br />
===Screenshots===<br />
Modelo Paises<br />
<br />
[[Archivo:Model_paises.gif]]<br />
<br />
* paises_controller.php<br />
<br />
<source lang='php'> <br />
class PaisesController extends ApplicationController{<br />
public function index($page=1)<br />
{<br />
$this->paises = Load::model('paises')->paginate('per_page: 10', "page: $page");<br />
}<br />
}<br />
</source><br />
<br />
* views/paises/index.phtml<br />
<br />
<source lang='php'> <br />
<?php View::content() ?><br />
<?php View::helpers('data_grid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($paises);<br />
$dataGrid->setCaption('nombre', 'PAIS');<br />
$dataGrid->setTypeImage('imagen');<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea eliminar el pais: {nombre}?';<br />
<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
===Descargar===<br />
[https://sourceforge.net/projects/helperdatagrid/files/dataGrid%20Jquery-ui%20Beta1%20rc0.9.tar.gz/download Descargar] para '''Spirit v1.0 beta1''' con temas de jquery-ui<br />
<br />
<br />
<br />
<br />
<br />
[[Categoría:Helpers]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Helper_Datagrid&diff=2825Helper Datagrid2010-06-29T21:27:15Z<p>Fidelio: /* setTypeDate($field) */</p>
<hr />
<div>== DATAGRID FACIL DE USAR.==<br />
<br />
Invocando el helper datagrid y pasando el model se crea automáticamente una grilla con los campos (fields). La forma de modificar el diseño del datagrid es 100% hoja estilo 'CSS'. También con un poco de programación podrás<br />
ocultar campos, cambiar los titulos de los campos, crear link por fila el cual llamara una acción pasando el<br />
id como parámetro, link para editar y eliminar, personalizar mensajes de advertencias. asignar el tipo de campo<br />
que se está visualizando (moneda, número, porcentaje o una imagen). crear paginado.<br />
<br />
<br />
<br />
===setValue($field_id, $field)===<br />
<br />
Asigna un campo a mostrar de la tabla _id<br />
$field_id: campo_id del modelo.<br />
$field: nombre del campo que se encuentra en la tabla relacionada<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
</source><br />
<br />
<br />
<source lang=php><br />
$dataGrid = new($Usuarios);<br />
$dataGrid->setValue('roles_id', 'rol');<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
$dataGrid->setValue('ciudades_id', 'ciudad');<br />
</source><br />
<br />
<br />
===setCaption($field, $title)===<br />
<br />
Cambia el nombre de una columna<br />
$field: campo del modelo<br />
$title: nombre a mostrar en la columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setCaption('id', 'COD');<br />
$dataGrid->setCaption('paises_id', 'PAIS');<br />
</source><br />
<br />
<br />
===setTextUpper($field)===<br />
<br />
Transforma toda la cadena de texto en letras Mayúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpper('nombres');<br />
</source><br />
<br />
<br />
===setTextLower($field)===<br />
<br />
Transforma toda la cadena de texto en letras minúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextLower('nombres');<br />
</source><br />
<br />
<br />
===setTextUpperFirst($field)===<br />
<br />
Transforma en mayúscula la primera letra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperFirst('nombres');<br />
</source><br />
<br />
===setTextUpperWords($field)===<br />
<br />
Transforma en mayúscula la primera letra de cada palabra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperWords('nombres');<br />
</source><br />
<br />
<br />
===setTypeDate($field)===<br />
<br />
Formato de salida d/m/Y (01/01/2002) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeDateTime($field)===<br />
<br />
Formato de salida d/m/Y H:m:s (01/01/2002 12:00:00) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeImage($field)===<br />
<br />
Muestra una imagen que se encuentra en la carpeta img/, es decir, solo se almacena el nombre de la imagen en formato jpg, gif o png. Debe existir un subdirectorio llamdo thumbs el cual almacena las imagenes redimencionadas. <br />
El archivo config/datagrid.ini tiene información del tamaño de la imagen redimensionada.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeImage('photo');<br />
</source><br />
<br />
===setTypeMoney($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para el signo y separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeMoney('monto');<br />
</source><br />
<br />
===setTypeNumeric($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para los separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeNumeric('cantidad');<br />
</source><br />
<br />
<br />
<br />
===setTypePercent($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información adicional.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypePercent('porcentaje');<br />
</source><br />
<br />
===setMimes($params=array())===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
array $params: array de parametros <br />
<br />
el primer paramtro es el nombre de la imagen que se encuentra en la carpeta img/ con extensión gif. 'xls:' el siguiente es el nombre de la accion que se encuetra en el mismo controlador creada la grilla, envia el id.<br />
ej: http://dominio.com/kumbia/clientes/verExcel/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setMimes('xls: verExcel', 'pdf: verPdf');<br />
</source><br />
<br />
===setAlias($fields, $data=array())===<br />
Crea alias a los datos que se encuentran en la tabla<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo', 'D'=>'Desactivo'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero', '1'=>'Uno', '2'=>'Dos', '3'=>'Tres', '4'=>'Cuatro', '5'=>'Cinco'));<br />
</source><br />
<br />
===setImage($fields, $data=array())===<br />
Coloca una imagen según el campo. La imagen puede ser cualquier formato soportado y debe estar almacenada en img/datagrid/<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo.png', 'D'=>'Desactivo.png'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero.gif', '1'=>'Uno.gif', '2'=>'Dos.gif', '3'=>'Tres.gif', '4'=>'Cuatro.gif', '5'=>'Cinco.gif'));<br />
</source><br />
<br />
<br />
===auto_filter = true===<br />
Genera por cada celda un select o combo para realizar búsquedas en la misma grilla.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
</source><br />
<br />
===ignore($field)===<br />
No muestra un campo del molelo en la grilla<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->ignore('id');<br />
</source><br />
<br />
===create = $url ===<br />
Visualiza una imagen sobre la grilla y crea un link a la accion crear<br />
<br />
$url: nombre del controlador más la accion<br />
<br />
ej: http://dominio.com/kumbia/clientes/create<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/create';<br />
</source><br />
<br />
<br />
===edit = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/edit/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/edit';<br />
</source><br />
<br />
===delete = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/delete/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = controller_name . '/delete';<br />
</source><br />
<br />
<br />
===delete_confirm = $msg===<br />
Mensaje de alerta para la accion delete.<br />
$msg: se puede visualizar el valor de un campo pasandoselo entre llaves {$field}.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = 'Desea elimina el registro {id}';<br />
</source><br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea elmimar este registro {nombre}, {apellido}?';<br />
</source><br />
<br />
===paginator_name = $paginador===<br />
<br />
$paginador: Nombre del paginador para la grilla por defecto usa el default<br />
puede incluir paginadores del kumbia.<br />
Classic - Digg - Extended - Punbb - Simple<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->paginator_name = 'classic';<br />
</source><br />
<br />
<br />
===url = $url===<br />
Si utiliza paginator la grilla se debe indicar la url para el paginado, sino se indica por defecto obtiene el nombre del controlador y su accion de donde fue creado el dataGrid.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->url = 'usurios/index';<br />
</source><br />
<br />
===show = 10===<br />
número de paginas que se mostraran en el paginador, por defecto 10.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->show = 10;<br />
</source><br />
<br />
===style = $name===<br />
$name: nombre de la hoja de estilo ubicado en public/css/<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->style = 'default';<br />
</source><br />
<br />
===Ejemplo 1 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<br />
<source lang="php"><br />
public function index()<br />
{<br />
$this->clientes = $this->Clientes->find("order: nombre");;<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<source lang="php"><br />
View::content();<br />
View::helpers('dataGrid');<br />
$dataGrid = new dataGrid($clientes);<br />
View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid));<br />
</source><br />
<br />
===Ejemplo 2 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<source lang="php"><br />
public function index($page=1)<br />
{<br />
$this->clientes = $this->Clientes->paginate('per_page: 20', "page: $page");<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<br />
<source lang="php"><br />
<?php View::content() ?><br />
<?php View::helpers('dataGrid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($clientes);<br />
$dataGrid->setValue('ciudades_id', 'nombre');<br />
$dataGrid->setTextLower('nombre');<br />
$dataGrid->setTypeImage('photo');<br />
$dataGrid->setMimes('xls: verXls');<br />
$dataGrid->ignore('id');<br />
$dataGrid->setCaption('ciudades_id', 'CIUDAD');<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete_confirm = 'Eliminar el registro {rut}-{dv}';<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
<br />
<br />
===Screenshots===<br />
Modelo Paises<br />
<br />
[[Archivo:Model_paises.gif]]<br />
<br />
* paises_controller.php<br />
<br />
<source lang='php'> <br />
class PaisesController extends ApplicationController{<br />
public function index($page=1)<br />
{<br />
$this->paises = Load::model('paises')->paginate('per_page: 10', "page: $page");<br />
}<br />
}<br />
</source><br />
<br />
* views/paises/index.phtml<br />
<br />
<source lang='php'> <br />
<?php View::content() ?><br />
<?php View::helpers('data_grid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($paises);<br />
$dataGrid->setCaption('nombre', 'PAIS');<br />
$dataGrid->setTypeImage('imagen');<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea eliminar el pais: {nombre}?';<br />
<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
===Descargar===<br />
[https://sourceforge.net/projects/helperdatagrid/files/dataGrid%20Jquery-ui%20Beta1%20rc0.9.tar.gz/download Descargar] para '''Spirit v1.0 beta1''' con temas de jquery-ui<br />
<br />
<br />
<br />
<br />
<br />
[[Categoría:Helpers]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Clase_Online&diff=2797Clase Online2010-06-21T01:55:06Z<p>Fidelio: /* clase online */</p>
<hr />
<div>== Descripción ==<br />
La clase online lo que hace es crear un registro del tiempo de conección para usuario logeado, para esto vamos asumir que ya tenemos nuestra tabla usuarios más una tabla de perfiles "roles", Tambien la forma de obtener los id de usuarios conectados, habra que crear una variable de session con la class Session y poder almacenar los valores en la tabla logs.<br />
<br />
=== Tablas ===<br />
Lo primero es crear nuestra tabla logs<br />
<br />
<source lang=mysql><br />
CREATE TABLE `logs` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`usuarios_id` int(4) DEFAULT NULL,<br />
`fecha_at` datetime DEFAULT NULL,<br />
`fecha_in` datetime DEFAULT NULL,<br />
`ip` varchar(16) CHARACTER SET latin1 DEFAULT NULL,<br />
`perfiles_id` int(4) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8<br />
</source><br />
<br />
<br />
<br />
=== clase online ===<br />
<br />
Esta class es de tipo estatica y la creamos como una libreria en nuestra app. "apps/libs/online.php"<br />
<br />
<source lang=php><br />
class Online{<br />
static function setUser(){<br />
Load::model('logs');<br />
$last_id = Session::get('logs_id');<br />
$rec = new Logs();<br />
$rec->find($last_id);<br />
$rec->usuarios_id = Session::get('usuarios_id');<br />
$rec->perfiles_id = Session::get('perfiles_id');<br />
$rec->ip = $_SERVER['REMOTE_ADDR'];<br />
$rec->save();<br />
if($rec->id!=0)<br />
Session::set('logs_id', $rec->id);<br />
}<br />
}<br />
</source><br />
<br />
=== Forma de uso ===<br />
<br />
Con esto ya estamos listo para que nuestra app comienze almacenar datos en la base. Entonces el primer paso es crear las dos varianles de sesion "usuarios_id" y "perfiles_id", para esto la mejor forma es cuando el usuario se autentifique en el sistema "LOGIN" la creamos,<br />
<br />
<source lang=php><br />
Session::set('usuarios_id', $usuarios->id);<br />
Session::set('perfiles_id', $usuarios->perfiles_id);<br />
</source><br />
<br />
y en el archivo application.php creamos un initialize de esta manera.<br />
<br />
<br />
<source lang=php><br />
public function initialize (){<br />
//si login esta ok<br />
if (....){<br />
Load::lib('online');<br />
Online::setUser();<br />
}<br />
}<br />
</source><br />
<br />
=== Mostrar los datos ===<br />
<br />
En esta parte cada programador puede mostrar los datos como quiera. solo deben hacer una consulta y recorrer el modelo con un foreach para poder crear una tabla. Yo lo haré con el [[JQuery_UI_en_Kumbiaphp_Spirit_beta2_calendar]]<br />
<br />
'''controlador<br />
utils_controller.php<br />
<br />
*Kumbiaphp 1.0 Beta1<br />
<br />
<source lang=php><br />
public function logs(){<br />
Flash::notice('Logs del sistema. Fecha hora: ' . date("d-m-Y H:m:s"));<br />
$this->fecha = date('d-m-Y');<br />
$this->items = array();<br />
if($this->has_post('fecha')){<br />
$this->fecha = $this->post('fecha');<br />
$this->items = Load::model('logs')->getLogs($this->fecha);<br />
}<br />
}<br />
</source><br />
<br />
*Kumbiaphp 1.0 Beta2<br />
<br />
<source lang=php><br />
public function logs(){<br />
Flash::info('Logs del sistema. Fecha hora: ' . date("d-m-Y H:m:s"));<br />
$this->fecha = date('d-m-Y');<br />
$this->items = array();<br />
if(Input::hasPost('fecha')){<br />
$this->fecha = Input::post('fecha');<br />
$this->items = Load::model('logs')->getLogs($this->fecha);<br />
}<br />
}<br />
</source><br />
<br />
<br />
'''Vista<br />
<br />
*Kumbiaphp 1.0 Beta1<br />
<br />
<source lang=php><br />
<?php View::content(); ?><br />
<?php echo form_tag($controller_name . '/' . $action_name); ?><br />
<div align="center"><br />
<?php echo date_field_tag('fecha','size: 10'); ?><br />
<?php echo submit_tag('Ir')?><br />
</div><br />
<?php echo end_form_tag() ?><br />
<table class='table_grilla'><br />
<tr><br />
<th>NONBRES</th><br />
<th>APELLIDOS</th><br />
<th>PERFIL</th><br />
<th>IP</th><br />
<th>FECHA INI</th><br />
<th>HORA INI</th><br />
<th>FECHA FIN</th><br />
<th>HORA FIN</th><br />
<th>DURACION</th><br />
</tr><br />
<?php foreach($items as $item): ?><br />
<tr><br />
<td><?php echo $item->nombres ?></td><br />
<td><?php echo $item->apellidos ?></td><br />
<td><?php echo $item->perfil ?></td><br />
<td><?php echo $item->ip ?></td><br />
<td><?php echo $item->fecha_ini ?></td><br />
<td><?php echo $item->hora_ini ?></td><br />
<td><?php echo $item->fecha_fin ?></td><br />
<td><?php echo $item->hora_fin ?></td><br />
<td><?php echo $item->duracion ?></td><br />
</tr><br />
<?php endforeach; ?><br />
</table><br />
</source><br />
<br />
<br />
*Kumbiaphp 1.0 Beta2<br />
<br />
<source lang=php><br />
<?php View::content(); ?><br />
<?php echo Form::open() ?><br />
<div align="center"><br />
<?php echo Calendar::text('fecha','size=10'); ?><br />
<?php echo Form::submit('Ir', array('class' => 'boton'))?><br />
</div><br />
<?php echo Form::close() ?><br />
<table class='table_grilla'><br />
<tr><br />
<th>NONBRES</th><br />
<th>APELLIDOS</th><br />
<th>PERFIL</th><br />
<th>IP</th><br />
<th>FECHA INI</th><br />
<th>HORA INI</th><br />
<th>FECHA FIN</th><br />
<th>HORA FIN</th><br />
<th>DURACION</th><br />
</tr><br />
<?php foreach($items as $item): ?><br />
<tr><br />
<td><?php echo $item->nombres ?></td><br />
<td><?php echo $item->apellidos ?></td><br />
<td><?php echo $item->perfil ?></td><br />
<td><?php echo $item->ip ?></td><br />
<td><?php echo $item->fecha_ini ?></td><br />
<td><?php echo $item->hora_ini ?></td><br />
<td><?php echo $item->fecha_fin ?></td><br />
<td><?php echo $item->hora_fin ?></td><br />
<td><?php echo $item->duracion ?></td><br />
</tr><br />
<?php endforeach; ?><br />
</table><br />
</source><br />
<br />
'''Modelo<br />
<br />
<source lang=php><br />
class Logs extends ActiveRecord{<br />
public function getLogs($fecha){<br />
Load::lib('date');<br />
$fecha = fentrada($fecha);<br />
$sql = "SELECT usuarios.id AS id,<br />
usuarios.nombres AS nombres,<br />
usuarios.apellidos AS apellidos,<br />
perfiles.nombre AS perfil,<br />
logs.ip AS ip,<br />
DATE_FORMAT(logs.fecha_at, '%d-%m-%Y') AS fecha_ini,<br />
DATE_FORMAT(logs.fecha_at, '%H:%i:%s') as hora_ini,<br />
DATE_FORMAT(logs.fecha_in, '%d-%m-%Y') AS fecha_fin,<br />
DATE_FORMAT(logs.fecha_in, '%H:%i:%s') as hora_fin,<br />
SUBTIME(DATE_FORMAT(logs.fecha_in, '%H:%i:%s'),<br />
DATE_FORMAT(logs.fecha_at, '%H:%i:%s')) as duracion from logs<br />
inner join usuarios on usuarios.id = logs.usuarios_id<br />
inner join perfiles on perfiles.id = usuarios.perfiles_id<br />
where<br />
logs.fecha_in > '$fecha 00:00' and logs.fecha_in < '$fecha 23:59'<br />
";<br />
return $this->find_all_by_sql($sql);<br />
}<br />
}<br />
</source><br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Listas_simples_enlazadas_jquery_Kumbiaphp_Spirit_beta2&diff=2796Listas simples enlazadas jquery Kumbiaphp Spirit beta22010-06-21T01:13:26Z<p>Fidelio: </p>
<hr />
<div>== Listas Enlazadas de tres niveles ==<br />
Para nuestro ejemplos vamos a utilizar listas simples [http://es.wikipedia.org/wiki/Lista_(inform%C3%A1tica)#Listas_simples_enlazadas] con 3 niveles, Regiones, Comunas y Ciudades.<br />
<br />
=== Requerimientos ===<br />
<br />
* incluir libreria jquery<br />
<br />
Editamos el template activo y adicionamos esta linea <br />
<br />
<source lang=php><br />
<?php echo Tag::js('jquery/jquery-1.4.2.min'); ?><br />
</source><br />
<br />
=== Tablas ===<br />
<br />
<source lang=mysql><br />
#<br />
# Table structure for table 'regiones'<br />
#<br />
# DROP TABLE IF EXISTS regiones;<br />
CREATE TABLE `regiones` (<br />
`id` int(4) NOT NULL auto_increment,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;<br />
<br />
#<br />
# Dumping data for table 'regiones'<br />
#<br />
<br />
INSERT INTO regiones VALUES (1,'Primera Region');<br />
INSERT INTO regiones VALUES (3,'Tercera Region');<br />
INSERT INTO regiones VALUES (2,'Segunda Region');<br />
<br />
#<br />
# Table structure for table 'comunas'<br />
#<br />
<br />
# DROP TABLE IF EXISTS comunas;<br />
CREATE TABLE `comunas` (<br />
`id` int(4) NOT NULL auto_increment,<br />
`regiones_id` int(4) NOT NULL,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;<br />
<br />
#<br />
# Dumping data for table 'comunas'<br />
#<br />
<br />
INSERT INTO comunas VALUES (4,3,'Primera Comuna');<br />
INSERT INTO comunas VALUES (3,2,'Primera Comuna');<br />
INSERT INTO comunas VALUES (2,1,'Segunda Comuna');<br />
INSERT INTO comunas VALUES (1,1,'Primera Comuna');<br />
<br />
#<br />
# Table structure for table 'ciudades'<br />
#<br />
<br />
# DROP TABLE IF EXISTS ciudades;<br />
CREATE TABLE `ciudades` (<br />
`id` int(4) NOT NULL auto_increment,<br />
`comunas_id` int(4) NOT NULL,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;<br />
<br />
#<br />
# Dumping data for table 'ciudades'<br />
#<br />
<br />
INSERT INTO ciudades VALUES (6,3,'Tercera Ciudad');<br />
INSERT INTO ciudades VALUES (5,3,'Segunda Ciudad');<br />
INSERT INTO ciudades VALUES (4,3,'Primera Ciudad');<br />
INSERT INTO ciudades VALUES (3,2,'Segunda Ciudad');<br />
INSERT INTO ciudades VALUES (2,2,'Primera Ciudad');<br />
INSERT INTO ciudades VALUES (1,1,'Primera Ciudad');<br />
</source><br />
<br />
=== Ejemplo ===<br />
<br />
* clientes_controller.php<br />
Vamos a trabajar con un controller llamado clientes, '''acá solo mostrareos los 3 niveles de las listas''', nada más, es decir, no vamos a trabajar con el modelo clientes ya que puede ser 'usuarios, proveedores, provesionales, auxiliares, pacientes, etc..', la base siempre es la misma<br />
<br />
<br />
<source lang=php><br />
<?php<br />
/**<br />
* Carga de Modelos<br />
*/<br />
Load::models('regiones','comunas','ciudades');<br />
class ClientesController extends ApplicationController{<br />
public function index() {<br />
<br />
}<br />
public function create(){<br />
$regiones = new Regiones();<br />
$this->regiones = $regiones->buscar();<br />
if(Input::hasPost('clientes')){<br />
//SUBMIT<br />
}<br />
}<br />
public function getComunas(){<br />
View::response('view');<br />
$comunas = new Comunas();<br />
$this->comunas = $comunas->buscar(Input::post('regiones_id'));<br />
}<br />
<br />
public function getCiudades(){<br />
View::response('view');<br />
$ciudades = new Ciudades();<br />
$this->ciudades = $ciudades->buscar(Input::post('comunas_id'));<br />
}<br />
}<br />
?><br />
</source><br />
<br />
* Modelo Regiones<br />
<br />
<source lang=php><br />
<?php <br />
class Regiones extends ActiveRecord{<br />
public function buscar(){<br />
return $this->find('order: nombre');<br />
}<br />
}<br />
?><br />
</source><br />
<br />
* Modelo Comunas<br />
<br />
<source lang=php><br />
<?php <br />
class Comunas extends ActiveRecord{<br />
public function buscar($regiones_id){<br />
return $this->find("regiones_id = $regiones_id", 'order: nombre');<br />
}<br />
}<br />
?><br />
</source><br />
<br />
* Modelo Ciudades<br />
<br />
<source lang=php><br />
<?php <br />
class Ciudades extends ActiveRecord{<br />
public function buscar($comunas_id){<br />
return $this->find("comunas_id = $comunas_id", 'order: nombre');<br />
}<br />
}<br />
?><br />
</source><br />
<br />
* Vista create.phtml<br />
<br />
<source lang=php><br />
<br />
<?php View::content(); ?><br />
<?php echo Form::open(); ?><br />
<fieldset><br />
<legend>Mantenedor de Clientes</legend><br />
<ol><br />
<li><br />
<label>Región</label><br />
<?php echo Form::dbSelect('clientes.regiones_id', $regiones, 'nombre', '- seleccione -'); ?><br />
</li><br />
<li><br />
<label>Comuna</label><br />
<div id='div_comunas'></div><br />
</li><br />
<li><br />
<label>Ciudad</label><br />
<div id='div_ciudades'></div><br />
</li><br />
<li><br />
<label>&nbsp;</label><br />
<?php echo Button::submit('Agregar');?><br />
</li><br />
</ol><br />
</fieldset><br />
<?php echo Form::close(); ?><br />
<br />
<script type='text/javascript'><br />
$("#clientes_regiones_id").change(function(){<br />
var regiones_id = $('#clientes_regiones_id').val();<br />
$.ajax({<br />
type: "POST",<br />
url: "<?php echo PUBLIC_PATH . 'clientes/getComunas/'; ?>",<br />
data: "regiones_id=" + regiones_id,<br />
success: function(html){<br />
$("#div_comunas").html(html);<br />
}<br />
});<br />
});<br />
</script><br />
</source><br />
<br />
<br />
* Vista getComunas.phtml<br />
<br />
<source lang=php><br />
<?php<br />
echo Form::dbSelect("clientes.comunas_id", $comunas, 'nombre', '- Seleccione -');<br />
?> <br />
<br />
<script type='text/javascript'><br />
$("#clientes_comunas_id").change(function(){<br />
var comunas_id = $('#clientes_comunas_id').val();<br />
$.ajax({<br />
type: "POST",<br />
url: "<?php echo PUBLIC_PATH . 'clientes/getCiudades/'; ?>",<br />
data: "comunas_id=" + comunas_id,<br />
success: function(html){<br />
$("#div_ciudades").html(html);<br />
}<br />
});<br />
});<br />
</script><br />
</source><br />
<br />
* Vista getCiudades.phtml<br />
<br />
<source lang=php><br />
<?php<br />
echo Form::dbSelect('clientes.ciudades_id', $ciudades, 'nombre', '- Seleccione -');<br />
?><br />
</source><br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:jQuery]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Listas_simples_enlazadas_jquery_Kumbiaphp_Spirit_beta2&diff=2795Listas simples enlazadas jquery Kumbiaphp Spirit beta22010-06-21T01:12:18Z<p>Fidelio: Página creada con '== Listas Enlazadas de tres niveles == Para nuestro ejemplos vamos a utilizar listas simples [http://es.wikipedia.org/wiki/Lista_(inform%C3%A1tica)#Listas_simples_enlazadas] con...'</p>
<hr />
<div>== Listas Enlazadas de tres niveles ==<br />
Para nuestro ejemplos vamos a utilizar listas simples [http://es.wikipedia.org/wiki/Lista_(inform%C3%A1tica)#Listas_simples_enlazadas] con 3 niveles, Regiones, Comunas y Ciudades.<br />
<br />
=== Requerimientos ===<br />
<br />
* incluir libreria jquery<br />
<br />
Editamos el template activo y adicionamos esta linea <br />
<br />
<source lang=php><br />
<?php echo Tag::js('jquery/jquery-1.4.2.min'); ?><br />
</source><br />
<br />
=== Tablas ===<br />
<br />
<source lang=mysql><br />
#<br />
# Table structure for table 'regiones'<br />
#<br />
# DROP TABLE IF EXISTS regiones;<br />
CREATE TABLE `regiones` (<br />
`id` int(4) NOT NULL auto_increment,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;<br />
<br />
#<br />
# Dumping data for table 'regiones'<br />
#<br />
<br />
INSERT INTO regiones VALUES (1,'Primera Region');<br />
INSERT INTO regiones VALUES (3,'Tercera Region');<br />
INSERT INTO regiones VALUES (2,'Segunda Region');<br />
<br />
#<br />
# Table structure for table 'comunas'<br />
#<br />
<br />
# DROP TABLE IF EXISTS comunas;<br />
CREATE TABLE `comunas` (<br />
`id` int(4) NOT NULL auto_increment,<br />
`regiones_id` int(4) NOT NULL,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;<br />
<br />
#<br />
# Dumping data for table 'comunas'<br />
#<br />
<br />
INSERT INTO comunas VALUES (4,3,'Primera Comuna');<br />
INSERT INTO comunas VALUES (3,2,'Primera Comuna');<br />
INSERT INTO comunas VALUES (2,1,'Segunda Comuna');<br />
INSERT INTO comunas VALUES (1,1,'Primera Comuna');<br />
<br />
#<br />
# Table structure for table 'ciudades'<br />
#<br />
<br />
# DROP TABLE IF EXISTS ciudades;<br />
CREATE TABLE `ciudades` (<br />
`id` int(4) NOT NULL auto_increment,<br />
`comunas_id` int(4) NOT NULL,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;<br />
<br />
#<br />
# Dumping data for table 'ciudades'<br />
#<br />
<br />
INSERT INTO ciudades VALUES (6,3,'Tercera Ciudad');<br />
INSERT INTO ciudades VALUES (5,3,'Segunda Ciudad');<br />
INSERT INTO ciudades VALUES (4,3,'Primera Ciudad');<br />
INSERT INTO ciudades VALUES (3,2,'Segunda Ciudad');<br />
INSERT INTO ciudades VALUES (2,2,'Primera Ciudad');<br />
INSERT INTO ciudades VALUES (1,1,'Primera Ciudad');<br />
</source><br />
<br />
=== Ejemplo ===<br />
<br />
* clientes_controller.php<br />
Vamos a trabajar con un controller llamado clientes, '''acá solo mostrareos los 3 niveles de las listas''', nada más, es decir, no vamos a trabajar con el modelo clientes ya que puede ser 'usuarios, proveedores, provesionales, auxiliares, pacientes, etc..', la base siempre es la misma<br />
<br />
<br />
<source lang=php><br />
<?php<br />
/**<br />
* Carga de Modelos<br />
*/<br />
Load::models('regiones','comunas','ciudades');<br />
class ClientesController extends ApplicationController{<br />
public function index() {<br />
<br />
}<br />
public function create(){<br />
$regiones = new Regiones();<br />
$this->regiones = $regiones->buscar();<br />
if(Input::hasPost('clientes')){<br />
//SUBMIT<br />
}<br />
}<br />
public function getComunas(){<br />
View::response('view');<br />
$comunas = new Comunas();<br />
$this->comunas = $comunas->buscar(Input::post('regiones_id'));<br />
}<br />
<br />
public function getCiudades(){<br />
View::response('view');<br />
$ciudades = new Ciudades();<br />
$this->ciudades = $ciudades->buscar(Input::post('comunas_id'));<br />
}<br />
}<br />
?><br />
</source><br />
<br />
* Modelo Regiones<br />
<br />
<source lang=php><br />
<?php <br />
class Regiones extends ActiveRecord{<br />
public function buscar(){<br />
return $this->find('order: nombre');<br />
}<br />
}<br />
?><br />
</source><br />
<br />
* Modelo Comunas<br />
<br />
<source lang=php><br />
<?php <br />
class Comunas extends ActiveRecord{<br />
public function buscar($regiones_id){<br />
return $this->find("regiones_id = $regiones_id", 'order: nombre');<br />
}<br />
}<br />
?><br />
</source><br />
<br />
* Modelo Ciudades<br />
<br />
<source lang=php><br />
<?php <br />
class Ciudades extends ActiveRecord{<br />
public function buscar($comunas_id){<br />
return $this->find("comunas_id = $comunas_id", 'order: nombre');<br />
}<br />
}<br />
?><br />
</source><br />
<br />
* Vista create.phtml<br />
<br />
<source lang=php><br />
<br />
<?php View::content(); ?><br />
<?php echo Form::open(); ?><br />
<fieldset><br />
<legend>Mantenedor de Clientes</legend><br />
<ol><br />
<li><br />
<label>Región</label><br />
<?php echo Form::dbSelect('clientes.regiones_id', $regiones, 'nombre', '- seleccione -'); ?><br />
</li><br />
<li><br />
<label>Comuna</label><br />
<div id='div_comunas'></div><br />
</li><br />
<li><br />
<label>Ciudad</label><br />
<div id='div_ciudades'></div><br />
</li><br />
<li><br />
<label>&nbsp;</label><br />
<?php echo Button::submit('Agregar');?><br />
</li><br />
</ol><br />
</fieldset><br />
<br />
<script type='text/javascript'><br />
$("#clientes_regiones_id").change(function(){<br />
var regiones_id = $('#clientes_regiones_id').val();<br />
$.ajax({<br />
type: "POST",<br />
url: "<?php echo PUBLIC_PATH . 'clientes/getComunas/'; ?>",<br />
data: "regiones_id=" + regiones_id,<br />
success: function(html){<br />
$("#div_comunas").html(html);<br />
}<br />
});<br />
});<br />
</script><br />
</source><br />
<br />
<br />
* Vista getComunas.phtml<br />
<br />
<source lang=php><br />
<?php<br />
echo Form::dbSelect("clientes.comunas_id", $comunas, 'nombre', '- Seleccione -');<br />
?> <br />
<br />
<script type='text/javascript'><br />
$("#clientes_comunas_id").change(function(){<br />
var comunas_id = $('#clientes_comunas_id').val();<br />
$.ajax({<br />
type: "POST",<br />
url: "<?php echo PUBLIC_PATH . 'clientes/getCiudades/'; ?>",<br />
data: "comunas_id=" + comunas_id,<br />
success: function(html){<br />
$("#div_ciudades").html(html);<br />
}<br />
});<br />
});<br />
</script><br />
</source><br />
<br />
* Vista getCiudades.phtml<br />
<br />
<source lang=php><br />
<?php<br />
echo Form::dbSelect('clientes.ciudades_id', $ciudades, 'nombre', '- Seleccione -');<br />
?><br />
</source><br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:jQuery]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Clase_Online&diff=2794Clase Online2010-06-21T00:53:29Z<p>Fidelio: </p>
<hr />
<div>== Descripción ==<br />
La clase online lo que hace es crear un registro del tiempo de conección para usuario logeado, para esto vamos asumir que ya tenemos nuestra tabla usuarios más una tabla de perfiles "roles", Tambien la forma de obtener los id de usuarios conectados, habra que crear una variable de session con la class Session y poder almacenar los valores en la tabla logs.<br />
<br />
=== Tablas ===<br />
Lo primero es crear nuestra tabla logs<br />
<br />
<source lang=mysql><br />
CREATE TABLE `logs` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`usuarios_id` int(4) DEFAULT NULL,<br />
`fecha_at` datetime DEFAULT NULL,<br />
`fecha_in` datetime DEFAULT NULL,<br />
`ip` varchar(16) CHARACTER SET latin1 DEFAULT NULL,<br />
`perfiles_id` int(4) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8<br />
</source><br />
<br />
<br />
<br />
=== clase online ===<br />
<br />
Esta class es de tipo estatica y la creamos como una libreria en nuestra app. "apps/libs/online.php"<br />
<br />
<source lang=php><br />
class Online{<br />
static function setUser(){<br />
Load::model('logs');<br />
$last_id = Session::get('logs_id');<br />
$rec = new Logs();<br />
$rec->find($last_id);<br />
$rec->usuarios_id = Session::get('usuarios_id');<br />
$rec->perfiles_id = Session::get('perfiles_id');<br />
$rec->ip = $_SERVER['REMOTE_ADDR'];<br />
$rec->save();<br />
if(ActiveRecord::static_select_one("LAST_INSERT_ID()")!=0)<br />
Session::set('logs_id', ActiveRecord::static_select_one("LAST_INSERT_ID()"));<br />
}<br />
}<br />
</source><br />
<br />
=== Forma de uso ===<br />
<br />
Con esto ya estamos listo para que nuestra app comienze almacenar datos en la base. Entonces el primer paso es crear las dos varianles de sesion "usuarios_id" y "perfiles_id", para esto la mejor forma es cuando el usuario se autentifique en el sistema "LOGIN" la creamos,<br />
<br />
<source lang=php><br />
Session::set('usuarios_id', $usuarios->id);<br />
Session::set('perfiles_id', $usuarios->perfiles_id);<br />
</source><br />
<br />
y en el archivo application.php creamos un initialize de esta manera.<br />
<br />
<br />
<source lang=php><br />
public function initialize (){<br />
//si login esta ok<br />
if (....){<br />
Load::lib('online');<br />
Online::setUser();<br />
}<br />
}<br />
</source><br />
<br />
=== Mostrar los datos ===<br />
<br />
En esta parte cada programador puede mostrar los datos como quiera. solo deben hacer una consulta y recorrer el modelo con un foreach para poder crear una tabla. Yo lo haré con el [[JQuery_UI_en_Kumbiaphp_Spirit_beta2_calendar]]<br />
<br />
'''controlador<br />
utils_controller.php<br />
<br />
*Kumbiaphp 1.0 Beta1<br />
<br />
<source lang=php><br />
public function logs(){<br />
Flash::notice('Logs del sistema. Fecha hora: ' . date("d-m-Y H:m:s"));<br />
$this->fecha = date('d-m-Y');<br />
$this->items = array();<br />
if($this->has_post('fecha')){<br />
$this->fecha = $this->post('fecha');<br />
$this->items = Load::model('logs')->getLogs($this->fecha);<br />
}<br />
}<br />
</source><br />
<br />
*Kumbiaphp 1.0 Beta2<br />
<br />
<source lang=php><br />
public function logs(){<br />
Flash::info('Logs del sistema. Fecha hora: ' . date("d-m-Y H:m:s"));<br />
$this->fecha = date('d-m-Y');<br />
$this->items = array();<br />
if(Input::hasPost('fecha')){<br />
$this->fecha = Input::post('fecha');<br />
$this->items = Load::model('logs')->getLogs($this->fecha);<br />
}<br />
}<br />
</source><br />
<br />
<br />
'''Vista<br />
<br />
*Kumbiaphp 1.0 Beta1<br />
<br />
<source lang=php><br />
<?php View::content(); ?><br />
<?php echo form_tag($controller_name . '/' . $action_name); ?><br />
<div align="center"><br />
<?php echo date_field_tag('fecha','size: 10'); ?><br />
<?php echo submit_tag('Ir')?><br />
</div><br />
<?php echo end_form_tag() ?><br />
<table class='table_grilla'><br />
<tr><br />
<th>NONBRES</th><br />
<th>APELLIDOS</th><br />
<th>PERFIL</th><br />
<th>IP</th><br />
<th>FECHA INI</th><br />
<th>HORA INI</th><br />
<th>FECHA FIN</th><br />
<th>HORA FIN</th><br />
<th>DURACION</th><br />
</tr><br />
<?php foreach($items as $item): ?><br />
<tr><br />
<td><?php echo $item->nombres ?></td><br />
<td><?php echo $item->apellidos ?></td><br />
<td><?php echo $item->perfil ?></td><br />
<td><?php echo $item->ip ?></td><br />
<td><?php echo $item->fecha_ini ?></td><br />
<td><?php echo $item->hora_ini ?></td><br />
<td><?php echo $item->fecha_fin ?></td><br />
<td><?php echo $item->hora_fin ?></td><br />
<td><?php echo $item->duracion ?></td><br />
</tr><br />
<?php endforeach; ?><br />
</table><br />
</source><br />
<br />
<br />
*Kumbiaphp 1.0 Beta2<br />
<br />
<source lang=php><br />
<?php View::content(); ?><br />
<?php echo Form::open() ?><br />
<div align="center"><br />
<?php echo Calendar::text('fecha','size=10'); ?><br />
<?php echo Form::submit('Ir', array('class' => 'boton'))?><br />
</div><br />
<?php echo Form::close() ?><br />
<table class='table_grilla'><br />
<tr><br />
<th>NONBRES</th><br />
<th>APELLIDOS</th><br />
<th>PERFIL</th><br />
<th>IP</th><br />
<th>FECHA INI</th><br />
<th>HORA INI</th><br />
<th>FECHA FIN</th><br />
<th>HORA FIN</th><br />
<th>DURACION</th><br />
</tr><br />
<?php foreach($items as $item): ?><br />
<tr><br />
<td><?php echo $item->nombres ?></td><br />
<td><?php echo $item->apellidos ?></td><br />
<td><?php echo $item->perfil ?></td><br />
<td><?php echo $item->ip ?></td><br />
<td><?php echo $item->fecha_ini ?></td><br />
<td><?php echo $item->hora_ini ?></td><br />
<td><?php echo $item->fecha_fin ?></td><br />
<td><?php echo $item->hora_fin ?></td><br />
<td><?php echo $item->duracion ?></td><br />
</tr><br />
<?php endforeach; ?><br />
</table><br />
</source><br />
<br />
'''Modelo<br />
<br />
<source lang=php><br />
class Logs extends ActiveRecord{<br />
public function getLogs($fecha){<br />
Load::lib('date');<br />
$fecha = fentrada($fecha);<br />
$sql = "SELECT usuarios.id AS id,<br />
usuarios.nombres AS nombres,<br />
usuarios.apellidos AS apellidos,<br />
perfiles.nombre AS perfil,<br />
logs.ip AS ip,<br />
DATE_FORMAT(logs.fecha_at, '%d-%m-%Y') AS fecha_ini,<br />
DATE_FORMAT(logs.fecha_at, '%H:%i:%s') as hora_ini,<br />
DATE_FORMAT(logs.fecha_in, '%d-%m-%Y') AS fecha_fin,<br />
DATE_FORMAT(logs.fecha_in, '%H:%i:%s') as hora_fin,<br />
SUBTIME(DATE_FORMAT(logs.fecha_in, '%H:%i:%s'),<br />
DATE_FORMAT(logs.fecha_at, '%H:%i:%s')) as duracion from logs<br />
inner join usuarios on usuarios.id = logs.usuarios_id<br />
inner join perfiles on perfiles.id = usuarios.perfiles_id<br />
where<br />
logs.fecha_in > '$fecha 00:00' and logs.fecha_in < '$fecha 23:59'<br />
";<br />
return $this->find_all_by_sql($sql);<br />
}<br />
}<br />
</source><br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Clase_Online&diff=2793Clase Online2010-06-21T00:50:32Z<p>Fidelio: </p>
<hr />
<div>== Descripción ==<br />
La clase online lo que hace es crear un registro del tiempo de conección para usuario logeado, para esto vamos asumir que ya tenemos nuestra tabla usuarios más una tabla de perfiles "roles", Tambien la forma de obtener los id de usuarios conectados, habra que crear una variable de session con la class Session y poder almacenar los valores en la tabla logs.<br />
<br />
=== Tablas ===<br />
Lo primero es crear nuestra tabla logs<br />
<br />
<source lang=mysql><br />
CREATE TABLE `logs` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`usuarios_id` int(4) DEFAULT NULL,<br />
`fecha_at` datetime DEFAULT NULL,<br />
`fecha_in` datetime DEFAULT NULL,<br />
`ip` varchar(16) CHARACTER SET latin1 DEFAULT NULL,<br />
`perfiles_id` int(4) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8<br />
</source><br />
<br />
<br />
<br />
=== clase online ===<br />
<br />
Esta class es de tipo estatica y la creamos como una libreria en nuestra app. "apps/libs/online.php"<br />
<br />
<source lang=php><br />
class Online{<br />
static function setUser(){<br />
Load::model('logs');<br />
$last_id = Session::get('logs_id');<br />
$rec = new Logs();<br />
$rec->find($last_id);<br />
$rec->usuarios_id = Session::get('usuarios_id');<br />
$rec->perfiles_id = Session::get('perfiles_id');<br />
$rec->ip = $_SERVER['REMOTE_ADDR'];<br />
$rec->save();<br />
if(ActiveRecord::static_select_one("LAST_INSERT_ID()")!=0)<br />
Session::set('logs_id', ActiveRecord::static_select_one("LAST_INSERT_ID()"));<br />
}<br />
}<br />
</source><br />
<br />
=== Forma de uso ===<br />
<br />
Con esto ya estamos listo para que nuestra app comienze almacenar datos en la base. Entonces el primer paso es crear las dos varianles de sesion "usuarios_id" y "perfiles_id", para esto la mejor forma es cuando el usuario se autentifique en el sistema "LOGIN" la creamos,<br />
<br />
<source lang=php><br />
Session::set('usuarios_id', $usuarios->id);<br />
Session::set('perfiles_id', $usuarios->perfiles_id);<br />
</source><br />
<br />
y en el archivo application.php creamos un initialize de esta manera.<br />
<br />
<br />
<source lang=php><br />
public function initialize (){<br />
//si login esta ok<br />
if (....){<br />
Load::lib('online');<br />
Online::setUser();<br />
}<br />
}<br />
</source><br />
<br />
=== Mostrar los datos ===<br />
<br />
En esta parte cada programador puede mostrar los datos como quiera. solo deben hacer una consulta y recorrer el modelo con un foreach para poder crear una tabla. Yo lo haré con el [[JQuery_UI_en_Kumbiaphp_Spirit_beta2_calendar]]<br />
<br />
'''controlador<br />
utils_controller.php<br />
<br />
*Kumbiaphp 1.0 Beta1<br />
<br />
<source lang=php><br />
public function logs(){<br />
Flash::notice('Logs del sistema. Fecha hora: ' . date("d-m-Y H:m:s"));<br />
$this->fecha = date('d-m-Y');<br />
$this->items = array();<br />
if($this->has_post('fecha')){<br />
$this->fecha = $this->post('fecha');<br />
$this->items = Load::model('logs')->getLogs($this->fecha);<br />
}<br />
}<br />
</source><br />
<br />
*Kumbiaphp 1.0 Beta2<br />
<br />
<source lang=php><br />
public function logs(){<br />
Flash::info('Logs del sistema. Fecha hora: ' . date("d-m-Y H:m:s"));<br />
$this->fecha = date('d-m-Y');<br />
$this->items = array();<br />
if(Input::hasPost('fecha')){<br />
$this->fecha = Input::post('fecha');<br />
$this->items = Load::model('logs')->getLogs($this->fecha);<br />
}<br />
}<br />
</source><br />
<br />
<br />
'''Vista<br />
<br />
*Kumbiaphp 1.0 Beta1<br />
<br />
<source lang=php><br />
<?php View::content(); ?><br />
<?php echo form_tag($controller_name . '/' . $action_name); ?><br />
<div align="center"><br />
<?php echo Calendar::text('fecha','size=10'); ?><br />
<?php echo submit_tag('Ir')?><br />
</div><br />
<?php echo end_form_tag() ?><br />
<table class='table_grilla'><br />
<tr><br />
<th>NONBRES</th><br />
<th>APELLIDOS</th><br />
<th>PERFIL</th><br />
<th>IP</th><br />
<th>FECHA INI</th><br />
<th>HORA INI</th><br />
<th>FECHA FIN</th><br />
<th>HORA FIN</th><br />
<th>DURACION</th><br />
</tr><br />
<?php foreach($items as $item): ?><br />
<tr><br />
<td><?php echo $item->nombres ?></td><br />
<td><?php echo $item->apellidos ?></td><br />
<td><?php echo $item->perfil ?></td><br />
<td><?php echo $item->ip ?></td><br />
<td><?php echo $item->fecha_ini ?></td><br />
<td><?php echo $item->hora_ini ?></td><br />
<td><?php echo $item->fecha_fin ?></td><br />
<td><?php echo $item->hora_fin ?></td><br />
<td><?php echo $item->duracion ?></td><br />
</tr><br />
<?php endforeach; ?><br />
</table><br />
</source><br />
<br />
<br />
*Kumbiaphp 1.0 Beta2<br />
<br />
<source lang=php><br />
<?php View::content(); ?><br />
<?php echo Form::open() ?><br />
<div align="center"><br />
<?php echo Calendar::text('fecha','size=10'); ?><br />
<?php echo Form::submit('Ir', array('class' => 'boton'))?><br />
</div><br />
<?php echo Form::close() ?><br />
<table class='table_grilla'><br />
<tr><br />
<th>NONBRES</th><br />
<th>APELLIDOS</th><br />
<th>PERFIL</th><br />
<th>IP</th><br />
<th>FECHA INI</th><br />
<th>HORA INI</th><br />
<th>FECHA FIN</th><br />
<th>HORA FIN</th><br />
<th>DURACION</th><br />
</tr><br />
<?php foreach($items as $item): ?><br />
<tr><br />
<td><?php echo $item->nombres ?></td><br />
<td><?php echo $item->apellidos ?></td><br />
<td><?php echo $item->perfil ?></td><br />
<td><?php echo $item->ip ?></td><br />
<td><?php echo $item->fecha_ini ?></td><br />
<td><?php echo $item->hora_ini ?></td><br />
<td><?php echo $item->fecha_fin ?></td><br />
<td><?php echo $item->hora_fin ?></td><br />
<td><?php echo $item->duracion ?></td><br />
</tr><br />
<?php endforeach; ?><br />
</table><br />
</source><br />
<br />
'''Modelo<br />
<br />
<source lang=php><br />
class Logs extends ActiveRecord{<br />
public function getLogs($fecha){<br />
Load::lib('date');<br />
$fecha = fentrada($fecha);<br />
$sql = "SELECT usuarios.id AS id,<br />
usuarios.nombres AS nombres,<br />
usuarios.apellidos AS apellidos,<br />
perfiles.nombre AS perfil,<br />
logs.ip AS ip,<br />
DATE_FORMAT(logs.fecha_at, '%d-%m-%Y') AS fecha_ini,<br />
DATE_FORMAT(logs.fecha_at, '%H:%i:%s') as hora_ini,<br />
DATE_FORMAT(logs.fecha_in, '%d-%m-%Y') AS fecha_fin,<br />
DATE_FORMAT(logs.fecha_in, '%H:%i:%s') as hora_fin,<br />
SUBTIME(DATE_FORMAT(logs.fecha_in, '%H:%i:%s'),<br />
DATE_FORMAT(logs.fecha_at, '%H:%i:%s')) as duracion from logs<br />
inner join usuarios on usuarios.id = logs.usuarios_id<br />
inner join perfiles on perfiles.id = usuarios.perfiles_id<br />
where<br />
logs.fecha_in > '$fecha 00:00' and logs.fecha_in < '$fecha 23:59'<br />
";<br />
return $this->find_all_by_sql($sql);<br />
}<br />
}<br />
</source><br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Clase_Online&diff=2792Clase Online2010-06-21T00:48:14Z<p>Fidelio: </p>
<hr />
<div>== Descripción ==<br />
La clase online lo que hace es crear un registro del tiempo de conección para usuario logeado, para esto vamos asumir que ya tenemos nuestra tabla usuarios más una tabla de perfiles "roles", Tambien la forma de obtener los id de usuarios conectados, habra que crear una variable de session con la class Session y poder almacenar los valores en la tabla logs.<br />
<br />
=== Tablas ===<br />
Lo primero es crear nuestra tabla logs<br />
<br />
<source lang=mysql><br />
CREATE TABLE `logs` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`usuarios_id` int(4) DEFAULT NULL,<br />
`fecha_at` datetime DEFAULT NULL,<br />
`fecha_in` datetime DEFAULT NULL,<br />
`ip` varchar(16) CHARACTER SET latin1 DEFAULT NULL,<br />
`perfiles_id` int(4) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8<br />
</source><br />
<br />
<br />
<br />
=== clase online ===<br />
<br />
Esta class es de tipo estatica y la creamos como una libreria en nuestra app. "apps/libs/online.php"<br />
<br />
<source lang=php><br />
class Online{<br />
static function setUser(){<br />
Load::model('logs');<br />
$last_id = Session::get('logs_id');<br />
$rec = new Logs();<br />
$rec->find($last_id);<br />
$rec->usuarios_id = Session::get('usuarios_id');<br />
$rec->perfiles_id = Session::get('perfiles_id');<br />
$rec->ip = $_SERVER['REMOTE_ADDR'];<br />
$rec->save();<br />
if(ActiveRecord::static_select_one("LAST_INSERT_ID()")!=0)<br />
Session::set('logs_id', ActiveRecord::static_select_one("LAST_INSERT_ID()"));<br />
}<br />
}<br />
</source><br />
<br />
=== Forma de uso ===<br />
<br />
Con esto ya estamos listo para que nuestra app comienze almacenar datos en la base. Entonces el primer paso es crear las dos varianles de sesion "usuarios_id" y "perfiles_id", para esto la mejor forma es cuando el usuario se autentifique en el sistema "LOGIN" la creamos,<br />
<br />
<source lang=php><br />
Session::set('usuarios_id', $usuarios->id);<br />
Session::set('perfiles_id', $usuarios->perfiles_id);<br />
</source><br />
<br />
y en el archivo application.php creamos un initialize de esta manera.<br />
<br />
<br />
<source lang=php><br />
public function initialize (){<br />
//si login esta ok<br />
if (....){<br />
Load::lib('online');<br />
Online::setUser();<br />
}<br />
}<br />
</source><br />
<br />
=== Mostrar los datos ===<br />
<br />
En esta parte cada programador puede mostrar los datos como quiera. solo deben hacer una consulta y recorrer el modelo con un foreach para poder crear una tabla. Yo lo haré con el [[JQuery_UI_en_Kumbiaphp_Spirit_beta2_calendar]]<br />
<br />
'''controlador<br />
utils_controller.php<br />
<br />
*Kumbiaphp 1.0 Beta1<br />
<br />
<source lang=php><br />
public function logs(){<br />
Flash::notice('Logs del sistema. Fecha hora: ' . date("d-m-Y H:m:s"));<br />
$this->fecha = date('d-m-Y');<br />
$this->items = array();<br />
if($this->has_post('fecha')){<br />
$this->fecha = $this->post('fecha');<br />
$this->items = Load::model('logs')->getLogs($this->fecha);<br />
}<br />
}<br />
</source><br />
<br />
*Kumbiaphp 1.0 Beta2<br />
<br />
<source lang=php><br />
public function logs(){<br />
Flash::info('Logs del sistema. Fecha hora: ' . date("d-m-Y H:m:s"));<br />
$this->fecha = date('d-m-Y');<br />
$this->items = array();<br />
if(Input::hasPost('fecha')){<br />
$this->fecha = Input::post('fecha');<br />
$this->items = Load::model('logs')->getLogs($this->fecha);<br />
}<br />
}<br />
</source><br />
<br />
<br />
'''Vista<br />
<br />
*Kumbiaphp 1.0 Beta1<br />
<br />
<source lang=php><br />
<?php View::content(); ?><br />
<?php echo form_tag($controller_name . '/' . $action_name); ?><br />
<div align="center"><br />
<?php echo Calendar::text('fecha','size=10'); ?><br />
<?php echo submit_tag('Ir')?><br />
</div><br />
<?php echo end_form_tag() ?><br />
<table class='table_grilla'><br />
<tr><br />
<th>NONBRES</th><br />
<th>APELLIDOS</th><br />
<th>PERFIL</th><br />
<th>IP</th><br />
<th>FECHA INI</th><br />
<th>HORA INI</th><br />
<th>FECHA FIN</th><br />
<th>HORA FIN</th><br />
<th>DURACION</th><br />
<th>OPCIONES</th><br />
</tr><br />
<?php foreach($items as $item): ?><br />
<tr><br />
<td><?php echo $item->nombres ?></td><br />
<td><?php echo $item->apellidos ?></td><br />
<td><?php echo $item->perfil ?></td><br />
<td><?php echo $item->ip ?></td><br />
<td><?php echo $item->fecha_ini ?></td><br />
<td><?php echo $item->hora_ini ?></td><br />
<td><?php echo $item->fecha_fin ?></td><br />
<td><?php echo $item->hora_fin ?></td><br />
<td><?php echo $item->duracion ?></td><br />
<td><?php echo Html::link("$controller_name/userInfo/" . $item->id, 'Detalle') ?></td><br />
</tr><br />
<?php endforeach; ?><br />
</table><br />
</source><br />
<br />
<br />
*Kumbiaphp 1.0 Beta2<br />
<br />
<source lang=php><br />
<?php View::content(); ?><br />
<?php echo Form::open() ?><br />
<div align="center"><br />
<?php echo Calendar::text('fecha','size=10'); ?><br />
<?php echo Form::submit('Ir', array('class' => 'boton'))?><br />
</div><br />
<?php echo Form::close() ?><br />
<table class='table_grilla'><br />
<tr><br />
<th>NONBRES</th><br />
<th>APELLIDOS</th><br />
<th>PERFIL</th><br />
<th>IP</th><br />
<th>FECHA INI</th><br />
<th>HORA INI</th><br />
<th>FECHA FIN</th><br />
<th>HORA FIN</th><br />
<th>DURACION</th><br />
<th>OPCIONES</th><br />
</tr><br />
<?php foreach($items as $item): ?><br />
<tr><br />
<td><?php echo $item->nombres ?></td><br />
<td><?php echo $item->apellidos ?></td><br />
<td><?php echo $item->perfil ?></td><br />
<td><?php echo $item->ip ?></td><br />
<td><?php echo $item->fecha_ini ?></td><br />
<td><?php echo $item->hora_ini ?></td><br />
<td><?php echo $item->fecha_fin ?></td><br />
<td><?php echo $item->hora_fin ?></td><br />
<td><?php echo $item->duracion ?></td><br />
<td><?php echo Html::link("$controller_name/userInfo/" . $item->id, 'Detalle') ?></td><br />
</tr><br />
<?php endforeach; ?><br />
</table><br />
</source><br />
<br />
'''Modelo<br />
<br />
<source lang=php><br />
class Logs extends ActiveRecord{<br />
public function getLogs($fecha){<br />
Load::lib('date');<br />
$fecha = fentrada($fecha);<br />
$sql = "SELECT usuarios.id AS id,<br />
usuarios.nombres AS nombres,<br />
usuarios.apellidos AS apellidos,<br />
perfiles.nombre AS perfil,<br />
logs.ip AS ip,<br />
DATE_FORMAT(logs.fecha_at, '%d-%m-%Y') AS fecha_ini,<br />
DATE_FORMAT(logs.fecha_at, '%H:%i:%s') as hora_ini,<br />
DATE_FORMAT(logs.fecha_in, '%d-%m-%Y') AS fecha_fin,<br />
DATE_FORMAT(logs.fecha_in, '%H:%i:%s') as hora_fin,<br />
SUBTIME(DATE_FORMAT(logs.fecha_in, '%H:%i:%s'),<br />
DATE_FORMAT(logs.fecha_at, '%H:%i:%s')) as duracion from logs<br />
inner join usuarios on usuarios.id = logs.usuarios_id<br />
inner join perfiles on perfiles.id = usuarios.perfiles_id<br />
where<br />
logs.fecha_in > '$fecha 00:00' and logs.fecha_in < '$fecha 23:59'<br />
";<br />
return $this->find_all_by_sql($sql);<br />
}<br />
}<br />
</source><br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Clase_Online&diff=2791Clase Online2010-06-21T00:26:55Z<p>Fidelio: </p>
<hr />
<div>== Descripción ==<br />
La clase online lo que hace es crear un registro del tiempo de conección para usuario logeado, para esto vamos asumir que ya tenemos nuestra tabla usuarios más una tabla de perfiles "roles", Tambien la forma de obtener los id de usuarios conectados, habra que crear una variable de session con la class Session y poder almacenar los valores en la tabla logs.<br />
<br />
=== Tablas ===<br />
Lo primero es crear nuestra tabla logs<br />
<br />
<source lang=mysql><br />
CREATE TABLE `logs` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`usuarios_id` int(4) DEFAULT NULL,<br />
`fecha_at` datetime DEFAULT NULL,<br />
`fecha_in` datetime DEFAULT NULL,<br />
`ip` varchar(16) CHARACTER SET latin1 DEFAULT NULL,<br />
`perfiles_id` int(4) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8<br />
</source><br />
<br />
<br />
<br />
=== clase online ===<br />
<br />
Esta class es de tipo estatica y la creamos como una libreria en nuestra app. "apps/libs/online.php"<br />
<br />
<source lang=php><br />
class Online{<br />
static function setUser(){<br />
Load::model('logs');<br />
$last_id = Session::get('logs_id');<br />
$rec = new Logs();<br />
$rec->find($last_id);<br />
$rec->usuarios_id = Session::get('usuarios_id');<br />
$rec->perfiles_id = Session::get('perfiles_id');<br />
$rec->ip = $_SERVER['REMOTE_ADDR'];<br />
$rec->save();<br />
if(ActiveRecord::static_select_one("LAST_INSERT_ID()")!=0)<br />
Session::set('logs_id', ActiveRecord::static_select_one("LAST_INSERT_ID()"));<br />
}<br />
}<br />
</source><br />
<br />
=== Forma de uso ===<br />
<br />
Con esto ya estamos listo para que nuestra app comienze almacenar datos en la base. Entonces el primer paso es crear las dos varianles de sesion "usuarios_id" y "perfiles_id", para esto la mejor forma es cuando el usuario se autentifique en el sistema "LOGIN" la creamos,<br />
<br />
<source lang=php><br />
Session::set('usuarios_id', $usuarios->id);<br />
Session::set('perfiles_id', $usuarios->perfiles_id);<br />
</source><br />
<br />
y en el archivo application.php creamos un initialize de esta manera.<br />
<br />
<br />
<source lang=php><br />
public function initialize (){<br />
//si login esta ok<br />
if (....){<br />
Load::lib('online');<br />
Online::setUser();<br />
}<br />
}<br />
</source><br />
<br />
=== Mostrar los datos ===<br />
<br />
En esta parte cada programador puede mostrar los datos como quiera. solo deben hacer una consulta y recorrer el modelo con un foreach para poder crear una tabla. Yo lo haré con el [[Helper_Datagrid]] y [[JQuery_UI_en_Kumbiaphp_Spirit_beta2_calendar]]<br />
<br />
*Primero crear un controller<br />
utils_controller.php<br />
<source lang=php><br />
public function logs(){<br />
Flash::info('Logs del sistema. Fecha hora: ' . date("d-m-Y H:m:s"));<br />
//Dialog::error('Hola Mundo');<br />
$this->fecha = date('d-m-Y');<br />
$this->items = array();<br />
if(Input::hasPost('fecha')){<br />
$fecha = Input::post('fecha');<br />
$this->items = Load::model('logs')->getLogs($fecha);<br />
//$this->items = Load::model('vlogs')->find("fecha_in = '" . "$fecha" . "'");<br />
$this->fecha = Input::post('fecha');<br />
}<br />
}<br />
</source></div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Clase_Online&diff=2790Clase Online2010-06-21T00:24:16Z<p>Fidelio: </p>
<hr />
<div>== Descripción ==<br />
La clase online lo que hace es crear un registro del tiempo de conección para usuario logeado, para esto vamos asumir que ya tenemos nuestra tabla usuarios más una tabla de perfiles "roles", Tambien la forma de obtener los id de usuarios conectados, habra que crear una variable de session con la class Session y poder almacenar los valores en la tabla logs.<br />
<br />
=== Tablas ===<br />
Lo primero es crear nuestra tabla logs<br />
<br />
<source lang=mysql><br />
CREATE TABLE `logs` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`usuarios_id` int(4) DEFAULT NULL,<br />
`fecha_at` datetime DEFAULT NULL,<br />
`fecha_in` datetime DEFAULT NULL,<br />
`ip` varchar(16) CHARACTER SET latin1 DEFAULT NULL,<br />
`perfiles_id` int(4) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8<br />
</source><br />
<br />
<br />
<br />
=== clase online ===<br />
<br />
Esta class es de tipo estatica y la creamos como una libreria en nuestra app. "apps/libs/online.php"<br />
<br />
<source lang=php><br />
class Online{<br />
static function setUser(){<br />
Load::model('logs');<br />
$last_id = Session::get('logs_id');<br />
$rec = new Logs();<br />
$rec->find($last_id);<br />
$rec->usuarios_id = Session::get('usuarios_id');<br />
$rec->perfiles_id = Session::get('perfiles_id');<br />
$rec->ip = $_SERVER['REMOTE_ADDR'];<br />
$rec->save();<br />
if(ActiveRecord::static_select_one("LAST_INSERT_ID()")!=0)<br />
Session::set('logs_id', ActiveRecord::static_select_one("LAST_INSERT_ID()"));<br />
}<br />
}<br />
</source><br />
<br />
=== Forma de uso ===<br />
<br />
Con esto ya estamos listo para que nuestra app comienze almacenar datos en la base. Entonces el primer paso es crear las dos varianles de sesion "usuarios_id" y "perfiles_id", para esto la mejor forma es cuando el usuario se autentifique en el sistema "LOGIN" la creamos,<br />
<br />
<source lang=php><br />
Session::set('usuarios_id', $usuarios->id);<br />
Session::set('perfiles_id', $usuarios->perfiles_id);<br />
</source><br />
<br />
y en el archivo application.php creamos un initialize de esta manera.<br />
<br />
<br />
<source lang=php><br />
public function initialize (){<br />
//si login esta ok<br />
if (....){<br />
Load::lib('online');<br />
Online::setUser();<br />
}<br />
}<br />
</source><br />
<br />
=== Mostrar los datos ===<br />
<br />
En esta parte cada programador puede mostrar los datos como quiera. solo deben hacer una consulta y recorrer el modelo con un foreach para poder crear una tabla. Yo lo haré con el [[Helper_Datagrid]] y [[JQuery_UI_en_Kumbiaphp_Spirit_beta2_calendar]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Clase_Online&diff=2789Clase Online2010-06-20T23:46:13Z<p>Fidelio: Página creada con '== Descripción == La clase online lo que hace es crear un registro del tiempo de conección para usuario logeado, para esto vamos asumir que ya tenemos nuestra tabla usuarios m...'</p>
<hr />
<div>== Descripción ==<br />
La clase online lo que hace es crear un registro del tiempo de conección para usuario logeado, para esto vamos asumir que ya tenemos nuestra tabla usuarios más una tabla de perfiles "roles", Tambien la forma de obtener los id de usuarios conectados, habra que crear una variable de session con la class Session y poder almacenar los valores en la tabla logs.<br />
<br />
=== Tablas ===<br />
Lo primero es crear nuestra tabla logs<br />
<br />
<source lang=mysql><br />
CREATE TABLE `logs` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`usuarios_id` int(4) DEFAULT NULL,<br />
`fecha_at` datetime DEFAULT NULL,<br />
`fecha_in` datetime DEFAULT NULL,<br />
`ip` varchar(16) CHARACTER SET latin1 DEFAULT NULL,<br />
`perfiles_id` int(4) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8<br />
</source><br />
<br />
<br />
<br />
=== clase online ===<br />
<br />
Esta class es de tipo estatica y la creamos como una libreria en nuestra app. "apps/libs/online.php"<br />
<br />
<source lang=php><br />
class Online{<br />
static function setUser(){<br />
Load::model('logs');<br />
$last_id = Load::model('sesiones')->getData('logs_id');<br />
$rec = new Logs();<br />
$rec->find($last_id);<br />
$rec->usuarios_id = Session::get('usuarios_id');<br />
$rec->perfiles_id = Session::get('perfiles_id');<br />
$rec->ip = $_SERVER['REMOTE_ADDR'];<br />
$rec->save();<br />
if(ActiveRecord::static_select_one("LAST_INSERT_ID()")!=0)<br />
Session::set('logs_id', ActiveRecord::static_select_one("LAST_INSERT_ID()"));<br />
}<br />
}<br />
</source><br />
<br />
=== Como utilizarla ===<br />
<br />
Con esto ya estamos listo para que nuestra app comienze almacenar datos en la base. Entonces el primer paso es crear las dos varianles de sesion "usuarios_id" y "perfiles_id", para esto la mejor forma es cuando el usuario se autentifique en el sistema "LOGIN" la creamos,<br />
<br />
<source lang=php><br />
Session::set('usuarios_id', $usuarios->id);<br />
Session::set('perfiles_id', $usuarios->perfiles_id);<br />
</source><br />
<br />
y en el archivo application.php creamos un initialize de esta manera.<br />
<br />
<br />
<source lang=php><br />
public function initialize (){<br />
//si login esta ok<br />
if (....){<br />
Load::lib('online');<br />
Online::setUser();<br />
}<br />
}<br />
</source></div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Helper_Datagrid&diff=2773Helper Datagrid2010-06-14T08:57:23Z<p>Fidelio: </p>
<hr />
<div>== DATAGRID FACIL DE USAR.==<br />
<br />
Invocando el helper datagrid y pasando el model se crea automáticamente una grilla con los campos (fields). La forma de modificar el diseño del datagrid es 100% hoja estilo 'CSS'. También con un poco de programación podrás<br />
ocultar campos, cambiar los titulos de los campos, crear link por fila el cual llamara una acción pasando el<br />
id como parámetro, link para editar y eliminar, personalizar mensajes de advertencias. asignar el tipo de campo<br />
que se está visualizando (moneda, número, porcentaje o una imagen). crear paginado.<br />
<br />
<br />
<br />
===setValue($field_id, $field)===<br />
<br />
Asigna un campo a mostrar de la tabla _id<br />
$field_id: campo_id del modelo.<br />
$field: nombre del campo que se encuentra en la tabla relacionada<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
</source><br />
<br />
<br />
<source lang=php><br />
$dataGrid = new($Usuarios);<br />
$dataGrid->setValue('roles_id', 'rol');<br />
$dataGrid->setValue('paises_id', 'nombre');<br />
$dataGrid->setValue('ciudades_id', 'ciudad');<br />
</source><br />
<br />
<br />
===setCaption($field, $title)===<br />
<br />
Cambia el nombre de una columna<br />
$field: campo del modelo<br />
$title: nombre a mostrar en la columna.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setCaption('id', 'COD');<br />
$dataGrid->setCaption('paises_id', 'PAIS');<br />
</source><br />
<br />
<br />
===setTextUpper($field)===<br />
<br />
Transforma toda la cadena de texto en letras Mayúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpper('nombres');<br />
</source><br />
<br />
<br />
===setTextLower($field)===<br />
<br />
Transforma toda la cadena de texto en letras minúsculas.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextLower('nombres');<br />
</source><br />
<br />
<br />
===setTextUpperFirst($field)===<br />
<br />
Transforma en mayúscula la primera letra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperFirst('nombres');<br />
</source><br />
<br />
===setTextUpperWords($field)===<br />
<br />
Transforma en mayúscula la primera letra de cada palabra de la cadena de texto.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTextUpperWords('nombres');<br />
</source><br />
<br />
<br />
===setTypeDate($field)===<br />
<br />
Formato de salida d/m/Y (01/01/2002) para base de datos mysql<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeDate('fecha');<br />
</source><br />
<br />
===setTypeImage($field)===<br />
<br />
Muestra una imagen que se encuentra en la carpeta img/, es decir, solo se almacena el nombre de la imagen en formato jpg, gif o png. Debe existir un subdirectorio llamdo thumbs el cual almacena las imagenes redimencionadas. <br />
El archivo config/datagrid.ini tiene información del tamaño de la imagen redimensionada.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeImage('photo');<br />
</source><br />
<br />
===setTypeMoney($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para el signo y separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeMoney('monto');<br />
</source><br />
<br />
===setTypeNumeric($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información para los separadores.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypeNumeric('cantidad');<br />
</source><br />
<br />
<br />
<br />
===setTypePercent($field)===<br />
<br />
Formato de salida de un campo numerico<br />
El archivo config/datagrid.ini tiene información adicional.<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setTypePercent('porcentaje');<br />
</source><br />
<br />
===setMimes($params=array())===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
array $params: array de parametros <br />
<br />
el primer paramtro es el nombre de la imagen que se encuentra en la carpeta img/ con extensión gif. 'xls:' el siguiente es el nombre de la accion que se encuetra en el mismo controlador creada la grilla, envia el id.<br />
ej: http://dominio.com/kumbia/clientes/verExcel/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setMimes('xls: verExcel', 'pdf: verPdf');<br />
</source><br />
<br />
===setAlias($fields, $data=array())===<br />
Crea alias a los datos que se encuentran en la tabla<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo', 'D'=>'Desactivo'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero', '1'=>'Uno', '2'=>'Dos', '3'=>'Tres', '4'=>'Cuatro', '5'=>'Cinco'));<br />
</source><br />
<br />
===setImage($fields, $data=array())===<br />
Coloca una imagen según el campo. La imagen puede ser cualquier formato soportado y debe estar almacenada en img/datagrid/<br />
<br />
<br />
$field: nombre del campo<br />
$data: array de parametros <br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('status', array('A'=>'Activo.png', 'D'=>'Desactivo.png'));<br />
</source><br />
o<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->setAlias('numeros', array('0'=>'Cero.gif', '1'=>'Uno.gif', '2'=>'Dos.gif', '3'=>'Tres.gif', '4'=>'Cuatro.gif', '5'=>'Cinco.gif'));<br />
</source><br />
<br />
<br />
===auto_filter = true===<br />
Genera por cada celda un select o combo para realizar búsquedas en la misma grilla.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->auto_filter = true;<br />
</source><br />
<br />
===ignore($field)===<br />
No muestra un campo del molelo en la grilla<br />
$field: campo del modelo<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->ignore('id');<br />
</source><br />
<br />
===create = $url ===<br />
Visualiza una imagen sobre la grilla y crea un link a la accion crear<br />
<br />
$url: nombre del controlador más la accion<br />
<br />
ej: http://dominio.com/kumbia/clientes/create<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/create';<br />
</source><br />
<br />
<br />
===edit = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/edit/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->edit = $controller_name . '/edit';<br />
</source><br />
<br />
===delete = $url ===<br />
Visualiza un icono con un link a una accion al final de la fila para cada registro.<br />
<br />
$url: nombre del controlador más la accion, es devuelta con su id <br />
<br />
ej: http://dominio.com/kumbia/clientes/delete/11<br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = controller_name . '/delete';<br />
</source><br />
<br />
<br />
===delete_confirm = $msg===<br />
Mensaje de alerta para la accion delete.<br />
$msg: se puede visualizar el valor de un campo pasandoselo entre llaves {$field}.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = 'Desea elimina el registro {id}';<br />
</source><br />
<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes);<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea elmimar este registro {nombre}, {apellido}?';<br />
</source><br />
<br />
===paginator_name = $paginador===<br />
<br />
$paginador: Nombre del paginador para la grilla por defecto usa el default<br />
puede incluir paginadores del kumbia.<br />
Classic - Digg - Extended - Punbb - Simple<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->paginator_name = 'classic';<br />
</source><br />
<br />
<br />
===url = $url===<br />
Si utiliza paginator la grilla se debe indicar la url para el paginado, sino se indica por defecto obtiene el nombre del controlador y su accion de donde fue creado el dataGrid.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->url = 'usurios/index';<br />
</source><br />
<br />
===show = 10===<br />
número de paginas que se mostraran en el paginador, por defecto 10.<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->show = 10;<br />
</source><br />
<br />
===style = $name===<br />
$name: nombre de la hoja de estilo ubicado en public/css/<br />
<br />
<source lang="php"><br />
$dataGrid = new($Clientes->paginate('per_page: 20'));<br />
$dataGrid->style = 'default';<br />
</source><br />
<br />
===Ejemplo 1 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<br />
<source lang="php"><br />
public function index()<br />
{<br />
$this->clientes = $this->Clientes->find("order: nombre");;<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<source lang="php"><br />
View::content();<br />
View::helpers('dataGrid');<br />
$dataGrid = new dataGrid($clientes);<br />
View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid));<br />
</source><br />
<br />
===Ejemplo 2 de Uso===<br />
<br />
'''controller_clientes.php'''<br />
<source lang="php"><br />
public function index($page=1)<br />
{<br />
$this->clientes = $this->Clientes->paginate('per_page: 20', "page: $page");<br />
}<br />
</source><br />
<br />
'''views/clientes/index.phtml'''<br />
<br />
<source lang="php"><br />
<?php View::content() ?><br />
<?php View::helpers('dataGrid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($clientes);<br />
$dataGrid->setValue('ciudades_id', 'nombre');<br />
$dataGrid->setTextLower('nombre');<br />
$dataGrid->setTypeImage('photo');<br />
$dataGrid->setMimes('xls: verXls');<br />
$dataGrid->ignore('id');<br />
$dataGrid->setCaption('ciudades_id', 'CIUDAD');<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete_confirm = 'Eliminar el registro {rut}-{dv}';<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
<br />
<br />
===Screenshots===<br />
Modelo Paises<br />
<br />
[[Archivo:Model_paises.gif]]<br />
<br />
* paises_controller.php<br />
<br />
<source lang='php'> <br />
class PaisesController extends ApplicationController{<br />
public function index($page=1)<br />
{<br />
$this->paises = Load::model('paises')->paginate('per_page: 10', "page: $page");<br />
}<br />
}<br />
</source><br />
<br />
* views/paises/index.phtml<br />
<br />
<source lang='php'> <br />
<?php View::content() ?><br />
<?php View::helpers('data_grid'); ?><br />
<?php <br />
$dataGrid = new dataGrid($paises);<br />
$dataGrid->setCaption('nombre', 'PAIS');<br />
$dataGrid->setTypeImage('imagen');<br />
$dataGrid->edit = $controller_name . '/edit';<br />
$dataGrid->delete = $controller_name . '/delete';<br />
$dataGrid->delete_confirm = '¿Desea eliminar el pais: {nombre}?';<br />
<br />
?><br />
<? View::partial('datagrid/default',false,array('dataGrid'=>$dataGrid)); ?><br />
</source><br />
<br />
===Descargar===<br />
[https://sourceforge.net/projects/helperdatagrid/files/dataGrid%20Jquery-ui%20Beta1%20rc0.9.tar.gz/download Descargar] para '''Spirit v1.0 beta1''' con temas de jquery-ui<br />
<br />
<br />
<br />
<br />
<br />
[[Categoría:Helpers]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Discusi%C3%B3n:Ejemplo_de_OAuth_en_KumbiaPHP&diff=2728Discusión:Ejemplo de OAuth en KumbiaPHP2010-06-09T06:59:14Z<p>Fidelio: Página creada con 'que buen ejemplo. Exitos!!!'</p>
<hr />
<div>que buen ejemplo.<br />
<br />
Exitos!!!</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Galeria_de_Imagenes_con_jQuery&diff=2682Galeria de Imagenes con jQuery2010-05-31T02:29:05Z<p>Fidelio: </p>
<hr />
<div>'''Esta practica esta basada en la version 1 Spirit beta1 de KumbiaPHP Framework.'''<br />
<br />
[[Archivo:Show.jpg]]<br />
[[Archivo:Jquery_image001.jpg]]<br />
<br />
Esta es una practica donde tendremos varias miniaturas de imagenes a mostrar en la vista, al seleccionar alguna de las imagenes, se nos abrira una ventana en jquery que tomara el alto y ancho de la imagen original a la cual podremos colocarle una descripcion. Puedes pasar de una imagen a otra desde esta ventana de presentacion, la cual tambien indica al pie, X imagen de N cantidad en total de imagenes presentes.<br />
<br />
Esta es una practica muy sencilla, no incluye Modelos ni especificaciones en el Controller, esta basada unicamente en descargar el jQuery Lightbox y colocar sus archivos en sus correspondientes sitios en kumbiaPHP Framework. Luego el agregar algunas cosas en la plantilla e indicar la ruta de las imagenes en nuestra vista.<br />
<br />
== Descargamos jQuery Lightbox plugin ==<br />
<br />
Descarga jQuery lightbox plugin de su Web [http://leandrovieira.com/projects/jquery/lightbox/ jQuery_Lightbox_plugin]<br />
<br />
Coloca el archivo '''jquery.lightbox-0.5.css''' en '''app/public/css/'''<br />
<br />
Para tener en orden los archivos y no mezclados con los del Framework, crea una carpeta "'''galeria'''" en '''app/public/javascript/galeria'''<br />
Coloca los archivos javascript que vienen con el plugin en '''app/public/javascript/galeria''' son 4 archivos.<br />
<br />
Busca varias imagenes, no importa su tamaño, las imagenes que dispongas a usar puedes reducir su tamaño desde tu editor de imagenes preferido.<br />
<br />
Las imagenes que tengas, guardalas en la carpeta de imagenes de kumbiaPHP, para tener un orden, si deseas, puedes crear una carpeta que las contenga y asi no mezclarlas con las imagenes default que vienen con el framework.<br />
<br />
Es decir, crea una carpeta llamada "galeria" en '''app/public/img/galeria''' y en ella coloca las imagenes que estaran en tu galeria de imagenes a mostrar.<br />
Dentro de esta carpeta tambien puedes crear otra llamada "miniaturas" quedando asi: '''app/public/img/galeria/miniaturas'''<br />
<br />
Crea tambien otra carpeta, la puedes llamar como gustes, para esta practica se llama "marco_ventana" quedando asi: '''app/public/img/galeria/marco_ventana'''.<br />
<br />
En la descarga de jQuery Lightbox<br />
<br />
La ventana jQuery que se despliega al seleccionar una imagen tiene sus iconos (que son realmente imagenes .Gif) son 5 archivos de imagen. Las imagenes que acompañan o adornas a esta ventana que despliega la imagen vienen en la carpeta '''images''', esas imagenes colocalas en la carpeta "'''marco_ventana'''" que ya debes tener en '''app/public/img/galeria/marco_ventana'''.<br />
<br />
== Agregamos algunas cosas en nuestra Plantilla/Template ==<br />
<br />
Usaremos el Template default de kumbiaphp para este ejemplo, entre lineas comentadas se indican los agregados que estan unicamente en los <head> </head> de la plantilla.<br />
<br />
<source lang=php line><br />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><br />
<html xmlns="http://www.w3.org/1999/xhtml"><br />
<head><br />
<meta http-equiv='Content-type' content='text/html; charset=<?php echo APP_CHARSET ?>' /><br />
<title>KumbiaPHP web &amp; app Framework</title><br />
<?php echo stylesheet_link_tag('bienvenida') ?><br />
<?php echo stylesheet_link_tag('style') ?><br />
<?php echo stylesheet_link_tag('exception') ?><br />
<?php<br />
// Los agregados a este app:<br />
echo stylesheet_link_tag('jquery.lightbox-0.5'); // CSS<br />
echo javascript_include_tag('galeria/jquery'); // JS<br />
echo javascript_include_tag('galeria/jquery.lightbox-0.5'); // JS<br />
?><br />
<?php echo stylesheet_link_tags(); ?><br />
<br />
<!-- Otro agregado de JS y CSS --><br />
<script type="text/javascript"><br />
$(function() {<br />
$('#galeria-imagenes a').lightBox();<br />
});<br />
</script><br />
<style type="text/css"><br />
/* jQuery lightBox plugin - galeria-imagenes style */<br />
#galeria-imagenes {<br />
background-color: #444;<br />
padding: 10px;<br />
width: 520px;<br />
}<br />
#galeria-imagenes ul { list-style: none; }<br />
#galeria-imagenes ul li { display: inline; }<br />
#galeria-imagenes ul img {<br />
border: 5px solid #3e3e3e;<br />
border-width: 5px 5px 20px;<br />
}<br />
#galeria-imagenes ul a:hover img {<br />
border: 5px solid #fff;<br />
border-width: 5px 5px 20px;<br />
color: #fff;<br />
}<br />
#galeria-imagenes ul a:hover { color: #fff; }<br />
</style><br />
<!-- Fin del agregado JS y CSS --><br />
</head><br />
<body><br />
<div id='content'><br />
<div id='head'><br />
<h1 id='logo'>KumbiaPHP</h1><div id='info-app'>web &amp; app Framework versión <?php echo Kumbia::KUMBIA_VERSION ?></div><br />
<br />
<div class='alignright'><br />
<p id='config'><br />
<span class='app'><?php echo APP ?></span> <br />
<?php echo link_to('status/', 'Config', 'title: Ver configuración de '.APP) ?><br />
</p><br />
</div><br />
</div><br />
<br />
<?php View::content(); ?><br />
<br />
<?php View::partial('kumbia/footer') ?><br />
</div><br />
</body><br />
</html><br />
</source><br />
<br />
Crearemos una vista Index para cargar la galeria de imagenes. En app/views/ crea la carpeta Index, quedando asi '''app/views/index/index.phtml'''<br />
<br />
Las imagenes descargadas para esta practica les fue cambiado el nombre, son 8 imagenes llamadas: img1.jpg, img2.jpg, img3.jpg .... img8.jpg<br />
<br />
Edita cada una de estas imagenes en tu editor de imagenes preferido y reducelas para crear una imagen en miniatura de cada una y guarda '''una copia''' para tener las imagenes en tamaño normal y en tamaño miniatura. Las miniaturas guardalas en '''app/public/img/galeria/miniaturas/'''<br />
<br />
La Vista:''' index.phtml''' la cual estara en '''app/views/index/index.phtml'''<br />
<br />
<source lang=php line><br />
<h2>Galeria de Imagenes</h2><br />
<p>Galeria de Imagenes con jQuery.</p><br />
<div id="galeria-imagenes"><br />
<ul><br />
<li><br />
<?php echo link_to('public/img/galeria/img1.jpg',img_tag('galeria/miniaturas/img1_mini.jpg','alt: imagen caverna'), 'title: Las cavernas son pasajes del planeta atrapados en el tiempo.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img2.jpg',img_tag('galeria/miniaturas/img2_mini.jpg','alt: imagen paisaje'), 'title: hermosos paisajes, perfecto para colocar como wallpaper.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img3.jpg',img_tag('galeria/miniaturas/img3_mini.jpg','alt: imagen oso polar'), 'title: el oso pedroso de polar luego de tomarse unas 12 cajas sale a refrescarse un poco por el calor.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img4.jpg',img_tag('galeria/miniaturas/img4_mini.jpg','alt: imagen rio 1'), 'title: rios donde puedes refrescarte con tu pareja "al desnudo".') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img5.jpg',img_tag('galeria/miniaturas/img5_mini.jpg','alt: imagen rio 2'), 'title: otra imagen aqui') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img6.jpg',img_tag('galeria/miniaturas/img6_mini.jpg','alt: imagen rio a lo lejos'), 'title: Hermoso paisaje de un lago de no se donde.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img7.jpg',img_tag('galeria/miniaturas/img7_mini.jpg','alt: cataratas'), 'title: Interesante foto de unas Cascadas') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img8.jpg',img_tag('galeria/miniaturas/img8_mini.jpg','alt: hombre pescando'), 'title: Tranquilidad absoluta, buen dia para pezcar.') ?><br />
</li><br />
</ul><br />
</div><br />
</source><br />
<br />
Ahora solo falta editar uno de los archivos javascript de jQuery Lightbox plugin. Abre el archivo '''jquery.lightbox-05.js''' que esta en '''app/public/javascript/galeria/jquery.lightbox-05.js'''<br />
<br />
Hay una seccion que es:<br />
<source lang=javascript><br />
// Configuration related to images<br />
<br />
imageLoading: 'images/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon<br />
<br />
imageBtnPrev: 'images/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image<br />
<br />
imageBtnNext: 'images/lightbox-btn-next.gif', // (string) Path and the name of the next button image<br />
<br />
imageBtnClose: 'images/lightbox-btn-close.gif', // (string) Path and the name of the close btn<br />
<br />
imageBlank: 'images/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel)<br />
</source><br />
<br />
Esta seccion del codigo, es donde se le indica la ruta de las imagenes .Gif que adornan a la ventana de jQuery, esas rutas debemos cambiarlas por la ruta donde colocamos estos archivos .Gif ya mencionados previamente, quedando para el caso de esta practica de esta forma:<br />
<br />
<source lang=javascript><br />
// Configuration related to images<br />
<br />
imageLoading: '../public/img/galeria/marco_ventana/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon<br />
<br />
imageBtnPrev: '../public/img/galeria/marco_ventana/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image<br />
<br />
imageBtnNext: '../public/img/galeria/marco_ventana/lightbox-btn-next.gif', // (string) Path and the name of the next button image<br />
<br />
imageBtnClose: '../public/img/galeria/marco_ventana/lightbox-btn-close.gif', // (string) Path and the name of the close btn<br />
<br />
imageBlank: '../public/images/galeria/marco_ventana/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel)<br />
</source><br />
<br />
Eso es todo, carga la vista Index de esta app y deberia cargarse tu galeria de imagenes, selecciona alguna de ellas y veras la carga de las imagenes por medio de este plugin de jQuery llamado '''Lightbox'''.<br />
<br />
== Descarga esta Practica ==<br />
Descarga este ejemplo: [http://dl.dropbox.com/u/2807704/kumbiaPHP/v1_b1/app_galeria_img.zip app_galeria_img]<br />
<br />
Cualquier ayuda que necesites sobre esta practica de Galeria de Imagenes con jQuery, puedes pasar por el IRC de KumbiaPHP, el Foro o la Listmail, siempre hay personas dispuestas a ayudarte en lo que necesites.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:jQuery]] .</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Archivo:Jquery_image001.jpg&diff=2681Archivo:Jquery image001.jpg2010-05-31T02:28:02Z<p>Fidelio: </p>
<hr />
<div></div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Galeria_de_Imagenes_con_jQuery&diff=2680Galeria de Imagenes con jQuery2010-05-31T02:22:10Z<p>Fidelio: </p>
<hr />
<div>'''Esta practica esta basada en la version 1 Spirit beta1 de KumbiaPHP Framework.'''<br />
<br />
[[Archivo:Show.jpg]]<br />
<br />
<br />
Esta es una practica donde tendremos varias miniaturas de imagenes a mostrar en la vista, al seleccionar alguna de las imagenes, se nos abrira una ventana en jquery que tomara el alto y ancho de la imagen original a la cual podremos colocarle una descripcion. Puedes pasar de una imagen a otra desde esta ventana de presentacion, la cual tambien indica al pie, X imagen de N cantidad en total de imagenes presentes.<br />
<br />
Esta es una practica muy sencilla, no incluye Modelos ni especificaciones en el Controller, esta basada unicamente en descargar el jQuery Lightbox y colocar sus archivos en sus correspondientes sitios en kumbiaPHP Framework. Luego el agregar algunas cosas en la plantilla e indicar la ruta de las imagenes en nuestra vista.<br />
<br />
== Descargamos jQuery Lightbox plugin ==<br />
<br />
Descarga jQuery lightbox plugin de su Web [http://leandrovieira.com/projects/jquery/lightbox/ jQuery_Lightbox_plugin]<br />
<br />
Coloca el archivo '''jquery.lightbox-0.5.css''' en '''app/public/css/'''<br />
<br />
Para tener en orden los archivos y no mezclados con los del Framework, crea una carpeta "'''galeria'''" en '''app/public/javascript/galeria'''<br />
Coloca los archivos javascript que vienen con el plugin en '''app/public/javascript/galeria''' son 4 archivos.<br />
<br />
Busca varias imagenes, no importa su tamaño, las imagenes que dispongas a usar puedes reducir su tamaño desde tu editor de imagenes preferido.<br />
<br />
Las imagenes que tengas, guardalas en la carpeta de imagenes de kumbiaPHP, para tener un orden, si deseas, puedes crear una carpeta que las contenga y asi no mezclarlas con las imagenes default que vienen con el framework.<br />
<br />
Es decir, crea una carpeta llamada "galeria" en '''app/public/img/galeria''' y en ella coloca las imagenes que estaran en tu galeria de imagenes a mostrar.<br />
Dentro de esta carpeta tambien puedes crear otra llamada "miniaturas" quedando asi: '''app/public/img/galeria/miniaturas'''<br />
<br />
Crea tambien otra carpeta, la puedes llamar como gustes, para esta practica se llama "marco_ventana" quedando asi: '''app/public/img/galeria/marco_ventana'''.<br />
<br />
En la descarga de jQuery Lightbox<br />
<br />
La ventana jQuery que se despliega al seleccionar una imagen tiene sus iconos (que son realmente imagenes .Gif) son 5 archivos de imagen. Las imagenes que acompañan o adornas a esta ventana que despliega la imagen vienen en la carpeta '''images''', esas imagenes colocalas en la carpeta "'''marco_ventana'''" que ya debes tener en '''app/public/img/galeria/marco_ventana'''.<br />
<br />
== Agregamos algunas cosas en nuestra Plantilla/Template ==<br />
<br />
Usaremos el Template default de kumbiaphp para este ejemplo, entre lineas comentadas se indican los agregados que estan unicamente en los <head> </head> de la plantilla.<br />
<br />
<source lang=php line><br />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><br />
<html xmlns="http://www.w3.org/1999/xhtml"><br />
<head><br />
<meta http-equiv='Content-type' content='text/html; charset=<?php echo APP_CHARSET ?>' /><br />
<title>KumbiaPHP web &amp; app Framework</title><br />
<?php echo stylesheet_link_tag('bienvenida') ?><br />
<?php echo stylesheet_link_tag('style') ?><br />
<?php echo stylesheet_link_tag('exception') ?><br />
<?php<br />
// Los agregados a este app:<br />
echo stylesheet_link_tag('jquery.lightbox-0.5'); // CSS<br />
echo javascript_include_tag('galeria/jquery'); // JS<br />
echo javascript_include_tag('galeria/jquery.lightbox-0.5'); // JS<br />
?><br />
<?php echo stylesheet_link_tags(); ?><br />
<br />
<!-- Otro agregado de JS y CSS --><br />
<script type="text/javascript"><br />
$(function() {<br />
$('#galeria-imagenes a').lightBox();<br />
});<br />
</script><br />
<style type="text/css"><br />
/* jQuery lightBox plugin - galeria-imagenes style */<br />
#galeria-imagenes {<br />
background-color: #444;<br />
padding: 10px;<br />
width: 520px;<br />
}<br />
#galeria-imagenes ul { list-style: none; }<br />
#galeria-imagenes ul li { display: inline; }<br />
#galeria-imagenes ul img {<br />
border: 5px solid #3e3e3e;<br />
border-width: 5px 5px 20px;<br />
}<br />
#galeria-imagenes ul a:hover img {<br />
border: 5px solid #fff;<br />
border-width: 5px 5px 20px;<br />
color: #fff;<br />
}<br />
#galeria-imagenes ul a:hover { color: #fff; }<br />
</style><br />
<!-- Fin del agregado JS y CSS --><br />
</head><br />
<body><br />
<div id='content'><br />
<div id='head'><br />
<h1 id='logo'>KumbiaPHP</h1><div id='info-app'>web &amp; app Framework versión <?php echo Kumbia::KUMBIA_VERSION ?></div><br />
<br />
<div class='alignright'><br />
<p id='config'><br />
<span class='app'><?php echo APP ?></span> <br />
<?php echo link_to('status/', 'Config', 'title: Ver configuración de '.APP) ?><br />
</p><br />
</div><br />
</div><br />
<br />
<?php View::content(); ?><br />
<br />
<?php View::partial('kumbia/footer') ?><br />
</div><br />
</body><br />
</html><br />
</source><br />
<br />
Crearemos una vista Index para cargar la galeria de imagenes. En app/views/ crea la carpeta Index, quedando asi '''app/views/index/index.phtml'''<br />
<br />
Las imagenes descargadas para esta practica les fue cambiado el nombre, son 8 imagenes llamadas: img1.jpg, img2.jpg, img3.jpg .... img8.jpg<br />
<br />
Edita cada una de estas imagenes en tu editor de imagenes preferido y reducelas para crear una imagen en miniatura de cada una y guarda '''una copia''' para tener las imagenes en tamaño normal y en tamaño miniatura. Las miniaturas guardalas en '''app/public/img/galeria/miniaturas/'''<br />
<br />
La Vista:''' index.phtml''' la cual estara en '''app/views/index/index.phtml'''<br />
<br />
<source lang=php line><br />
<h2>Galeria de Imagenes</h2><br />
<p>Galeria de Imagenes con jQuery.</p><br />
<div id="galeria-imagenes"><br />
<ul><br />
<li><br />
<?php echo link_to('public/img/galeria/img1.jpg',img_tag('galeria/miniaturas/img1_mini.jpg','alt: imagen caverna'), 'title: Las cavernas son pasajes del planeta atrapados en el tiempo.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img2.jpg',img_tag('galeria/miniaturas/img2_mini.jpg','alt: imagen paisaje'), 'title: hermosos paisajes, perfecto para colocar como wallpaper.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img3.jpg',img_tag('galeria/miniaturas/img3_mini.jpg','alt: imagen oso polar'), 'title: el oso pedroso de polar luego de tomarse unas 12 cajas sale a refrescarse un poco por el calor.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img4.jpg',img_tag('galeria/miniaturas/img4_mini.jpg','alt: imagen rio 1'), 'title: rios donde puedes refrescarte con tu pareja "al desnudo".') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img5.jpg',img_tag('galeria/miniaturas/img5_mini.jpg','alt: imagen rio 2'), 'title: otra imagen aqui') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img6.jpg',img_tag('galeria/miniaturas/img6_mini.jpg','alt: imagen rio a lo lejos'), 'title: Hermoso paisaje de un lago de no se donde.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img7.jpg',img_tag('galeria/miniaturas/img7_mini.jpg','alt: cataratas'), 'title: Interesante foto de unas Cascadas') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img8.jpg',img_tag('galeria/miniaturas/img8_mini.jpg','alt: hombre pescando'), 'title: Tranquilidad absoluta, buen dia para pezcar.') ?><br />
</li><br />
</ul><br />
</div><br />
</source><br />
<br />
Ahora solo falta editar uno de los archivos javascript de jQuery Lightbox plugin. Abre el archivo '''jquery.lightbox-05.js''' que esta en '''app/public/javascript/galeria/jquery.lightbox-05.js'''<br />
<br />
Hay una seccion que es:<br />
<source lang=javascript><br />
// Configuration related to images<br />
<br />
imageLoading: 'images/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon<br />
<br />
imageBtnPrev: 'images/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image<br />
<br />
imageBtnNext: 'images/lightbox-btn-next.gif', // (string) Path and the name of the next button image<br />
<br />
imageBtnClose: 'images/lightbox-btn-close.gif', // (string) Path and the name of the close btn<br />
<br />
imageBlank: 'images/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel)<br />
</source><br />
<br />
Esta seccion del codigo, es donde se le indica la ruta de las imagenes .Gif que adornan a la ventana de jQuery, esas rutas debemos cambiarlas por la ruta donde colocamos estos archivos .Gif ya mencionados previamente, quedando para el caso de esta practica de esta forma:<br />
<br />
<source lang=javascript><br />
// Configuration related to images<br />
<br />
imageLoading: '../public/img/galeria/marco_ventana/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon<br />
<br />
imageBtnPrev: '../public/img/galeria/marco_ventana/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image<br />
<br />
imageBtnNext: '../public/img/galeria/marco_ventana/lightbox-btn-next.gif', // (string) Path and the name of the next button image<br />
<br />
imageBtnClose: '../public/img/galeria/marco_ventana/lightbox-btn-close.gif', // (string) Path and the name of the close btn<br />
<br />
imageBlank: '../public/images/galeria/marco_ventana/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel)<br />
</source><br />
<br />
Eso es todo, carga la vista Index de esta app y deberia cargarse tu galeria de imagenes, selecciona alguna de ellas y veras la carga de las imagenes por medio de este plugin de jQuery llamado '''Lightbox'''.<br />
<br />
== Descarga esta Practica ==<br />
Descarga este ejemplo: [http://dl.dropbox.com/u/2807704/kumbiaPHP/v1_b1/app_galeria_img.zip app_galeria_img]<br />
<br />
Cualquier ayuda que necesites sobre esta practica de Galeria de Imagenes con jQuery, puedes pasar por el IRC de KumbiaPHP, el Foro o la Listmail, siempre hay personas dispuestas a ayudarte en lo que necesites.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:jQuery]] .</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Galeria_de_Imagenes_con_jQuery&diff=2679Galeria de Imagenes con jQuery2010-05-31T02:21:51Z<p>Fidelio: /* Descargamos jQuery Lightbox plugin */</p>
<hr />
<div>'''Esta practica esta basada en la version 1 Spirit beta1 de KumbiaPHP Framework.'''<br />
<br />
Esta es una practica donde tendremos varias miniaturas de imagenes a mostrar en la vista, al seleccionar alguna de las imagenes, se nos abrira una ventana en jquery que tomara el alto y ancho de la imagen original a la cual podremos colocarle una descripcion. Puedes pasar de una imagen a otra desde esta ventana de presentacion, la cual tambien indica al pie, X imagen de N cantidad en total de imagenes presentes.<br />
<br />
Esta es una practica muy sencilla, no incluye Modelos ni especificaciones en el Controller, esta basada unicamente en descargar el jQuery Lightbox y colocar sus archivos en sus correspondientes sitios en kumbiaPHP Framework. Luego el agregar algunas cosas en la plantilla e indicar la ruta de las imagenes en nuestra vista.<br />
<br />
== Descargamos jQuery Lightbox plugin ==<br />
<br />
Descarga jQuery lightbox plugin de su Web [http://leandrovieira.com/projects/jquery/lightbox/ jQuery_Lightbox_plugin]<br />
<br />
Coloca el archivo '''jquery.lightbox-0.5.css''' en '''app/public/css/'''<br />
<br />
Para tener en orden los archivos y no mezclados con los del Framework, crea una carpeta "'''galeria'''" en '''app/public/javascript/galeria'''<br />
Coloca los archivos javascript que vienen con el plugin en '''app/public/javascript/galeria''' son 4 archivos.<br />
<br />
Busca varias imagenes, no importa su tamaño, las imagenes que dispongas a usar puedes reducir su tamaño desde tu editor de imagenes preferido.<br />
<br />
Las imagenes que tengas, guardalas en la carpeta de imagenes de kumbiaPHP, para tener un orden, si deseas, puedes crear una carpeta que las contenga y asi no mezclarlas con las imagenes default que vienen con el framework.<br />
<br />
Es decir, crea una carpeta llamada "galeria" en '''app/public/img/galeria''' y en ella coloca las imagenes que estaran en tu galeria de imagenes a mostrar.<br />
Dentro de esta carpeta tambien puedes crear otra llamada "miniaturas" quedando asi: '''app/public/img/galeria/miniaturas'''<br />
<br />
Crea tambien otra carpeta, la puedes llamar como gustes, para esta practica se llama "marco_ventana" quedando asi: '''app/public/img/galeria/marco_ventana'''.<br />
<br />
En la descarga de jQuery Lightbox<br />
<br />
La ventana jQuery que se despliega al seleccionar una imagen tiene sus iconos (que son realmente imagenes .Gif) son 5 archivos de imagen. Las imagenes que acompañan o adornas a esta ventana que despliega la imagen vienen en la carpeta '''images''', esas imagenes colocalas en la carpeta "'''marco_ventana'''" que ya debes tener en '''app/public/img/galeria/marco_ventana'''.<br />
<br />
== Agregamos algunas cosas en nuestra Plantilla/Template ==<br />
<br />
Usaremos el Template default de kumbiaphp para este ejemplo, entre lineas comentadas se indican los agregados que estan unicamente en los <head> </head> de la plantilla.<br />
<br />
<source lang=php line><br />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><br />
<html xmlns="http://www.w3.org/1999/xhtml"><br />
<head><br />
<meta http-equiv='Content-type' content='text/html; charset=<?php echo APP_CHARSET ?>' /><br />
<title>KumbiaPHP web &amp; app Framework</title><br />
<?php echo stylesheet_link_tag('bienvenida') ?><br />
<?php echo stylesheet_link_tag('style') ?><br />
<?php echo stylesheet_link_tag('exception') ?><br />
<?php<br />
// Los agregados a este app:<br />
echo stylesheet_link_tag('jquery.lightbox-0.5'); // CSS<br />
echo javascript_include_tag('galeria/jquery'); // JS<br />
echo javascript_include_tag('galeria/jquery.lightbox-0.5'); // JS<br />
?><br />
<?php echo stylesheet_link_tags(); ?><br />
<br />
<!-- Otro agregado de JS y CSS --><br />
<script type="text/javascript"><br />
$(function() {<br />
$('#galeria-imagenes a').lightBox();<br />
});<br />
</script><br />
<style type="text/css"><br />
/* jQuery lightBox plugin - galeria-imagenes style */<br />
#galeria-imagenes {<br />
background-color: #444;<br />
padding: 10px;<br />
width: 520px;<br />
}<br />
#galeria-imagenes ul { list-style: none; }<br />
#galeria-imagenes ul li { display: inline; }<br />
#galeria-imagenes ul img {<br />
border: 5px solid #3e3e3e;<br />
border-width: 5px 5px 20px;<br />
}<br />
#galeria-imagenes ul a:hover img {<br />
border: 5px solid #fff;<br />
border-width: 5px 5px 20px;<br />
color: #fff;<br />
}<br />
#galeria-imagenes ul a:hover { color: #fff; }<br />
</style><br />
<!-- Fin del agregado JS y CSS --><br />
</head><br />
<body><br />
<div id='content'><br />
<div id='head'><br />
<h1 id='logo'>KumbiaPHP</h1><div id='info-app'>web &amp; app Framework versión <?php echo Kumbia::KUMBIA_VERSION ?></div><br />
<br />
<div class='alignright'><br />
<p id='config'><br />
<span class='app'><?php echo APP ?></span> <br />
<?php echo link_to('status/', 'Config', 'title: Ver configuración de '.APP) ?><br />
</p><br />
</div><br />
</div><br />
<br />
<?php View::content(); ?><br />
<br />
<?php View::partial('kumbia/footer') ?><br />
</div><br />
</body><br />
</html><br />
</source><br />
<br />
Crearemos una vista Index para cargar la galeria de imagenes. En app/views/ crea la carpeta Index, quedando asi '''app/views/index/index.phtml'''<br />
<br />
Las imagenes descargadas para esta practica les fue cambiado el nombre, son 8 imagenes llamadas: img1.jpg, img2.jpg, img3.jpg .... img8.jpg<br />
<br />
Edita cada una de estas imagenes en tu editor de imagenes preferido y reducelas para crear una imagen en miniatura de cada una y guarda '''una copia''' para tener las imagenes en tamaño normal y en tamaño miniatura. Las miniaturas guardalas en '''app/public/img/galeria/miniaturas/'''<br />
<br />
La Vista:''' index.phtml''' la cual estara en '''app/views/index/index.phtml'''<br />
<br />
<source lang=php line><br />
<h2>Galeria de Imagenes</h2><br />
<p>Galeria de Imagenes con jQuery.</p><br />
<div id="galeria-imagenes"><br />
<ul><br />
<li><br />
<?php echo link_to('public/img/galeria/img1.jpg',img_tag('galeria/miniaturas/img1_mini.jpg','alt: imagen caverna'), 'title: Las cavernas son pasajes del planeta atrapados en el tiempo.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img2.jpg',img_tag('galeria/miniaturas/img2_mini.jpg','alt: imagen paisaje'), 'title: hermosos paisajes, perfecto para colocar como wallpaper.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img3.jpg',img_tag('galeria/miniaturas/img3_mini.jpg','alt: imagen oso polar'), 'title: el oso pedroso de polar luego de tomarse unas 12 cajas sale a refrescarse un poco por el calor.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img4.jpg',img_tag('galeria/miniaturas/img4_mini.jpg','alt: imagen rio 1'), 'title: rios donde puedes refrescarte con tu pareja "al desnudo".') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img5.jpg',img_tag('galeria/miniaturas/img5_mini.jpg','alt: imagen rio 2'), 'title: otra imagen aqui') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img6.jpg',img_tag('galeria/miniaturas/img6_mini.jpg','alt: imagen rio a lo lejos'), 'title: Hermoso paisaje de un lago de no se donde.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img7.jpg',img_tag('galeria/miniaturas/img7_mini.jpg','alt: cataratas'), 'title: Interesante foto de unas Cascadas') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img8.jpg',img_tag('galeria/miniaturas/img8_mini.jpg','alt: hombre pescando'), 'title: Tranquilidad absoluta, buen dia para pezcar.') ?><br />
</li><br />
</ul><br />
</div><br />
</source><br />
<br />
Ahora solo falta editar uno de los archivos javascript de jQuery Lightbox plugin. Abre el archivo '''jquery.lightbox-05.js''' que esta en '''app/public/javascript/galeria/jquery.lightbox-05.js'''<br />
<br />
Hay una seccion que es:<br />
<source lang=javascript><br />
// Configuration related to images<br />
<br />
imageLoading: 'images/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon<br />
<br />
imageBtnPrev: 'images/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image<br />
<br />
imageBtnNext: 'images/lightbox-btn-next.gif', // (string) Path and the name of the next button image<br />
<br />
imageBtnClose: 'images/lightbox-btn-close.gif', // (string) Path and the name of the close btn<br />
<br />
imageBlank: 'images/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel)<br />
</source><br />
<br />
Esta seccion del codigo, es donde se le indica la ruta de las imagenes .Gif que adornan a la ventana de jQuery, esas rutas debemos cambiarlas por la ruta donde colocamos estos archivos .Gif ya mencionados previamente, quedando para el caso de esta practica de esta forma:<br />
<br />
<source lang=javascript><br />
// Configuration related to images<br />
<br />
imageLoading: '../public/img/galeria/marco_ventana/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon<br />
<br />
imageBtnPrev: '../public/img/galeria/marco_ventana/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image<br />
<br />
imageBtnNext: '../public/img/galeria/marco_ventana/lightbox-btn-next.gif', // (string) Path and the name of the next button image<br />
<br />
imageBtnClose: '../public/img/galeria/marco_ventana/lightbox-btn-close.gif', // (string) Path and the name of the close btn<br />
<br />
imageBlank: '../public/images/galeria/marco_ventana/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel)<br />
</source><br />
<br />
Eso es todo, carga la vista Index de esta app y deberia cargarse tu galeria de imagenes, selecciona alguna de ellas y veras la carga de las imagenes por medio de este plugin de jQuery llamado '''Lightbox'''.<br />
<br />
== Descarga esta Practica ==<br />
Descarga este ejemplo: [http://dl.dropbox.com/u/2807704/kumbiaPHP/v1_b1/app_galeria_img.zip app_galeria_img]<br />
<br />
Cualquier ayuda que necesites sobre esta practica de Galeria de Imagenes con jQuery, puedes pasar por el IRC de KumbiaPHP, el Foro o la Listmail, siempre hay personas dispuestas a ayudarte en lo que necesites.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:jQuery]] .</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Galeria_de_Imagenes_con_jQuery&diff=2678Galeria de Imagenes con jQuery2010-05-31T02:21:12Z<p>Fidelio: /* Descargamos jQuery Lightbox plugin */</p>
<hr />
<div>'''Esta practica esta basada en la version 1 Spirit beta1 de KumbiaPHP Framework.'''<br />
<br />
Esta es una practica donde tendremos varias miniaturas de imagenes a mostrar en la vista, al seleccionar alguna de las imagenes, se nos abrira una ventana en jquery que tomara el alto y ancho de la imagen original a la cual podremos colocarle una descripcion. Puedes pasar de una imagen a otra desde esta ventana de presentacion, la cual tambien indica al pie, X imagen de N cantidad en total de imagenes presentes.<br />
<br />
Esta es una practica muy sencilla, no incluye Modelos ni especificaciones en el Controller, esta basada unicamente en descargar el jQuery Lightbox y colocar sus archivos en sus correspondientes sitios en kumbiaPHP Framework. Luego el agregar algunas cosas en la plantilla e indicar la ruta de las imagenes en nuestra vista.<br />
<br />
== Descargamos jQuery Lightbox plugin ==<br />
<br />
[[Archivo:Show.jpg]]<br />
<br />
<br />
Descarga jQuery lightbox plugin de su Web [http://leandrovieira.com/projects/jquery/lightbox/ jQuery_Lightbox_plugin]<br />
<br />
Coloca el archivo '''jquery.lightbox-0.5.css''' en '''app/public/css/'''<br />
<br />
Para tener en orden los archivos y no mezclados con los del Framework, crea una carpeta "'''galeria'''" en '''app/public/javascript/galeria'''<br />
Coloca los archivos javascript que vienen con el plugin en '''app/public/javascript/galeria''' son 4 archivos.<br />
<br />
Busca varias imagenes, no importa su tamaño, las imagenes que dispongas a usar puedes reducir su tamaño desde tu editor de imagenes preferido.<br />
<br />
Las imagenes que tengas, guardalas en la carpeta de imagenes de kumbiaPHP, para tener un orden, si deseas, puedes crear una carpeta que las contenga y asi no mezclarlas con las imagenes default que vienen con el framework.<br />
<br />
Es decir, crea una carpeta llamada "galeria" en '''app/public/img/galeria''' y en ella coloca las imagenes que estaran en tu galeria de imagenes a mostrar.<br />
Dentro de esta carpeta tambien puedes crear otra llamada "miniaturas" quedando asi: '''app/public/img/galeria/miniaturas'''<br />
<br />
Crea tambien otra carpeta, la puedes llamar como gustes, para esta practica se llama "marco_ventana" quedando asi: '''app/public/img/galeria/marco_ventana'''.<br />
<br />
En la descarga de jQuery Lightbox<br />
<br />
La ventana jQuery que se despliega al seleccionar una imagen tiene sus iconos (que son realmente imagenes .Gif) son 5 archivos de imagen. Las imagenes que acompañan o adornas a esta ventana que despliega la imagen vienen en la carpeta '''images''', esas imagenes colocalas en la carpeta "'''marco_ventana'''" que ya debes tener en '''app/public/img/galeria/marco_ventana'''.<br />
<br />
== Agregamos algunas cosas en nuestra Plantilla/Template ==<br />
<br />
Usaremos el Template default de kumbiaphp para este ejemplo, entre lineas comentadas se indican los agregados que estan unicamente en los <head> </head> de la plantilla.<br />
<br />
<source lang=php line><br />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><br />
<html xmlns="http://www.w3.org/1999/xhtml"><br />
<head><br />
<meta http-equiv='Content-type' content='text/html; charset=<?php echo APP_CHARSET ?>' /><br />
<title>KumbiaPHP web &amp; app Framework</title><br />
<?php echo stylesheet_link_tag('bienvenida') ?><br />
<?php echo stylesheet_link_tag('style') ?><br />
<?php echo stylesheet_link_tag('exception') ?><br />
<?php<br />
// Los agregados a este app:<br />
echo stylesheet_link_tag('jquery.lightbox-0.5'); // CSS<br />
echo javascript_include_tag('galeria/jquery'); // JS<br />
echo javascript_include_tag('galeria/jquery.lightbox-0.5'); // JS<br />
?><br />
<?php echo stylesheet_link_tags(); ?><br />
<br />
<!-- Otro agregado de JS y CSS --><br />
<script type="text/javascript"><br />
$(function() {<br />
$('#galeria-imagenes a').lightBox();<br />
});<br />
</script><br />
<style type="text/css"><br />
/* jQuery lightBox plugin - galeria-imagenes style */<br />
#galeria-imagenes {<br />
background-color: #444;<br />
padding: 10px;<br />
width: 520px;<br />
}<br />
#galeria-imagenes ul { list-style: none; }<br />
#galeria-imagenes ul li { display: inline; }<br />
#galeria-imagenes ul img {<br />
border: 5px solid #3e3e3e;<br />
border-width: 5px 5px 20px;<br />
}<br />
#galeria-imagenes ul a:hover img {<br />
border: 5px solid #fff;<br />
border-width: 5px 5px 20px;<br />
color: #fff;<br />
}<br />
#galeria-imagenes ul a:hover { color: #fff; }<br />
</style><br />
<!-- Fin del agregado JS y CSS --><br />
</head><br />
<body><br />
<div id='content'><br />
<div id='head'><br />
<h1 id='logo'>KumbiaPHP</h1><div id='info-app'>web &amp; app Framework versión <?php echo Kumbia::KUMBIA_VERSION ?></div><br />
<br />
<div class='alignright'><br />
<p id='config'><br />
<span class='app'><?php echo APP ?></span> <br />
<?php echo link_to('status/', 'Config', 'title: Ver configuración de '.APP) ?><br />
</p><br />
</div><br />
</div><br />
<br />
<?php View::content(); ?><br />
<br />
<?php View::partial('kumbia/footer') ?><br />
</div><br />
</body><br />
</html><br />
</source><br />
<br />
Crearemos una vista Index para cargar la galeria de imagenes. En app/views/ crea la carpeta Index, quedando asi '''app/views/index/index.phtml'''<br />
<br />
Las imagenes descargadas para esta practica les fue cambiado el nombre, son 8 imagenes llamadas: img1.jpg, img2.jpg, img3.jpg .... img8.jpg<br />
<br />
Edita cada una de estas imagenes en tu editor de imagenes preferido y reducelas para crear una imagen en miniatura de cada una y guarda '''una copia''' para tener las imagenes en tamaño normal y en tamaño miniatura. Las miniaturas guardalas en '''app/public/img/galeria/miniaturas/'''<br />
<br />
La Vista:''' index.phtml''' la cual estara en '''app/views/index/index.phtml'''<br />
<br />
<source lang=php line><br />
<h2>Galeria de Imagenes</h2><br />
<p>Galeria de Imagenes con jQuery.</p><br />
<div id="galeria-imagenes"><br />
<ul><br />
<li><br />
<?php echo link_to('public/img/galeria/img1.jpg',img_tag('galeria/miniaturas/img1_mini.jpg','alt: imagen caverna'), 'title: Las cavernas son pasajes del planeta atrapados en el tiempo.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img2.jpg',img_tag('galeria/miniaturas/img2_mini.jpg','alt: imagen paisaje'), 'title: hermosos paisajes, perfecto para colocar como wallpaper.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img3.jpg',img_tag('galeria/miniaturas/img3_mini.jpg','alt: imagen oso polar'), 'title: el oso pedroso de polar luego de tomarse unas 12 cajas sale a refrescarse un poco por el calor.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img4.jpg',img_tag('galeria/miniaturas/img4_mini.jpg','alt: imagen rio 1'), 'title: rios donde puedes refrescarte con tu pareja "al desnudo".') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img5.jpg',img_tag('galeria/miniaturas/img5_mini.jpg','alt: imagen rio 2'), 'title: otra imagen aqui') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img6.jpg',img_tag('galeria/miniaturas/img6_mini.jpg','alt: imagen rio a lo lejos'), 'title: Hermoso paisaje de un lago de no se donde.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img7.jpg',img_tag('galeria/miniaturas/img7_mini.jpg','alt: cataratas'), 'title: Interesante foto de unas Cascadas') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img8.jpg',img_tag('galeria/miniaturas/img8_mini.jpg','alt: hombre pescando'), 'title: Tranquilidad absoluta, buen dia para pezcar.') ?><br />
</li><br />
</ul><br />
</div><br />
</source><br />
<br />
Ahora solo falta editar uno de los archivos javascript de jQuery Lightbox plugin. Abre el archivo '''jquery.lightbox-05.js''' que esta en '''app/public/javascript/galeria/jquery.lightbox-05.js'''<br />
<br />
Hay una seccion que es:<br />
<source lang=javascript><br />
// Configuration related to images<br />
<br />
imageLoading: 'images/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon<br />
<br />
imageBtnPrev: 'images/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image<br />
<br />
imageBtnNext: 'images/lightbox-btn-next.gif', // (string) Path and the name of the next button image<br />
<br />
imageBtnClose: 'images/lightbox-btn-close.gif', // (string) Path and the name of the close btn<br />
<br />
imageBlank: 'images/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel)<br />
</source><br />
<br />
Esta seccion del codigo, es donde se le indica la ruta de las imagenes .Gif que adornan a la ventana de jQuery, esas rutas debemos cambiarlas por la ruta donde colocamos estos archivos .Gif ya mencionados previamente, quedando para el caso de esta practica de esta forma:<br />
<br />
<source lang=javascript><br />
// Configuration related to images<br />
<br />
imageLoading: '../public/img/galeria/marco_ventana/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon<br />
<br />
imageBtnPrev: '../public/img/galeria/marco_ventana/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image<br />
<br />
imageBtnNext: '../public/img/galeria/marco_ventana/lightbox-btn-next.gif', // (string) Path and the name of the next button image<br />
<br />
imageBtnClose: '../public/img/galeria/marco_ventana/lightbox-btn-close.gif', // (string) Path and the name of the close btn<br />
<br />
imageBlank: '../public/images/galeria/marco_ventana/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel)<br />
</source><br />
<br />
Eso es todo, carga la vista Index de esta app y deberia cargarse tu galeria de imagenes, selecciona alguna de ellas y veras la carga de las imagenes por medio de este plugin de jQuery llamado '''Lightbox'''.<br />
<br />
== Descarga esta Practica ==<br />
Descarga este ejemplo: [http://dl.dropbox.com/u/2807704/kumbiaPHP/v1_b1/app_galeria_img.zip app_galeria_img]<br />
<br />
Cualquier ayuda que necesites sobre esta practica de Galeria de Imagenes con jQuery, puedes pasar por el IRC de KumbiaPHP, el Foro o la Listmail, siempre hay personas dispuestas a ayudarte en lo que necesites.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:jQuery]] .</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Galeria_de_Imagenes_con_jQuery&diff=2677Galeria de Imagenes con jQuery2010-05-31T02:20:59Z<p>Fidelio: /* Descargamos jQuery Lightbox plugin */</p>
<hr />
<div>'''Esta practica esta basada en la version 1 Spirit beta1 de KumbiaPHP Framework.'''<br />
<br />
Esta es una practica donde tendremos varias miniaturas de imagenes a mostrar en la vista, al seleccionar alguna de las imagenes, se nos abrira una ventana en jquery que tomara el alto y ancho de la imagen original a la cual podremos colocarle una descripcion. Puedes pasar de una imagen a otra desde esta ventana de presentacion, la cual tambien indica al pie, X imagen de N cantidad en total de imagenes presentes.<br />
<br />
Esta es una practica muy sencilla, no incluye Modelos ni especificaciones en el Controller, esta basada unicamente en descargar el jQuery Lightbox y colocar sus archivos en sus correspondientes sitios en kumbiaPHP Framework. Luego el agregar algunas cosas en la plantilla e indicar la ruta de las imagenes en nuestra vista.<br />
<br />
== Descargamos jQuery Lightbox plugin ==<br />
<br />
[[Archivo:Show.jpg]]<br />
Descarga jQuery lightbox plugin de su Web [http://leandrovieira.com/projects/jquery/lightbox/ jQuery_Lightbox_plugin]<br />
<br />
Coloca el archivo '''jquery.lightbox-0.5.css''' en '''app/public/css/'''<br />
<br />
Para tener en orden los archivos y no mezclados con los del Framework, crea una carpeta "'''galeria'''" en '''app/public/javascript/galeria'''<br />
Coloca los archivos javascript que vienen con el plugin en '''app/public/javascript/galeria''' son 4 archivos.<br />
<br />
Busca varias imagenes, no importa su tamaño, las imagenes que dispongas a usar puedes reducir su tamaño desde tu editor de imagenes preferido.<br />
<br />
Las imagenes que tengas, guardalas en la carpeta de imagenes de kumbiaPHP, para tener un orden, si deseas, puedes crear una carpeta que las contenga y asi no mezclarlas con las imagenes default que vienen con el framework.<br />
<br />
Es decir, crea una carpeta llamada "galeria" en '''app/public/img/galeria''' y en ella coloca las imagenes que estaran en tu galeria de imagenes a mostrar.<br />
Dentro de esta carpeta tambien puedes crear otra llamada "miniaturas" quedando asi: '''app/public/img/galeria/miniaturas'''<br />
<br />
Crea tambien otra carpeta, la puedes llamar como gustes, para esta practica se llama "marco_ventana" quedando asi: '''app/public/img/galeria/marco_ventana'''.<br />
<br />
En la descarga de jQuery Lightbox<br />
<br />
La ventana jQuery que se despliega al seleccionar una imagen tiene sus iconos (que son realmente imagenes .Gif) son 5 archivos de imagen. Las imagenes que acompañan o adornas a esta ventana que despliega la imagen vienen en la carpeta '''images''', esas imagenes colocalas en la carpeta "'''marco_ventana'''" que ya debes tener en '''app/public/img/galeria/marco_ventana'''.<br />
<br />
== Agregamos algunas cosas en nuestra Plantilla/Template ==<br />
<br />
Usaremos el Template default de kumbiaphp para este ejemplo, entre lineas comentadas se indican los agregados que estan unicamente en los <head> </head> de la plantilla.<br />
<br />
<source lang=php line><br />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><br />
<html xmlns="http://www.w3.org/1999/xhtml"><br />
<head><br />
<meta http-equiv='Content-type' content='text/html; charset=<?php echo APP_CHARSET ?>' /><br />
<title>KumbiaPHP web &amp; app Framework</title><br />
<?php echo stylesheet_link_tag('bienvenida') ?><br />
<?php echo stylesheet_link_tag('style') ?><br />
<?php echo stylesheet_link_tag('exception') ?><br />
<?php<br />
// Los agregados a este app:<br />
echo stylesheet_link_tag('jquery.lightbox-0.5'); // CSS<br />
echo javascript_include_tag('galeria/jquery'); // JS<br />
echo javascript_include_tag('galeria/jquery.lightbox-0.5'); // JS<br />
?><br />
<?php echo stylesheet_link_tags(); ?><br />
<br />
<!-- Otro agregado de JS y CSS --><br />
<script type="text/javascript"><br />
$(function() {<br />
$('#galeria-imagenes a').lightBox();<br />
});<br />
</script><br />
<style type="text/css"><br />
/* jQuery lightBox plugin - galeria-imagenes style */<br />
#galeria-imagenes {<br />
background-color: #444;<br />
padding: 10px;<br />
width: 520px;<br />
}<br />
#galeria-imagenes ul { list-style: none; }<br />
#galeria-imagenes ul li { display: inline; }<br />
#galeria-imagenes ul img {<br />
border: 5px solid #3e3e3e;<br />
border-width: 5px 5px 20px;<br />
}<br />
#galeria-imagenes ul a:hover img {<br />
border: 5px solid #fff;<br />
border-width: 5px 5px 20px;<br />
color: #fff;<br />
}<br />
#galeria-imagenes ul a:hover { color: #fff; }<br />
</style><br />
<!-- Fin del agregado JS y CSS --><br />
</head><br />
<body><br />
<div id='content'><br />
<div id='head'><br />
<h1 id='logo'>KumbiaPHP</h1><div id='info-app'>web &amp; app Framework versión <?php echo Kumbia::KUMBIA_VERSION ?></div><br />
<br />
<div class='alignright'><br />
<p id='config'><br />
<span class='app'><?php echo APP ?></span> <br />
<?php echo link_to('status/', 'Config', 'title: Ver configuración de '.APP) ?><br />
</p><br />
</div><br />
</div><br />
<br />
<?php View::content(); ?><br />
<br />
<?php View::partial('kumbia/footer') ?><br />
</div><br />
</body><br />
</html><br />
</source><br />
<br />
Crearemos una vista Index para cargar la galeria de imagenes. En app/views/ crea la carpeta Index, quedando asi '''app/views/index/index.phtml'''<br />
<br />
Las imagenes descargadas para esta practica les fue cambiado el nombre, son 8 imagenes llamadas: img1.jpg, img2.jpg, img3.jpg .... img8.jpg<br />
<br />
Edita cada una de estas imagenes en tu editor de imagenes preferido y reducelas para crear una imagen en miniatura de cada una y guarda '''una copia''' para tener las imagenes en tamaño normal y en tamaño miniatura. Las miniaturas guardalas en '''app/public/img/galeria/miniaturas/'''<br />
<br />
La Vista:''' index.phtml''' la cual estara en '''app/views/index/index.phtml'''<br />
<br />
<source lang=php line><br />
<h2>Galeria de Imagenes</h2><br />
<p>Galeria de Imagenes con jQuery.</p><br />
<div id="galeria-imagenes"><br />
<ul><br />
<li><br />
<?php echo link_to('public/img/galeria/img1.jpg',img_tag('galeria/miniaturas/img1_mini.jpg','alt: imagen caverna'), 'title: Las cavernas son pasajes del planeta atrapados en el tiempo.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img2.jpg',img_tag('galeria/miniaturas/img2_mini.jpg','alt: imagen paisaje'), 'title: hermosos paisajes, perfecto para colocar como wallpaper.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img3.jpg',img_tag('galeria/miniaturas/img3_mini.jpg','alt: imagen oso polar'), 'title: el oso pedroso de polar luego de tomarse unas 12 cajas sale a refrescarse un poco por el calor.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img4.jpg',img_tag('galeria/miniaturas/img4_mini.jpg','alt: imagen rio 1'), 'title: rios donde puedes refrescarte con tu pareja "al desnudo".') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img5.jpg',img_tag('galeria/miniaturas/img5_mini.jpg','alt: imagen rio 2'), 'title: otra imagen aqui') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img6.jpg',img_tag('galeria/miniaturas/img6_mini.jpg','alt: imagen rio a lo lejos'), 'title: Hermoso paisaje de un lago de no se donde.') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img7.jpg',img_tag('galeria/miniaturas/img7_mini.jpg','alt: cataratas'), 'title: Interesante foto de unas Cascadas') ?><br />
</li><br />
<li><br />
<?php echo link_to('public/img/galeria/img8.jpg',img_tag('galeria/miniaturas/img8_mini.jpg','alt: hombre pescando'), 'title: Tranquilidad absoluta, buen dia para pezcar.') ?><br />
</li><br />
</ul><br />
</div><br />
</source><br />
<br />
Ahora solo falta editar uno de los archivos javascript de jQuery Lightbox plugin. Abre el archivo '''jquery.lightbox-05.js''' que esta en '''app/public/javascript/galeria/jquery.lightbox-05.js'''<br />
<br />
Hay una seccion que es:<br />
<source lang=javascript><br />
// Configuration related to images<br />
<br />
imageLoading: 'images/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon<br />
<br />
imageBtnPrev: 'images/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image<br />
<br />
imageBtnNext: 'images/lightbox-btn-next.gif', // (string) Path and the name of the next button image<br />
<br />
imageBtnClose: 'images/lightbox-btn-close.gif', // (string) Path and the name of the close btn<br />
<br />
imageBlank: 'images/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel)<br />
</source><br />
<br />
Esta seccion del codigo, es donde se le indica la ruta de las imagenes .Gif que adornan a la ventana de jQuery, esas rutas debemos cambiarlas por la ruta donde colocamos estos archivos .Gif ya mencionados previamente, quedando para el caso de esta practica de esta forma:<br />
<br />
<source lang=javascript><br />
// Configuration related to images<br />
<br />
imageLoading: '../public/img/galeria/marco_ventana/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon<br />
<br />
imageBtnPrev: '../public/img/galeria/marco_ventana/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image<br />
<br />
imageBtnNext: '../public/img/galeria/marco_ventana/lightbox-btn-next.gif', // (string) Path and the name of the next button image<br />
<br />
imageBtnClose: '../public/img/galeria/marco_ventana/lightbox-btn-close.gif', // (string) Path and the name of the close btn<br />
<br />
imageBlank: '../public/images/galeria/marco_ventana/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel)<br />
</source><br />
<br />
Eso es todo, carga la vista Index de esta app y deberia cargarse tu galeria de imagenes, selecciona alguna de ellas y veras la carga de las imagenes por medio de este plugin de jQuery llamado '''Lightbox'''.<br />
<br />
== Descarga esta Practica ==<br />
Descarga este ejemplo: [http://dl.dropbox.com/u/2807704/kumbiaPHP/v1_b1/app_galeria_img.zip app_galeria_img]<br />
<br />
Cualquier ayuda que necesites sobre esta practica de Galeria de Imagenes con jQuery, puedes pasar por el IRC de KumbiaPHP, el Foro o la Listmail, siempre hay personas dispuestas a ayudarte en lo que necesites.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:jQuery]] .</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Archivo:Show.jpg&diff=2676Archivo:Show.jpg2010-05-31T02:20:28Z<p>Fidelio: </p>
<hr />
<div></div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Helper_Tabs&diff=2660Helper Tabs2010-05-27T23:37:11Z<p>Fidelio: </p>
<hr />
<div>== Helper Tabs ==<br />
Este es un helper que permite agregar solapas en la vista principal de nuestro sitio web usando jquery-ui.<br />
El ejemlo que realizaremos es este: http://jqueryui.com/demos/tabs/ y trabaja con partiales.<br />
<br />
Primero debemos descargar el jquery-ui 1.8.1 http://jqueryui.com/download<br />
<br />
Una vez descargado, el directorio "development-bundle/ui/" lo copiamos dentro de public/javascript/jquery/ui. El directorio "development-bundle/themes" en public/css/themes.<br />
En el directorio js existen 2 archivos jquery-1.4.2.min.js y jquery-ui-1.8.1.custom.min.js, debemos copiarlos en el directorio public/javascript/jquery.<br />
<br />
=== Luego procedemos a editar el Template principal que usamos en la app para colocar el jquery ===<br />
Agregamos:<br />
<source lang="php"><br />
<?php echo javascript_include_tag('jquery/jquery-1.4.2.min') ?><br />
<?php echo javascript_include_tag('jquery/ui/ui.core'); ?><br />
<?php echo stylesheet_link_tag('themes/start/jquery.ui.all'); ?> /* podemos usar cualquier otro themes de los q hay en el directorio*/<br />
</source><br />
<br />
=== Creamos un archivo en el directorio: " extensions/helpers/ " llamado tabs.php ===<br />
<source lang="php"><br />
<?php<br />
class Tabs{<br />
/**<br />
*Tabs clasicas<br />
*/<br />
public static function open($data){<br />
static $sw = true;<br />
$code = '';<br />
if($sw){<br />
$code = self::js();<br />
$sw=false;<br />
}<br />
$code .= '<div class="demo">'.PHP_EOL;<br />
$code .= '<div id="tabs">'.PHP_EOL;<br />
$code .= '<ul>'.PHP_EOL;<br />
foreach($data as $key => $value){<br />
$code .= '<li><a href="#tabs-' . $key . '">' . $value['title'] . '</a></li>'.PHP_EOL;<br />
}<br />
$code .= '</ul>'.PHP_EOL;<br />
foreach($data as $key => $value){<br />
$code .= '<div id="tabs-' . $key . '">'.PHP_EOL;<br />
ob_start();<br />
View::partial($value['partial'], false, array('parameters' => $value['parameters']));<br />
$code .= ob_get_clean().PHP_EOL;<br />
$code .= '</div>'.PHP_EOL;<br />
}<br />
$code .= '</div>'.PHP_EOL;<br />
$code .= '</div>'.PHP_EOL;<br />
return $code;<br />
}<br />
private static function js(){<br />
$code = '';<br />
//$code = javascript_include_tag('jquery/ui/ui.core');<br />
$code .= javascript_include_tag('jquery/ui/jquery.ui.widget');<br />
$code .= javascript_include_tag('jquery/ui/jquery.ui.tabs');<br />
$code .= '<script type="text/javascript">'.PHP_EOL;<br />
$code .= '$(function() {'.PHP_EOL;<br />
$code .= '$("#tabs").tabs();'.PHP_EOL;<br />
$code .= '});'.PHP_EOL;<br />
$code .= '</script>'.PHP_EOL;<br />
return $code;<br />
} <br />
}<br />
?><br />
</source><br />
<br />
=== Creamos dos partials: ===<br />
<br />
hola.phtml<br />
<source lang="php"><br />
<?php echo $parameters['valor']; ?><br />
</source><br />
<br />
chao.phtml<br />
<source lang="php"><br />
<?php echo $parameters['valor']; ?><br />
/* $parameters tiene todas las variables o modelos que queremos enviar al partial */<br />
</source><br />
<br />
=== Creamos la vista ===<br />
views/ejemplo<br />
<source lang="php"><br />
<?php<br />
View::helpers('tabs'); /* incluimos el helper*/<br />
$tabs[] = array('title' => 'HOLA', 'partial' => 'hola',<br />
'parameters' => array(<br />
'valor' => 'Hola Mundo'<br />
));<br />
<br />
$tabs[] = array('title' => 'CHAO', 'partial' => 'chao',<br />
'parameters' => array(<br />
'valor' => 'Chao Mundo'<br />
));<br />
<br />
echo Tabs::open($tabs); /* creamos los tabs, tabs es un array, <br />
que contiene un titulo, un partial, y <br />
los parametros a enviar a ese partial */<br />
?><br />
</source><br />
Probamos el programa ejecutándolo desde ejemplo.<br />
<br />
===Screenshots===<br />
[[Archivo:Tabs.png]]<br />
<br />
[[Categoría:Helpers]] <br />
[[Categoría:Tutoriales KumbiaPHP]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Archivo:Tabs.png&diff=2659Archivo:Tabs.png2010-05-27T23:36:07Z<p>Fidelio: </p>
<hr />
<div></div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Webs_Con_KumbiaPHP_Framework&diff=2520Webs Con KumbiaPHP Framework2010-03-28T05:38:43Z<p>Fidelio: </p>
<hr />
<div>Enlaces de Páginas y/o Aplicaciones desarrolladas en KumbiaPHP Framework.<br />
<br />
#[http://www.nutrar.com Nutrar Prevención y Salud Plena]<br />
#[http://www.orquestaanagrama.es Orquesta Anagrama]<br />
#[http://fermontours.com/ Voyages Fermontours]<br />
#[http://azimutvoyages.com/ Azimut Voyages]<br />
#[http://www.waterloo2012.be/ Waterloo 2012]<br />
#[http://www.catgenie.es/ CatGenie]<br />
#[http://wizma.demon69.eu/ Wizma's Blog]<br />
#[http://www.alcopa.es/ ALCOPA S.L]<br />
#[http://www.amkpeople.com/web/ amkpeople]<br />
#[http://orinocowest.net/OrinocoWest OrinocoWest]<br />
#[http://www.amecasoft.com.mx/web/ Amecasoft]<br />
#[http://www.nextcontact.cc/ Next Contact]<br />
#[http://www.tractopartesvilchis.com/ Tractopartes Vilchis]<br />
#[http://www.nathanbabyinspiration.com Nathan Baby Inspiration]<br />
#[http://www.elgatodelatazadete.com/contenido Deborah Goya Blog]<br />
#[http://www.alfher.com/home/home_esp ..::Alfher::..]<br />
#[http://www.copasapobla.com/ Torneo Escuela de Fútbol base Copa Sa Pobla]<br />
#[http://planificacion.unefm.edu.ve/ Dirección de Planificación, Desarrollo y Evaluación Universitaria Universidad Nacional Experimental "Francisco de Miranda"]<br />
#[http://www.bonpasrural.com/ Turisme rural]<br />
#[http://www.musicalbareda.com/ Instrumentos Musicales Albareda]<br />
#[http://www.orospeda.es/majwq Webquest Creator]<br />
#[http://www.scaxsolution.tk SCAX Solution]<br />
#[http://www.citame.com.ve/ Citame]<br />
#[http://www.comunicacionweb.com.mx/ ...:::COMUNICACION WEB:::...]<br />
#[http://www.hostteen.com/ Hostteen project]<br />
#[http://www.redpassport.com.mx redPassport :::::Home:::::]<br />
#[http://www.chattagena.com/ Chattagena.com - Apoyando el talento cartagenero]<br />
#[http://www.tiendamaps.com/kumbia/ Tiendamaps - Un servicio para las MiPyMES Colombianas]<br />
#[http://www.quinielitas.com/ www.quinielitas.com !Vive el futbol, Sueña futbol y Gana con el futbol¡]<br />
#[http://www.seguicapacitandote.com/ Sigue Capacitandote]<br />
#[http://www.proceso.com.mx/ Proceso - 2010]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=Listas_simples_enlazadas_jquery&diff=2514Listas simples enlazadas jquery2010-03-22T21:20:29Z<p>Fidelio: /* Ejemplo */</p>
<hr />
<div>== Listas Enlazadas de tres niveles ==<br />
Para nuestro ejemplos vamos a utilizar listas simples [http://es.wikipedia.org/wiki/Lista_(inform%C3%A1tica)#Listas_simples_enlazadas] con 3 niveles, Regiones, Comunas y Ciudades.<br />
<br />
=== Requerimientos ===<br />
<br />
* Cambiar autocarga de los modelos<br />
<br />
Editamos el archivo config.ini y modificamos '''models_autoload = On''' por '''models_autoload = Off'''<br />
<br />
* incluir libreria jquery<br />
<br />
Editamos el template activo y adicionamos esta linea <br />
<br />
<source lang=php><br />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script><br />
</source><br />
<br />
=== Tablas ===<br />
<br />
<source lang=mysql><br />
#<br />
# Table structure for table 'regiones'<br />
#<br />
# DROP TABLE IF EXISTS regiones;<br />
CREATE TABLE `regiones` (<br />
`id` int(4) NOT NULL auto_increment,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;<br />
<br />
#<br />
# Dumping data for table 'regiones'<br />
#<br />
<br />
INSERT INTO regiones VALUES (1,'Primera Region');<br />
INSERT INTO regiones VALUES (3,'Tercera Region');<br />
INSERT INTO regiones VALUES (2,'Segunda Region');<br />
<br />
#<br />
# Table structure for table 'comunas'<br />
#<br />
<br />
# DROP TABLE IF EXISTS comunas;<br />
CREATE TABLE `comunas` (<br />
`id` int(4) NOT NULL auto_increment,<br />
`regiones_id` int(4) NOT NULL,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;<br />
<br />
#<br />
# Dumping data for table 'comunas'<br />
#<br />
<br />
INSERT INTO comunas VALUES (4,3,'Primera Comuna');<br />
INSERT INTO comunas VALUES (3,2,'Primera Comuna');<br />
INSERT INTO comunas VALUES (2,1,'Segunda Comuna');<br />
INSERT INTO comunas VALUES (1,1,'Primera Comuna');<br />
<br />
#<br />
# Table structure for table 'ciudades'<br />
#<br />
<br />
# DROP TABLE IF EXISTS ciudades;<br />
CREATE TABLE `ciudades` (<br />
`id` int(4) NOT NULL auto_increment,<br />
`comunas_id` int(4) NOT NULL,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;<br />
<br />
#<br />
# Dumping data for table 'ciudades'<br />
#<br />
<br />
INSERT INTO ciudades VALUES (6,3,'Tercera Ciudad');<br />
INSERT INTO ciudades VALUES (5,3,'Segunda Ciudad');<br />
INSERT INTO ciudades VALUES (4,3,'Primera Ciudad');<br />
INSERT INTO ciudades VALUES (3,2,'Segunda Ciudad');<br />
INSERT INTO ciudades VALUES (2,2,'Primera Ciudad');<br />
INSERT INTO ciudades VALUES (1,1,'Primera Ciudad');<br />
</source><br />
<br />
=== Ejemplo ===<br />
<br />
* clientes_controller.php<br />
Vamos a trabajar con un controller llamado clientes, acá solo mostrareos los 3 niveles de las listas, nada más, es decir, no vamos a trabajar con el modelo clientes ya que puede ser 'usuarios, proveedores, provesionales, auxiliares, pacientes, etc..', la base siempre es la misma<br />
<br />
<br />
<source lang=php><br />
<?php<br />
Load::model('regiones');<br />
Load::model('comunas');<br />
Load::model('ciudades');<br />
class ClientesController extends ApplicationController{<br />
public function index() {<br />
<br />
}<br />
public function create(){<br />
$regiones = new Regiones();<br />
$this->regiones = $regiones->buscar();<br />
if($this->has_post('clientes')){<br />
//SUBMIT<br />
}<br />
}<br />
public function getComunas(){<br />
$this->set_response('view');<br />
$comunas = new Comunas();<br />
$this->comunas = $comunas->buscar($this->post('regiones_id'));<br />
}<br />
<br />
public function getCiudades(){<br />
$this->set_response('view');<br />
$ciudades = new Ciudades();<br />
$this->ciudades = $ciudades->buscar($this->post('comunas_id'));<br />
}<br />
}<br />
?><br />
</source><br />
<br />
* Modelo Regiones<br />
<br />
<source lang=php><br />
<?php <br />
class Regiones extends ActiveRecord{<br />
public function buscar(){<br />
return $this->find('order: nombre');<br />
}<br />
}<br />
?><br />
</source><br />
<br />
* Modelo Comunas<br />
<br />
<source lang=php><br />
<?php <br />
class Comunas extends ActiveRecord{<br />
public function buscar($regiones_id){<br />
return $this->find("regiones_id = $regiones_id", 'order: nombre');<br />
}<br />
}<br />
?><br />
</source><br />
<br />
* Modelo Ciudades<br />
<br />
<source lang=php><br />
<?php <br />
class Ciudades extends ActiveRecord{<br />
public function buscar($comunas_id){<br />
return $this->find("comunas_id = $comunas_id", 'order: nombre');<br />
}<br />
}<br />
?><br />
</source><br />
<br />
* Vista create.phtml<br />
<br />
<source lang=php><br />
<br />
<?php View::content(); ?><br />
<?php echo form_tag("$controller_name/$action_name"); ?><br />
<table id='table_forms'><br />
<tr><br />
<th>Región</th><br />
<td><br />
<?php<br />
echo select_tag(array('clientes.regiones_id', $regiones, 'option' => 'nombre', 'include_blank' => 'Seleccione...'));<br />
?><br />
</td><br />
</tr><br />
<tr><br />
<th>Comuna</th><br />
<td><div id='div_comunas'></div><td><br />
</tr><br />
<tr><br />
<th>Ciudad</th><br />
<td><div id='div_ciudades'></div></td><br />
</tr> <br />
<tr><br />
<td colspan="2" align="center"><?php echo submit_tag('Agregar')?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag(); ?><br />
<br />
<br />
<script type='text/javascript'><br />
$("#clientes_regiones_id").change(function(){<br />
var regiones_id = $('#clientes_regiones_id').value();<br />
$.ajax({<br />
type: "POST",<br />
url: "<?php echo PUBLIC_PATH . 'regiones/getComunas/'; ?>",<br />
data: "regiones_id=" + regiones_id,<br />
success: function(html){<br />
$("#div_comunas").html(html);<br />
}<br />
});<br />
});<br />
</script><br />
</source><br />
<br />
<br />
* Vista getComunas.phtml<br />
<br />
<source lang=php><br />
<?php<br />
echo select_tag(array("clientes.comunas_id", $comunas, 'option' => 'nombre', 'include_blank'=> 'Seleccione...'));<br />
?> <br />
<br />
<script type='text/javascript'><br />
$("#clientes_comunas_id").change(function(){<br />
var comunas_id = $('#clientes_comunas_id').value();<br />
$.ajax({<br />
type: "POST",<br />
url: "<?php echo PUBLIC_PATH . 'regiones/getCiudades/'; ?>",<br />
data: "comunas_id=" + comunas_id,<br />
success: function(html){<br />
$("#div_ciudades").html(html);<br />
}<br />
});<br />
});<br />
</script><br />
</source><br />
<br />
* Vista getCiudades.phtml<br />
<br />
<source lang=php><br />
<?php<br />
echo select_tag(array('clientes.ciudades_id', $ciudades, 'option'=> 'nombre', 'include_blank'=>'Seleccione...'));<br />
?><br />
</source><br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:jQuery]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=JQuery_en_Kumbiaphp_Spirit_beta2_liveSearch&diff=2489JQuery en Kumbiaphp Spirit beta2 liveSearch2010-03-13T18:00:36Z<p>Fidelio: Página creada con ''''Como se utiliza ''' <source lang="php"> <?php echo liveSearch::typeSelect($field, $data, $show, $attrs = NULL, $value = NULL); ?> </source> <source lang="php"> <?php echo l...'</p>
<hr />
<div>'''Como se utiliza '''<br />
<br />
<source lang="php"><br />
<?php<br />
echo liveSearch::typeSelect($field, $data, $show, $attrs = NULL, $value = NULL);<br />
?><br />
</source><br />
<br />
<source lang="php"><br />
<?php<br />
echo liveSearch::typeText($field, $data, $show, $attrs = NULL, $value = NULL);<br />
?><br />
</source><br />
<br />
'''$field''' es el nombre del campo<br />
'''$data''' es el modelo que se desea cargar<br />
'''$show''' campo para ser visualizado<br />
'''$attrs''' datos opcionales tales como: "size='10' maxlength='100'", etc...<br />
'''$value''' valor por defecto a mostrar "opcional"<br />
<br />
<br />
<br />
<br />
<br />
'''Helper'''<br />
extensions/helpers/live_search.php<br />
<br />
<source lang='php'><br />
<?php<br />
class liveSearch{<br />
/**<br />
* Live search cargado de un modelo<br />
*/<br />
public static function typeSelect($field, $data, $show, $attrs = NULL, $value = NULL){<br />
return self::base($field, $data, $show, $attrs, $value, 'true');<br />
}<br />
public static function typeText($field, $data, $show, $attrs = NULL, $value = NULL){<br />
return self::base($field, $data, $show, $attrs, $value, 'false');<br />
}<br />
private static function base($field, $data, $show, $attrs, $value, $bool){<br />
static $i = false;<br />
static $cont=0;<br />
$cont++; <br />
if($i == false){<br />
$i = true;<br />
$code = Tag::css("jquery.autocomplete");<br />
$code .= Tag::js('jquery/jquery.autocomplete');<br />
}<br />
if(is_array($attrs)) {<br />
$attrs = Tag::getAttrs($attrs);<br />
}<br />
// si no se especificó el valor explicitamente<br />
<br />
$name = self::getName($field);<br />
$field = self::getId($field);<br />
<br />
$code .= "<input id=\"$field\" name=\"$name\" type=\"text\" value=\"$value\" $attrs/>";<br />
$datos = '';<br />
foreach($data as $p) {<br />
$datos .= '"' . $p->$show . '", ';<br />
}<br />
$datos = substr ($datos, 0, -2);<br />
$code .= "<script type=\"text/javascript\"><br />
var array_data_" . $cont . "= [ " . $datos . " ]<br />
$().ready(function() {<br />
$(\"#" . $field . "\").autocomplete(array_data_" . $cont . ", {<br />
minChars: 0,<br />
max: 12,<br />
autoFill: true,<br />
mustMatch: $bool,<br />
matchContains: true,<br />
scrollHeight: 220,<br />
formatItem: function(data, i, total) {<br />
return data[0];<br />
}<br />
});<br />
<br />
});<br />
</script>";<br />
return $code;<br />
}<br />
private static function getName($field){<br />
$array_data = explode('.', $field);<br />
if(count($array_data[1])==1){<br />
return $array_data[0] . '[' . $array_data[1] . ']';<br />
}<br />
return $field;<br />
}<br />
private static function getId($field){<br />
$array_data = explode('.', $field);<br />
if(count($array_data[1])==1){<br />
return $array_data[0] . '_' . $array_data[1];<br />
}<br />
return $field;<br />
} <br />
}<br />
?><br />
</source><br />
<br />
<br />
Jquery [http://plugins.jquery.com/files/issues/jquery.autocomplete.js__5.txt | jquery.autocomplete]<br />
<br />
CSS [http://code.google.com/p/allforgood/source/browse/trunk/frontend/css/jquery.autocomplete.css?r=2 | jquery.autocomplete]<br />
<br />
<br />
<br />
Recuerden que deben tener habilitado en su proyecto el Jquery<br />
<br />
[[Categoría:Helpers]]<br />
[[Categoría:Tutoriales KumbiaPHP Beta2]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=JQuery_UI_en_Kumbiaphp_Spirit_beta2_calendar&diff=2485JQuery UI en Kumbiaphp Spirit beta2 calendar2010-03-12T02:20:48Z<p>Fidelio: Página creada con 'Vamos a crear un helper 'Calendar' que se pueda utilizar en cualquier vista de nuestra aplicación. [http://jqueryui.com/demos/datepicker/ ejemplo] Vamos a empezar a ver como s...'</p>
<hr />
<div>Vamos a crear un helper 'Calendar' que se pueda utilizar en cualquier vista de nuestra aplicación. [http://jqueryui.com/demos/datepicker/ ejemplo]<br />
<br />
Vamos a empezar a ver como se utiliza.<br />
<br />
1° en la vista solo llamamos el helpers y se utiliza de esta forma.<br />
<br />
<source lang="php"><br />
<?php<br />
View::helpers('calendar');<br />
echo Calendar::text('fecha');<br />
?><br />
</source><br />
<br />
<br />
ahora como ven es sumamente sencillo de utilizarlo, ahora empezamos a la construcción del helpers.<br />
<br />
descargamos el [http://jqueryui.com/download jquery-ui-1.7.2.custom.zip]<br />
descomprimimos y copiamos los siguientes archivos.<br />
creamos la carpeta jquery en css y javascript<br />
<br />
<br />
'''development-bundle/themes -> app/public/css/jquery/'''<br />
<br />
'''development-bundle/ui -> app/public/javascript/jquery/'''<br />
<br />
<br />
<br />
Helper.<br />
<br />
Creamos el archivo en: app/extensions/helpers/calendar.php<br />
<source lang="php"><br />
<?php <br />
class Calendar{ <br />
public static function text($field, $attrs = NULL, $value = NULL){ <br />
static $i = false; <br />
$code = ''; <br />
if($i == false){ <br />
$i = true; <br />
$code = Tag::css('jquery/themes/ui-lightness/ui.all'); <br />
$code .= Tag::js('jquery/ui/ui.core'); <br />
$code .= Tag::js('jquery/ui/ui.datepicker');<br />
} <br />
$code .= Form::text($field, $attrs, $value); <br />
$field = str_replace('.', '_', $field); <br />
$code .= "<script type=\"text/javascript\"> <br />
$(function() { <br />
$(\"#" . $field . "\").datepicker({ <br />
altFormat: 'd/m/yy', <br />
autoSize: true, <br />
dayNames: ['Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sábado'], <br />
dayNamesMin: ['Dom', 'Lu', 'Ma', 'Mi', 'Je', 'Vi', 'Sa'], <br />
firstDay: 1, <br />
monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], <br />
monthNamesShort: ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], <br />
dateFormat: 'dd/mm/yy', <br />
changeMonth: true, <br />
changeYear: true}); <br />
}); <br />
</script>"; <br />
return $code; <br />
} <br />
} <br />
?> <br />
</source><br />
<br />
<br />
<br />
no olvidar que deben tener habilitado en su proyecto el Jquery<br />
<br />
[[Categoría:Helpers]]<br />
[[Categoría:Tutoriales KumbiaPHP Beta2]]</div>Fideliohttps://wiki.kumbiaphp.com/index.php?title=JQuery_UI_en_Kumbiaphp_Spirit_beta2&diff=2484JQuery UI en Kumbiaphp Spirit beta22010-03-12T02:19:38Z<p>Fidelio: Blanqueada la página</p>
<hr />
<div></div>Fidelio