Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/07/2009, 23:37
Avatar de acoevil
acoevil
 
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 18 años, 3 meses
Puntos: 32
Respuesta: clase- Data Grid

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;     
          
        
     }