Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Clase para una tabla, sugerencias

Estas en el tema de Clase para una tabla, sugerencias en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Pues paso de pensar y pensar, y aun estoy indeciso (aunque actualmente estoy usando una clase similar en muchas aplicaciones, pero mas rustica aun, hecha ...
  #1 (permalink)  
Antiguo 23/07/2009, 19:12
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 16 años, 2 meses
Puntos: 7
Clase para una tabla, sugerencias

Pues paso de pensar y pensar, y aun estoy indeciso (aunque actualmente estoy usando una clase similar en muchas aplicaciones, pero mas rustica aun, hecha por mi tmb xD), tome en cuenta cosas como usar plantillas pero quedo descartable, es practicamente = que esta clase pero mas sencillo el manejo, aqui pego la clase.

Código PHP:
<?php
class GnTabla {
    
    function 
__construct($class) {
        
$new_class = ($class != '') ? " class=\"$class\"" '';
        echo 
"<table$new_class>\n";
    }
    
    function 
Head($cont) {
        echo 
"    <thead>\n    <tr>\n";
        foreach (
$cont as $tmp) {
            echo 
"        <th>$tmp</th>\n";
        }
        echo 
"    </tr>\n    </thead>\n";
    }
    
    function 
caption($caption) {
        echo 
"    <caption>$caption</caption>\n";
    }
    
    function 
Col($col) { //formato de variable array( propiedad => array( valores))
        
foreach($col as $clave => $valor) {
            
$n 0;
            foreach(
$valor as $tmp) {
                
$fila_col[$n++] .= " $clave=\"$tmp\"";
            }
        }
        
        for(
$i 0$i<count($fila_col); $i++) {
            echo 
"    <col$fila_col[$i]>\n";
        }
    }
    
    function 
Body($cont$class$style) {
        
$newclass = ($class!='') ? " class=\"$class\"" '';
        
$newstyle = ($style!='') ? " style=\"$style\"" '';
        echo 
"    <tr$newclass$newstyle>\n";
        foreach(
$cont as $tmp) {
            echo 
"        <td>$tmp</td>\n";
        }
        echo 
"    </tr>\n";
    }
    
    function 
FinTabla() {
        echo 
"</table>\n";
    }
}
?>
<?xml version
="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
<head>
</head>
<body>
<?php

$valores 
= array('primera columna''segunda columna''tercera columna''cuarta columna');

$p = @new GnTabla();
$p->caption('sangre morena');
$p->Head(array('pelo''corra''cachucha''pelo'));
$p->Col(array(
    
'align' => array( 'left','right''center'),
    
'style' => array('','','')));

$filas = array( 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30);

while(
$datos each($filas)) {
    @
$p->Body(array(
        
$valores[0],
        
$valores[1],
        
$valores[2],
        
$valores[3]));
}
$p->FinTabla();
?>
</body>
</html>
totalmente reutilizable y desechable xD, el chiste para que puse el post es para que me den sugerencias o alguien conoce un metodo mas sencillo, me decante por este metodo porque en la tabla aparte de dinamica tmb tiene links dinamicos que pueden referir a diferentes paginas en una misma columna
  #2 (permalink)  
Antiguo 23/07/2009, 19:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 7 meses
Puntos: 2135
Respuesta: Clase para una tabla, sugerencias

Tema trasladado desde PHP General.
  #3 (permalink)  
Antiguo 24/07/2009, 05:58
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Clase para una tabla, sugerencias

yo en las clases uso las funciones get y set para recoger valores o devolverlos y luego otra funciones que son las consultas. de tal manera que dejo las consultas en cada clase y en un fichero difetente, evitando mezclar html o php con la clase.

saludos.
  #4 (permalink)  
Antiguo 24/07/2009, 08:45
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: Clase para una tabla, sugerencias

no te entendí a que te refieres con dejar las consultas en cada clase y en un fichero diferente, no se si puedes tomarte la molestia de explicar un poco mas tu método por favor
  #5 (permalink)  
Antiguo 27/07/2009, 18:58
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: Clase para una tabla, sugerencias

parece que este solo vino a presumir, aca tengo una mas avanzada a ver que opinan:
al estilo de una BD

Código PHP:
<?php
class GnTabla extends MySQL {
    private 
$col = array();
    public 
$auto_increment 1//valor por default
    
public $col_sum = array();
    public 
$class_status 'on'//valor por default
    
public $class_func;
    
    function 
__construct($class) {
        
$new_class = ($class != '') ? " class=\"$class\"" '';
        echo 
"<table$new_class>\n";
    }
    
    public function 
Type($Type) { //difined type
        
foreach($Type as $key => $value) {
            
$this->col[$key]['Type'] = $value;
        }
    }
    
    public function 
Name($Name) { //defined value
        
foreach($Name as $key => $value) {
            
$this->col[$key]['Name'] = $value;
        }
    }
    
    private function 
PutOrderCol() {
        
ksort($this->col); //put in order the array
    
}
    
    public function 
TQuery($query) {
        
parent::__construct();
        
parent::Query($query);
        @
parent::error();
    }
    
    public function 
Display() {
        
$this->PutOrderCol();
        echo 
"    <tbody>\n";
        while(
$datos parent::fetch_assoc()) {
            if(
$this->class_status != 'off') {
                
$class ' class="'//start
                
if(empty($this->class_func)) {
                    
$class .= $class_name = ($class_name == 'even') ? 'odd' 'even';//even and odd have to be style defined
                
} else {
                    foreach(
$this->class_func['P'] as $col_name) {
                        
$c_parameter[] = $datos[$col_name];
                    }
                    
$class .= $class_name call_user_func_array($this->class_func['N'], $c_parameter);
                }
                
$class .= '"';
            }
            echo 
"    <tr$class>\n";
            foreach(
$this->col as $COL) {
                echo 
'        <td>';
                if(!
is_array($COL['Name'])) {
                    if(
$COL['Type'] == 'Text' or empty($COL['Type'])) {
                        echo 
$datos[$COL['Name']];
                    } elseif(
$COL['Type'] == 'Number') {
                        
$this->col_sum[$COL['Name']] += $datos[$COL['Name']];
                        echo 
$this->FormatearNumero($datos[$COL['Name']]);
                    } elseif(
$COL['Type'] == 'auto_inc') {
                        echo 
$this->auto_increment++;
                    }
                } else {
                    foreach(
$COL['Name'] as $f_name => $f_parameters) {
                        foreach(
$f_parameters as $col_name) {
                            
$parameters[] = $datos[$col_name];
                        }
                        
call_user_func_array($f_name$parameters);
                    }
                }
                echo 
"</td>\n";
            }
            echo 
"    </tr>\n";
        }
        echo 
"    </tbody>\n";
    }
    
    public function 
Head($cont) {
        echo 
"    <thead>\n    <tr>\n";
        foreach (
$cont as $tmp) {
            echo 
"        <th>$tmp</th>\n";
        }
        echo 
"    </tr>\n    </thead>\n";
    }
    
    public function 
caption($caption) {
        echo 
"    <caption>$caption</caption>\n";
    }
    
    public function 
Col($col) { //formato de variable array( propiedad => array( valores))
        
foreach($col as $clave => $valor) {
            
$n 0;
            foreach(
$valor as $tmp) {
                
$fila_col[$n++] .= " $clave=\"$tmp\"";
            }
        }
        for(
$i 0$i<count($fila_col); $i++) {
            echo 
"    <col$fila_col[$i]>\n";
        }
    }
    
    function 
FinTabla() {
        echo 
"</table>\n";
    }
    
    private function 
FormatearNumero($numero) {
        return 
number_format($numero2'.'',');
    }
}

class 
MySQL {
    private 
$conexion;
    private 
$consulta;
    private 
$error_mysql;
    
    function 
__construct() {
        
        
$this->conexion mysql_pconnect('localhost''root''7135052367' );
        if(!
$this->conexion) {
            
$this->error_mysql 'Error en la conexion';
        }
        
mysql_select_db'administracion'$this->conexion) or die ('No se pudo seleccionar la base de datos');
    }
    
    function 
Query($Query) {
        
        
$this->consulta mysql_query($Query$this->conexion) or die (mysql_error());
        if(!
$this->consulta) {
            exit();
        }
    }
    
    function 
fecth_array() {
        return 
mysql_fetch_array($this->consulta);
    }

    function 
fetch_assoc() {
        return 
mysql_fetch_assoc($this->consulta);
    }
    
    function 
num_row() {
        return 
mysql_num_rows($this->consulta);
    }
    
    function 
ultimo_id() {
        return 
mysql_insert_id();
    }
}
?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:34.