:: Pessoal eu dei uma aperfeiçoada na minha DataGrid, nesta nova versão temos:
>> Paginação de paginação semelhante ao google.
>> possiblidade de colocar CSS na tabela de paginação.
>> Submição de chaves cfme clique em linha. (DETALHE POR LINHA).
só lembrando que fiz isso com PHP 5.0 e MySQL 4.0
segue os novos fontes:
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
* >>> Paginação de Páginas, semelhante ao google.
* >>> Clique na coluna e submeti com as chaves para a variavel determinada. (DETALHE POR CHAVE).
*
* 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.
* > css_pag :: [OPCINAL] class CSS para a formatação da tag <p> na paginação.
* > tot_pag_pag :: [OPCINAL] número de paginas por paginas, ou sejá paginação de paginas. default 5.
* > $dados_chave_sbm :: [OPCIONAL] array com as chaves que ao usuário clicar na tabela serão submetidos.
* > $nome_var_chave_sbm :: [OPCIONAL] nome da variavel que será pega por $_GET[] ao submeter as chaves 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 = "",$css_pag = "",$tot_pag_pag = 5,$dados_chave_sbm = "",$nome_var_chave_sbm = "")
{
/* Pega o Total de Campos e Valores. */
$iTotCampos = count($campos);
$iTotValores = count($valores);
$iTotOrderBys = ( ( $orderbys == "" ) ? 0 : count($orderbys) );
$iTotchaves = ( ( $dados_chave_sbm == "" ) ? 0 : count($dados_chave_sbm) );
/* 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 = 1;
}
else
{
$pagina_atual = $_GET['dtgdpagat'];
}
/* Pega o Fator Registro/Pagina */
$fator = ($regs_pag*($pagina_atual-1));
/* Pega a paginação da paginação Atual. */
$pag_pag_atual = 0;
if (isset($_GET['dtgdpgpgat']))
{
$pag_pag_atual = $_GET['dtgdpgpgat'];
}
/* 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;
$sBufferChaves = "";
/* Verifica se foi passada alguma chave. */
if ($iTotchaves!=0)
{
/* Percoré todas as chaves da tabela. */
for($j=0;$j<$iTotchaves;$j++)
{
$sBufferChaves .= $array[$dados_chave_sbm[$j]].";";
}
}
/* Monta Js do detahle da tabela. */
if ($sBufferChaves!="")
{
$sHtmlBuffer .= " onClick=\" window.location.href = '".$_SERVER['PHP_SELF'].
"?".$nome_var_chave_sbm."=".$sBufferChaves."'; \" Style=\"CURSOR: HAND;\" ";
}
$sHtmlBuffer .= " >\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. */
$sHtmlBuffer .= "<TABLE id=\"tbPag$id_table\" name=\"tbPag$id_table\" >";
$sHtmlBuffer .= "<TR>";
$sHtmlBuffer .= "<TD><p class=\"$css_pag\" >";
/* Mostra paginação somente no caso de ter duas paginas. */
if ($iTotPaginas>1)
{
/* Determina a pagina atual da paginação de paginas. */
$count = 0;
if ($pag_pag_atual==0)
$i = 1;
else
$i = $pag_pag_atual;
/* Mostra o rotulo/link para primeira pagina */
if ($pagina_atual==1)
{
$sHtmlBuffer .= " [1ª]";
}
else
{
$sHtmlBuffer .= "[<a href=\"".$_SERVER['PHP_SELF'].
"?dtgdpagat=1";
if (isset($_GET['orddtgd']))
$sHtmlBuffer .= "&orddtgd=".$_GET['orddtgd'];
if (isset($_GET['ordaddtgd']))
$sHtmlBuffer .= "&ordaddtgd=".$_GET['ordaddtgd'];
$sHtmlBuffer .= " \" >1ª</a>]";
}
/*Monta o Paginador de paginas para traz. */
if ( ($pag_pag_atual-1!="") && (($pag_pag_atual-1)>0))
{
$ant_pag = ($pag_pag_atual-$tot_pag_pag);
$sHtmlBuffer .= " - <a href=\"".$_SERVER['PHP_SELF'].
"?dtgdpagat=".($ant_pag+($tot_pag_pag-1))."&dtgdpgpgat=".$ant_pag."";
if (isset($_GET['orddtgd']))
$sHtmlBuffer .= "&orddtgd=".$_GET['orddtgd'];
if (isset($_GET['ordaddtgd']))
$sHtmlBuffer .= "&ordaddtgd=".$_GET['ordaddtgd'];
$sHtmlBuffer .= " \" > << </a>";
}
/* Monta o link para todas as outras paginas! */
for(;$i<$iTotPaginas+1;$i++)
{
if ($tot_pag_pag==$count) break;
if ($pagina_atual==$i)
{
$sHtmlBuffer .= " - ".$i;
}
else
{
$sHtmlBuffer .= " - <a href=\"".$_SERVER['PHP_SELF'].
"?dtgdpagat=".$i."&dtgdpgpgat=".$pag_pag_atual."";
if (isset($_GET['orddtgd']))
$sHtmlBuffer .= "&orddtgd=".$_GET['orddtgd'];
if (isset($_GET['ordaddtgd']))
$sHtmlBuffer .= "&ordaddtgd=".$_GET['ordaddtgd'];
$sHtmlBuffer .= " \" >".$i."</a>";
}
$count++;
}
/*Monta o Paginador de paginas para frente */
if (($pag_pag_atual+$tot_pag_pag-1)!=$iTotPaginas)
{
$prox_pag = ($pag_pag_atual+($i-$pag_pag_atual));
$sHtmlBuffer .= " - <a href=\"".$_SERVER['PHP_SELF'].
"?dtgdpagat=".$prox_pag."&dtgdpgpgat=".$prox_pag."";
if (isset($_GET['orddtgd']))
$sHtmlBuffer .= "&orddtgd=".$_GET['orddtgd'];
if (isset($_GET['ordaddtgd']))
$sHtmlBuffer .= "&ordaddtgd=".$_GET['ordaddtgd'];
$sHtmlBuffer .= " \" > >> </a>";
}
/* Montagem do link de ultima pagina para a paginação. */
if ($pagina_atual==$iTotPaginas)
{
$sHtmlBuffer .= " [ultima]";
}
else
{
$prox_pag = ($iTotPaginas-$tot_pag_pag+1);
$sHtmlBuffer .= " [<a href=\"".$_SERVER['PHP_SELF'].
"?dtgdpagat=".$iTotPaginas."&dtgdpgpgat=".$prox_pag."";
if (isset($_GET['orddtgd']))
$sHtmlBuffer .= "&orddtgd=".$_GET['orddtgd'];
if (isset($_GET['ordaddtgd']))
$sHtmlBuffer .= "&ordaddtgd=".$_GET['ordaddtgd'];
$sHtmlBuffer .= " \" >ultima</a>]";
}
/* Fecha a Tabela de Paginação */
$sHtmlBuffer .= "</p></TD>";
$sHtmlBuffer .= "</TR>";
$sHtmlBuffer .= "</TABLE>";
}
/* 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 2.0 ::
:: Pessoal eu dei uma aperfeiçoada na minha DataGrid, nesta nova versão temos:
>> Paginação de paginação semelhante ao google.
>> possiblidade de colocar CSS na tabela de paginação.
>> Submição de chaves cfme clique em linha. (DETALHE POR LINHA).
só lembrando que fiz isso com PHP 5.0 e MySQL 4.0
segue os novos fontes:
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 * >>> Paginação de Páginas, semelhante ao google. * >>> Clique na coluna e submeti com as chaves para a variavel determinada. (DETALHE POR CHAVE). * * 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. * > css_pag :: [OPCINAL] class CSS para a formatação da tag <p> na paginação. * > tot_pag_pag :: [OPCINAL] número de paginas por paginas, ou sejá paginação de paginas. default 5. * > $dados_chave_sbm :: [OPCIONAL] array com as chaves que ao usuário clicar na tabela serão submetidos. * > $nome_var_chave_sbm :: [OPCIONAL] nome da variavel que será pega por $_GET[] ao submeter as chaves 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 = "",$css_pag = "",$tot_pag_pag = 5,$dados_chave_sbm = "",$nome_var_chave_sbm = "") { /* Pega o Total de Campos e Valores. */ $iTotCampos = count($campos); $iTotValores = count($valores); $iTotOrderBys = ( ( $orderbys == "" ) ? 0 : count($orderbys) ); $iTotchaves = ( ( $dados_chave_sbm == "" ) ? 0 : count($dados_chave_sbm) ); /* 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 = 1; } else { $pagina_atual = $_GET['dtgdpagat']; } /* Pega o Fator Registro/Pagina */ $fator = ($regs_pag*($pagina_atual-1)); /* Pega a paginação da paginação Atual. */ $pag_pag_atual = 0; if (isset($_GET['dtgdpgpgat'])) { $pag_pag_atual = $_GET['dtgdpgpgat']; } /* 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; $sBufferChaves = ""; /* Verifica se foi passada alguma chave. */ if ($iTotchaves!=0) { /* Percoré todas as chaves da tabela. */ for($j=0;$j<$iTotchaves;$j++) { $sBufferChaves .= $array[$dados_chave_sbm[$j]].";"; } } /* Monta Js do detahle da tabela. */ if ($sBufferChaves!="") { $sHtmlBuffer .= " onClick=\" window.location.href = '".$_SERVER['PHP_SELF']. "?".$nome_var_chave_sbm."=".$sBufferChaves."'; \" Style=\"CURSOR: HAND;\" "; } $sHtmlBuffer .= " >\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. */ $sHtmlBuffer .= "<TABLE id=\"tbPag$id_table\" name=\"tbPag$id_table\" >"; $sHtmlBuffer .= "<TR>"; $sHtmlBuffer .= "<TD><p class=\"$css_pag\" >"; /* Mostra paginação somente no caso de ter duas paginas. */ if ($iTotPaginas>1) { /* Determina a pagina atual da paginação de paginas. */ $count = 0; if ($pag_pag_atual==0) $i = 1; else $i = $pag_pag_atual; /* Mostra o rotulo/link para primeira pagina */ if ($pagina_atual==1) { $sHtmlBuffer .= " [1ª]"; } else { $sHtmlBuffer .= "[<a href=\"".$_SERVER['PHP_SELF']. "?dtgdpagat=1"; if (isset($_GET['orddtgd'])) $sHtmlBuffer .= "&orddtgd=".$_GET['orddtgd']; if (isset($_GET['ordaddtgd'])) $sHtmlBuffer .= "&ordaddtgd=".$_GET['ordaddtgd']; $sHtmlBuffer .= " \" >1ª</a>]"; } /*Monta o Paginador de paginas para traz. */ if ( ($pag_pag_atual-1!="") && (($pag_pag_atual-1)>0)) { $ant_pag = ($pag_pag_atual-$tot_pag_pag); $sHtmlBuffer .= " - <a href=\"".$_SERVER['PHP_SELF']. "?dtgdpagat=".($ant_pag+($tot_pag_pag-1))."&dtgdpgpgat=".$ant_pag.""; if (isset($_GET['orddtgd'])) $sHtmlBuffer .= "&orddtgd=".$_GET['orddtgd']; if (isset($_GET['ordaddtgd'])) $sHtmlBuffer .= "&ordaddtgd=".$_GET['ordaddtgd']; $sHtmlBuffer .= " \" > << </a>"; } /* Monta o link para todas as outras paginas! */ for(;$i<$iTotPaginas+1;$i++) { if ($tot_pag_pag==$count) break; if ($pagina_atual==$i) { $sHtmlBuffer .= " - ".$i; } else { $sHtmlBuffer .= " - <a href=\"".$_SERVER['PHP_SELF']. "?dtgdpagat=".$i."&dtgdpgpgat=".$pag_pag_atual.""; if (isset($_GET['orddtgd'])) $sHtmlBuffer .= "&orddtgd=".$_GET['orddtgd']; if (isset($_GET['ordaddtgd'])) $sHtmlBuffer .= "&ordaddtgd=".$_GET['ordaddtgd']; $sHtmlBuffer .= " \" >".$i."</a>"; } $count++; } /*Monta o Paginador de paginas para frente */ if (($pag_pag_atual+$tot_pag_pag-1)!=$iTotPaginas) { $prox_pag = ($pag_pag_atual+($i-$pag_pag_atual)); $sHtmlBuffer .= " - <a href=\"".$_SERVER['PHP_SELF']. "?dtgdpagat=".$prox_pag."&dtgdpgpgat=".$prox_pag.""; if (isset($_GET['orddtgd'])) $sHtmlBuffer .= "&orddtgd=".$_GET['orddtgd']; if (isset($_GET['ordaddtgd'])) $sHtmlBuffer .= "&ordaddtgd=".$_GET['ordaddtgd']; $sHtmlBuffer .= " \" > >> </a>"; } /* Montagem do link de ultima pagina para a paginação. */ if ($pagina_atual==$iTotPaginas) { $sHtmlBuffer .= " [ultima]"; } else { $prox_pag = ($iTotPaginas-$tot_pag_pag+1); $sHtmlBuffer .= " [<a href=\"".$_SERVER['PHP_SELF']. "?dtgdpagat=".$iTotPaginas."&dtgdpgpgat=".$prox_pag.""; if (isset($_GET['orddtgd'])) $sHtmlBuffer .= "&orddtgd=".$_GET['orddtgd']; if (isset($_GET['ordaddtgd'])) $sHtmlBuffer .= "&ordaddtgd=".$_GET['ordaddtgd']; $sHtmlBuffer .= " \" >ultima</a>]"; } /* Fecha a Tabela de Paginação */ $sHtmlBuffer .= "</p></TD>"; $sHtmlBuffer .= "</TR>"; $sHtmlBuffer .= "</TABLE>"; } /* Liberá a query da memoria do banco. */ mysql_free_result($query); /* Mostra a DataGrid na tela */ echo $sHtmlBuffer; } } ?>Teste Funcional. teste.php<style> .pag { COLOR: darkblue; BACKGROUND-COLOR: gainsboro; } </style> <?php include_once("HTML.php"); $cnn = mysql_connect("localhost","root",""); mysql_select_db("banco",$cnn); $sql = "Select * from encontros"; $sql_count = "Select count(*) from encontros"; $rot = array("Data","Descrição","Inicio"); $val = array("data","descricao","inicio"); $orderbys = array("data","descricao"); $chaves = array("cod","data"); $tablela_cor = "cellSpacing=\"1\" cellPadding=\"1\" width=\"100%\" border=\"3\" bordercolor=\"steelblue\""; $tr_cor = ""; HTML::createDataGrid ("dtgdDados", "", $rot, $val, $orderbys, $sql,$cnn, 5,$sql_count, $tablela_cor, $tr_cor,"pag",5, $chaves, "testeChaves"); if (isset($_GET['testeChaves'])) echo "Chaves vindas como: [testeChaves]= ".$_GET['testeChaves']; ?> </BODY>:: E eras isso, até a prox. :: 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.