:: 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
:: 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.