SuperTab - tabela HTML com paginação e ordenação (PHP + MySQL)
Publicado por EVERTON DA ROSA (última atualização em 30/11/2010)
[ Hits: 13.277 ]
Homepage: http://everton3x.github.io
SuperTab é uma classe desenvolvida em PHP que cria uma tabela HTML com paginação e ordenação, a partir de dados armazenados em um banco de dados MySQL.
Junto com esta versão você encontra um arquivo de ajuda com exemplo de instalação e descrição dos métodos.
<?php /* * Classe PHP SuperTab * Cria uma tabela HTML a partir de uma consulta a banco de dados Mysql, * com suporte a paginação e ordenção dos resultados. * Desenvolvido por Everton da Rosa everton3x@gmail.com * Página do projeto em http://everton3x.orgfree.com * versão 1.0 @ 2010 nov 06 */ class SuperTab { protected function sqlexec($sql) { /* * Método sqlexec() * Retorna o resultado da consulta ao Mysql recebida em $sql. * Recebe como parâmetro em $sql uma string de consulta Mysql. * Customize este método da forma que melhor lhe convir. * O importante é que o resultado da consutla seja retornado. */ mysql_connect('localhost', 'teste', '123') or die(mysql_error()); mysql_select_db('information_schema') or die(mysql_error()); $result = mysql_query($sql) or die(mysql_error()); return $result; } protected function getData($sql) { /* * Método getData() * Retorna um array com os dados necessários para a tabela ser montada. * Recebe como parâmetro em $sql uma string de consulta ao Mysql. * A consulta não deve conter cláusula ORDER BY ou LIMIT. * Consultas SQL complexas podem não funcionar como desejado. * Não altere nada exceto se souber o que está fazendo. */ $cfg = $_REQUEST; //Paginação switch($cfg['rows']){ case 10: $rows = 10; break; case 25: $rows = 25; break; case 50: $rows = 50; break; case 100: $rows = 100; break; default: $rows = 25; //Quantidade de linhas por página padrão break; } if($cfg['page']) { $page = $cfg['page']; } else { $page = 1; } //Fim da paginação //Ordenação if($cfg['orderby']){ $orderby = SuperTab::putSpace($cfg['orderby']); }else{ $orderby = false; } $cfg['order'] = strtoupper($cfg['order']); switch($cfg['order']){ case 'ASC': $order = 'ASC'; break; case 'DESC': $order = 'DESC'; break; default: $order = 'ASC'; break; } if($orderby) { $order = ' ORDER BY `'.$orderby.'` '.$order; $sql .= $order; } //Fim da ordenação //echo $sql; $result = SuperTab::sqlexec($sql);//Pega o resultado da consulta ao Mysql $data['tf']['total'] = @mysql_num_rows($result); if($data['tf']['total'] == 0){ return 0; } //Mais paginação $last_page = ceil($data['tf']['total'] / $rows); if($page > $last_page){ $page = $last_page; } $num_fld = @mysql_num_fields($result); $start = ($page - 1) * $rows; $end = $start + $rows; if($end > $data['tf']['total']){ $end = $data['tf']['total']; } //Fim de mais paginação //Montagem das linhas de resultado e do cabeçalho $data['tb'] = array(); for($i = 0; $i < $num_fld; $i++){ $data['fld'][$i] = @mysql_field_name($result, $i); } $i = 1; while($r = @mysql_fetch_array($result)){ if($i > $start && $i <= $end){ reset($data['fld']); foreach($data['fld'] as $fld){ $data['tb'][$i][$fld] = $r[$fld]; } } $i++; } //Fim da montagem das linhas de resultado e cabeçalho $data['tf']['first_reg'] = $start+1; $data['tf']['last_reg'] = $end; $data['tf']['last_page'] = $last_page; return $data; } public function getTable($sql, $method = 'get'){ /* * Método getTabel() * Retorna uma string contendo o código HTML da tabela. * Recebe os parâmetros $sql (string de consulta ao Mysql) e * $method (Não obrigatório. Aceita get ou post, sendo o método de * envio dos dados de ordenação e paginação.). * Não altere nada aqui se não souber o que está fazendo. * Se deseja customizar sua tabela, colocando mais estruturas, este * é o lugar, desde que saiba o que está fazendo. */ $cfg = $_REQUEST;//Pega os dados enviados por GET ou POST $data = SuperTab::getData($sql);//Busca os dados para a tabela if($data == 0){//Retorna mensagem se a consulta ao banco de dados resultar em zero linhas return '<p>Sem dados para exibir!</p>'; } //TBODY foreach($data['tb'] as $tr){//Monta as linhas com resultado para a tabela $rows .= '<tr>'; foreach($tr as $value){ if($value == ''){ $value = ' '; } $rows .= '<td>'.$value.'</td>'; } $rows .= '</tr>'; } $tbody = '<tbody>'.$rows.'</tbody>'; //Fim TBODY //Ordenação if($cfg['orderby']){ $orderby = $cfg['orderby']; }else{ $orderby = false; } $cfg['order'] = strtoupper($cfg['order']); switch($cfg['order']){ case 'ASC': $order = 'ASC'; break; case 'DESC': $order = 'DESC'; break; default: $order = 'ASC'; break; } reset($data['fld']); foreach($data['fld'] as $fld){ $fldv = SuperTab::noSpace($fld); if($fldv == $cfg['orderby']){ $sel = ' selected="selected"'; }else{ $sel = ''; } $order_option .= '<option value="'.$fldv.'"'.$sel.'>'.$fld.'</option>'; } $order_field .= '<select name="orderby">'.$order_option.'</select>'; $order_option = ''; switch ($order){ case 'ASC': $order_option .= '<option value="ASC" selected="selected">ASC</option>'; $order_option .= '<option value="DESC">DESC</option>'; break; case 'DESC': $order_option .= '<option value="ASC">ASC</option>'; $order_option .= '<option value="DESC" selected="selected">DESC</option>'; break; default: $order_option .= '<option value="ASC" selected="selected">ASC</option>'; $order_option .= '<option value="DESC">DESC</option>'; break; } $order_field .= '<select name="order">'.$order_option.'</select>'; $order = '<fieldset id="ordenar"><legend>Ordenar</legend>'.$order_field.'<input type="submit" value="Ordenar" /></fieldset>'; //Fim Ordenação //THEAD reset($data['fld']); foreach($data['fld'] as $fld){ $th .= '<th>'.$fld.'</th>'; } $thead = '<thead><tr>'.$th.'</tr></thead>'; //Fim THEAD //Tabela e formulário $tbl_start_tag = '<table>'; $tbl_end_tag = '</table>'; if($_SERVER['QUERY_STRING']){ $query_string = '?'.$_SERVER['QUERY_STRING']; } $action = $_SERVER['SCRIPT_NAME'].$query_string; $frm_tag_start = '<div id="limpar"><a href="'.$_SERVER['SCRIPT_NAME'].'">Limpar tudo</a></div><form action="'.$action.'" method="'.$method.'">'; $frm_tag_end = '</form><div id="limpar"><a href="'.$_SERVER['SCRIPT_NAME'].'">Limpar tudo</a></div>'; //Fim tabela e formulário //Paginação if($cfg['page'] >= 1 && $cfg['page'] <= $data['tf']['last_page']){ $page = $cfg['page']; }elseif($cfg['page'] > $data['tf']['last_page']){ $page = $data['tf']['last_page']; }else{ $page = 1; } $pages_field .= '<select name="page">'; for($p = 1; $p <= $data['tf']['last_page']; $p++){ if($p == $page){ $sel = ' selected="selected"'; }else{ $sel = ''; } $pages_field .= '<option value="'.$p.'"'.$sel.'>'.$p.'</option>'; } $pages_field .= '</select>'; $rows_field .= '<select name="rows">'; switch($cfg['rows']){ case 10: $rows = 10; break; case 25: $rows = 25; break; case 50: $rows = 50; break; case 100: $rows = 100; break; default: $rows = 25;//Linhas por página padrão break; } $array = array(10, 25, 50, 100); foreach($array as $tmp){ if($tmp == $rows){ $sel = ' selected="selected"'; }else{ $sel = ''; } $rows_field .= '<option value="'.$tmp.'"'.$sel.'>'.$tmp.'</option>'; } $rows_field .= '</select>'; $paging = '<fieldset id="paginar"><label>Página:</label>'.$pages_field.'<label>Registros por página:'.$rows_field.'<input type="submit" value="Ir" />'; //Fim paginação //TFOOT $tfoot = '<tfoot><tr><td colspan="'.count($data['fld']).'">Registros '.$data['tf']['first_reg'].' a '.$data['tf']['last_reg'].' de '.$data['tf']['total'].'</td></tr></tfoot>'; //Fim TFOOT //Montagem final da tabela $table = $frm_tag_start.$order.$tbl_start_tag.$thead.$tbody.$tfoot.$tbl_end_tag.$paging.$frm_tag_end; //Fim da montagem final da tabela return $table; } protected function noSpace($string){ /* * Método noSpace() * Substitui espaços por "_" (underline) na string passada por $string * Necessário para parâmetros passados por GET */ $string = eregi_replace(' ', '_', $string); return$string; } protected function putSpace($string){ /* * Método putSpace() * Substitui "_" (underline) por espaço na string passada por $string * Necessário para parâmetros passados por GET */ $string = eregi_replace('_', ' ', $string); return $string; } } ?>
Redimensionador de fotos em PHP
FormConstructor: Formulário Construído por Variável
Cria gráficos de consumo de CPU e Memória a partir de arquivos.
Nenhum comentário foi encontrado.
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Remoção de propaganda com o programa Comskip[AJUDA] (3)
Instalação do drive do adaptador wiffi (5)
Linux Lite Demorando Muito Para Ligar (1)