Aqui podemos ver el codigo.....
Código PHP:
<?php
/**
*
* Aco_dataGrid - Version 1.0 BETA
* http://www.forosdelweb.com/miembros/acoevil/
* sebastian80_23 arroba hotmail.com
*
*
*¿ Que es un data grid ?
*
*Un data grid, que viene a significar en castellano rejilla de datos, es una interfaz de usuario bastante típica,** *que sirve para visualizar información en una tabla. La información suele ser un conjunto de registros, y se suelen *mostrar cada uno de ellos en una fila. Además, los data grid suelen tener integradas funcionalidades para la *ordenación de los datos y opciones para su edición o borrado entre muchas mas.
*
*
*
* */
class Aco_DataGrid
{
//Singleton
/**
*Instancia de la clase
*@var object Instancia de la clase
* @access private
*/
private static $instancia;
/**
*Sql del usuario
*@var String Sql del usuario
*@access private
*/
private $sql;
/**
*Campos que seran seleccionados de ( $sql )
*@var array con los campos que seran seleccionados
*@access private
*/
private $campos=array();
/**
* Conexion a la db
*@var Conexion de la db
*@access private
*/
private $conexion;
/**
* Un array asociativo que contiene informacion de los campos de la db
*@var array
*@access private
*/
private $arrayCampos = array();
// Las sgtes son atributos del grid
private $cellpadding = 0;
private $cellspacing = 0;
private $width = 0;
private $height = 0;
private $bgColor = array('#FFFFFF');
private $bgColorTh = '#FFFFFF';
private $bgColorTabla = '#FFFFFF';
private $border = 0;
private $borderColor = '#FFFFFF';
private $background = '';
private $align = 'center';
/**
*Las sgtes controlan las filas agregadas por encima y debajo del grid
*/
private $contenidoF;
private $alignF;
private $colspanF;
private $rem_columna = array();
private function __construct()
{
}
//Singleton
/**
*@copyright Acoevil.
*/
public static function instancia()
{
if ( ! isset(self::$instancia) ) {
$nombreClase = __CLASS__;
self::$instancia = new $nombreClase;
}
return self::$instancia;
}
//Singleton
public function __clone()
{
trigger_error("No se permite clonar", E_USER_ERROR);
}
/**
* Permite indicar los campos que seran procesados de la consulta ( $sql )
*
* @param String $sql Consulta Sql indicada
* @param Recurso de la conexion de la base de datos
* @param array Array asociativo que indica el titulo de la fila y el nombre del campo de la base de datos */
public function confCampos( $sql, $conexion, $campos )
{
$this->sql = $sql; $this->conexion = $conexion; $this->campos = $campos;
$consulta = mysql_query( $this->sql, $this->conexion ) or die ( mysql_error() );
foreach ( $campos as $key => $valor ) {
while ( $fila = mysql_fetch_assoc($consulta) ) {
$$valor .= $fila[ $valor ] . ',';
}
//Se elimina la ultima coma ( , )
$$valor = substr( $$valor, 0, strlen( $$valor )-1 );
$this->arrayCampos[ $key ] = $$valor;
$$valor = '';
mysql_data_seek($consulta, 0);
}
}
/**
* Permite organizar el valor de los arrays quitando la coma ( , ) que diferencia cada campo de la db
*
*@return array Retorna un array con cada uno de los valores del campo
*@param array Un array asociativo que contiene el ( nombre del campo ) y el ( valor )
*/
private function _explodeC( $array )
{
return explode(',', $array);
}
private function _explorador( $ruta= '', $camposEscogido = '' )
{
//Se quitan las comas ( , )
$filas = $this->_explodeC( $this->arrayCampos[ $camposEscogido ] );
$nombreEnlace = $filas;
$nuevoEnlace = array();
for( $n=0; $n < count( $filas ); $n++ ) {
// Primero se reemplazan todas las apariciones de ( {...} ) por el valor correspondiente del array
//Ejem: <a href="index.php?id={}">()</a> -> Como resultado <a href="index.php?id=1">()</a>
//Dependiendo del valor que se encuentre en el array
$filas[ $n ] = preg_replace( '/\{.*?\}/', urlencode( $filas[ $n ] ), $ruta );
// Despues se reemplazan todas las apareiciones de ( [...] ) por el valor correspondiente del array
$filas[ $n ] = preg_replace( '/\(.*?\)/', $nombreEnlace[ $n ] , $filas [ $n ] );
//Se generan nuevamente las comas ( , )
$nuevoEnlace[ 0 ] .= $filas[ $n ] . ',';
}
//Se elimina la ultima coma ( , )
$nuevoEnlace = substr( $nuevoEnlace[ 0 ], 0, strlen( $nuevoEnlace[ 0 ] )-1 );
return $nuevoEnlace;
}
/**
*
*@return array Retorna un array con las comas ( , )
*@param String Q indica que indice del array tiene que utilizar.
*/
public function add_InfoAcampo( $contenido = '', $camposEscogido = '')
{
$nuevoElemento = $this->_explorador( $contenido, $camposEscogido );
$this->arrayCampos[ $camposEscogido ] = $nuevoElemento;
}
/**
*Permite añadir una nueva columna antes de una columna especificada
*
* @param String contenido Indica el tipo de contenido que se quiere agregar
* @param String campoEscogido indica el campo desde donde se obtiene el contenido
* @param String antesDe indica en donde sera la ubicacion del nuevo contenido en el grid
*/
public function add_ColumnaAntesDe( $contenido, $campoEscogido, $antesDe, $titulo )
{
$nuevoElemento = $this->_explorador( $contenido, $campoEscogido );
$nuevoCampo = array();
foreach( $this->arrayCampos as $key => $valor ) {
if( $antesDe == $key ) {
$nuevoCampo[ $titulo ] = $nuevoElemento;
each( $nuevoCampo );
}
$nuevoCampo[ $key ] = $valor;
}
$this->arrayCampos = $nuevoCampo;
}
/**
*Permite añadir una nueva columna despues de una columna especificada
*
* @param String contenido Indica el tipo de contenido que se quiere agregar
* @param String campoEscogido indica el campo desde donde se obtiene el contenido
* @param String despuesDe indica en donde sera la ubicacion del nuevo contenido en el grid
*/
public function add_ColumnaDespuesDe( $contenido, $campoEscogido, $despuesDe, $titulo )
{
$nuevoElemento = $this->_explorador( $contenido, $campoEscogido );
$nuevoCampo = array();
foreach( $this->arrayCampos as $key => $valor ) {
$nuevoCampo[ $key ] = $valor;
if( $despuesDe == $key ) {
$nuevoCampo[ $titulo ] = $nuevoElemento;
}
}
$this->arrayCampos = $nuevoCampo;
}
/**
*Permite crear una fila por encima del grid, se puede utilizar para darle una descripcion al grid
* @param String contenido, indica el contenido que se visualizara en la nueva fila
* @param String align, indica la posicion del contenido, ( por defecto se ubica en el centro )
* @param String colspan, indica la cantidad de columnas que abarcara la nueva fila, ( por defecto son todas )
*/
public function add_FilaArriba( $contenidoF, $alignF = 'center', $colspanF = null )
{
$this->contenidoF = $contenidoF;
$this->alignF = $alignF;
$this->colspanF = ( $colspanF==null ? count( $this->arrayCampos ) : $colspanF );
return $this;
}