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: 15 años, 8 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( $$valor0strlen( $$valor )-);
            
$this->arrayCampos$key ] =  $$valor;
            $
$valor '';
            
mysql_data_seek($consulta0);
                
        }
        
        
    }
    
/**
     * 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] .= $filas$n ] . ',';             
        }
        
//Se elimina la ultima coma (  ,  )
        
$nuevoEnlace substr$nuevoEnlace], 0strlen$nuevoEnlace] )-);
        
        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;     
          
        
     }