*Pessoal fiz uma classe que gerá uma datagrid, agora ficou muito mais facil e rápido de gerar uma tabela com paginação e ordenação!
*Atenção: Fiz esse código com PHP 5.0.1 e para Mysql 4.0
segue o código:
HTML.php
<?php
/*
* Classe: HTML
* Finalidade: Abstrair o acesso HTML como visualizações e montagem de componentes.
* Design Pattern: ...
* Data: 08/12/2005 00:05:00.000
* Autor: Diego Pacheco
* Contato: pacheco_programador@hotmail.com
*
*/
class HTML
{
private function __construct() {}
/******************************************************************************************************************
*
* Metodo que Cria uma DataTable com:
* >>> Cabeçalho
* >>> Valores da Base
* >>> Ordenação por cabeçãlho
* >>> Paginação
*
* PARRAMETROS:
*
* > id_table :: String contendo o nome da tabela, será atribuido ao id também.
* > class_css :: String [opcional] o nome da classe css que a tabela se adpta.
* > campos :: array com todos os rotulos da tabela(TH).
* > valores :: array com os valores, nome extatos da base que será listados.
* > orderbys :: array [opcional] com os orders bys a serem executados com suas respectivas colunas.
* > sql :: String sql a ser executada para montar a DataGrid.
* > cnn :: Conexão ativa com a base de dados.
* > regs_pag :: número total de registros por páginas, default 10.
* > sql_count :: sql com a agregate function count(), obrigatório para poder fazer a paginação.
* > table_cor :: [OPCINAL]Corringa que pode ter qualquer conteúdo: HTML,CSS,JS que será colocado no cab da tabela.
* > tr_cor :: [OPCINAL]Corringa que pode ter qualquer conteúdo: HTML,CSS,JS que será colocado no TR da tabela.
*
* OBS:
*
* 1. Os arrays "valores" e "campos" devem ter o mesmo tamanho.
* 2. O array "orderbys" prescisa ter a mesma ordem dos arrays "valores" e "campos".
*
******************************************************************************************************************/
static public function createDataGrid($id_table,$class_css = "",$campos,$valores,$orderbys = "",$sql,$cnn,$regs_pag = 10,$sql_count,$table_cor = "",$tr_cor = "")
{
/* Pega o Total de Campos e Valores. */
$iTotCampos = count($campos);
$iTotValores = count($valores);
$iTotOrderBys = ( ( $orderbys == "" ) ? 0 : count($orderbys) );
/* Executa o SQL Count e descobe quantos registros tem. */
$query_count = mysql_query($sql_count,$cnn);
$array_count = mysql_fetch_array($query_count);
$iTotRegistros = $array_count[0];
/* Pega o Total de Paginas */
$iTotPaginas = ceil($iTotRegistros/$regs_pag);
/* Remanejá a pagina Atual. */
if (!isset($_GET['dtgdpagat']))
{
$pagina_atual = 0;
}
else
{
$pagina_atual = $_GET['dtgdpagat'];
}
/* Pega o Fator Registro/Pagina */
$fator = ($regs_pag*$pagina_atual);
/* Monta o Cabeçalho da Tabela. */
$sHtmlBuffer = "<TABLE name=\"$id_table\" id=\"$id_table\" $table_cor class=\"$class_css\" >\n";
/* Remanejá a ordenação da tabela para ASC e DESC conforme o click! */
$tipo_ord = "ASC";
if (isset($_GET['ordaddtgd']))
{
$tipo_ord = $_GET['ordaddtgd'];
if ($_GET['ordaddtgd']=="ASC")
$tipo_ord = "DESC";
else
$tipo_ord = "ASC";
}
/* Monta os Rotulos da Tabela. */
$sHtmlBuffer .= "<TR>\n";
for($i=0;$i<$iTotCampos;$i++)
{
if ( ($iTotOrderBys!=0) && ($valores[$i]==@$orderbys[$i]) )
$sHtmlBuffer .= "<TH onClick=\"window.location.href = '".$_SERVER['PHP_SELF']."?orddtgd=$orderbys[$i]&ordaddtgd=$tipo_ord'\" style=\"CURSOR: HAND;\" >".$campos[$i]."</TH>\n";
else
$sHtmlBuffer .= "<TH>".$campos[$i]."</TH>\n";
}
$sHtmlBuffer .= "</TR>\n";
/* Verifica se foi solicitada uma ordenação caso for aplica ao sql. */
if (isset($_GET['orddtgd']))
{
$sql .= " ORDER BY ".$_GET['orddtgd']." ".$_GET['ordaddtgd'];
}
/* Monta a Clausula SQL já Paginada! */
$sql .= " LIMIT ".$fator.",".$regs_pag;
/* Excecuta o SQL. */
$query = mysql_query($sql,$cnn);
/* Percore todos os resultados. */
$count = 0;
while (($array = mysql_fetch_array($query))!=null)
{
/* Monta os Valores da Tabela. */
$sHtmlBuffer .= "<TR id=\"tr".$id_table."".$count."\" ".$tr_cor." >\n";
for($i=0;$i<$iTotValores;$i++)
{
$sHtmlBuffer .= "<TD>";
if ($array[$valores[$i]]=="")
{
$sHtmlBuffer .= " ";
}
else
{
$sHtmlBuffer .= $array[$valores[$i]];
}
$sHtmlBuffer .= "</TD>\n";
}
$sHtmlBuffer .= "</TR>\n";
$count++;
}
/* Fecha a tabela */
$sHtmlBuffer .= "</TABLE>\n";
/* Mostra a Lista de Páginas. */
for($i=0;$i<$iTotPaginas;$i++)
{
$sHtmlBuffer .= "|<a href=\"".$_SERVER['PHP_SELF'].
"?dtgdpagat=".$i;
if (isset($_GET['orddtgd']))
$sHtmlBuffer .= "&orddtgd=".$_GET['orddtgd'];
if (isset($_GET['ordaddtgd']))
$sHtmlBuffer .= "&ordaddtgd=".$_GET['ordaddtgd'];
$sHtmlBuffer .= " \" >".$i."</a>";
}
$sHtmlBuffer .= "|";
/* Liberá a query da memoria do banco. */
mysql_free_result($query);
/* Mostra a DataGrid na tela */
echo $sHtmlBuffer;
}
}
?>
Pergunta
Beraldo
Script postado por: dmetallica
:: DataGrid ::
*Pessoal fiz uma classe que gerá uma datagrid, agora ficou muito mais facil e rápido de gerar uma tabela com paginação e ordenação!
*Atenção: Fiz esse código com PHP 5.0.1 e para Mysql 4.0
segue o código:
HTML.php
Teste Funcional teste.php:: B)
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.