Jump to content
Fórum Script Brasil
  • 0

Datagrid


Beraldo
 Share

Question

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

<?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:      [email protected]
 *
 */

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][email protected]$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;
     
   }
   
   
}


?>
Teste Funcional teste.php
<?

include_once("HTML.php");

$cnn      =  mysql_connect("localhost""root","");
mysql_select_db("banco",$cnn);

$sql           =  "Select * from pessoas";
$sql_count =  "Select count(*) from pessoas";

$rot            = array("Idade","Nome","Sexo");
$val            = array("idade","nome","sexo");
$orderbys   = array("idade","nome");

$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);

?>

:: B)

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...