Obter Tabelas Dinâmicas MySQL com PHP e AJAX
O Eyesis Data Grid Control é tudo o que precisa quando chega a altura de exibir dados apartir de uma base de dados MySQL para tabelas. Não é utilizado flash dinâmico ou código complexo em javascript, assim como ínfimas classes ambíguas baralhando todo o projecto. Esta classe é simples, pequena, e fácil de implementar com apenas 6 linhas de código. Não acredita? Veja os exemplos…
Algumas das características incluídas:
- Capacidades de filtragem e de busca
- Habilidade de mudar cabeçalhos das colunas
- Capacidade de exibir imagens
- Paginação automática
- Selecção de linhas
- Suporte de dados MySQL
- Suporte Ajax
- Ocultar colunas
- Ordenar colunas
- Personalização do visual através de CSS
- Pode lidar com grandes conjuntos de dados
- Capacidade de adicionar controlos
- Suporta caixas de selecção (checkbox)
- Especificar tipos de formato da coluna (como %, dólares, euros, etc)
- Testado e trabalhando no Firefox 2 e 3, o IE 6 e 7, Chrome, Safari 3 e Opera 9
Só PHP 5 - E muito mais!

Em poucos segundos, são criadas tabelas dinâmicas, muito fáceis de usar no seu website.
A título de exemplo, a tabela acima foi construída com apenas 6 linhas de código. Você mesmo pode recriar a imagem acima activando Ajax com apenas 1 linha de código.
Demonstrações:
| Exemplo 1 – Tabela de Dados básica | [Ver] | [Fonte] |
| Exemplo 1.5 – Tabela de Dados com AJAX | [Ver] | [Fonte] |
| Exemplo 2 – Filtros, Cabeçalhos, Tipos de Colunas | [Ver] | [Fonte] |
| Exemplo 3 – Mais propriedades | [Ver] | [Fonte] |
| Exemplo 4 – Selecção de Linhas | [Ver] | [Fonte] |
| Exemplo 5 – Demonstração Total com Ajax | [Ver] | [Fonte] |
Download: eyedatagrid-1.1.zip
Website: http://www.eyesis.ca/projects/datagrid.html
Licença: Gratuito
Ajax.org é uma plataforma de aplicações RIA escrita em javascript que pretende auxiliar programadores na construção de aplicações via browser, com um aspecto visual semelhante às aplicações de desktop. Estas aplicações RIA são uma combinação do melhor de dois mundos. A plataforma Ajax.org tem as vantagens do desktop no que concerne ao tempo de resposta [...]
Ecwid é uma plataforma de comércio electrónico em Ajax, a qual oferece a performance que necessita, sem qualquer incómodo. Está bem desenhada e proporciona uma experiência suave para os utilizadores e proprietários de lojas. Ecwid dispõe de uma interface rápida, com funcionalidades drag’n'drop e, é muito fácil de integrar. Registe-se no Ecwid, e imediatamente depois [...]
Como deve estar ciente das capacidades que o Ajax tem oferecido aos web developers, hoje temos para lhe mostrar 20 efeitos fantásticos que utilizam a tecnologia Ajax. Todos eles são gratuitos e podem ser experimentados antes de passar para a sua implementação. Certamente irá reconhecer alguns de websites famosos como Facebook ou Apple. 1) Menu [...]
Respostas a “Obter Tabelas Dinâmicas MySQL com PHP e AJAX”
O que tens a dizer?
Registar o seu Gravatar.
Imoecável Pedro. De facto é do melhor que vi. Precisava utilizar este exemplo para mostrar dados de uma tabela mysql, mas filtrando por exemplo, login=sessão e tipo=”enviada”. É possível fazer isto com esse script?
Agradeço a atenção.
Obrigado
Olá Mario! Obrigado pelas palavras.
Já viste como se realiza a consulta para o ex.2?
$x->setQuery("*", "people", "Id", "Id > 2");Pode ser que te ajude. Abraço
Olá Seu artigo ficou muito bom. Você poderia acrescentar, escolha de colunas também. Mas ficou show d+
Olá! Está excelente! Bom trabalho!
Já agora uma pergunta, como posso tornar as linhas da tabela href? por exemplo: seleccionar uma linha e redireccionar para edit.php?id=’linhaSelecionada’
Obrigada!!
Já consegui!
Oi Bruna, ainda bem que conseguiu :)
Olá!! Já agora queria inserir uma query mais complexa com JOINS, como consigo fazer isto? A function printTable() não está preparada para receber uma query sem ser através do setQuery.
Obrigada!! :)
Eu começava por adicionar o
$joinà funçãosetQuery. E depois adicionar as condições na funçãoprintTable… É possível mostrar que trabalho estás a fazer?Neste momento estou a trabalhar com a seguinte query que associa-se com outras tabelas.
$sql= “SELECT projecto.id, projecto.cod_proj, projecto.data_registo, projecto.descricao, projecto.tipo,cliente.nome AS cliente, direccao.nome AS direccao, e.nome AS estado
FROM projecto
INNER JOIN cliente ON projecto.nif_cliente = cliente.nif
LEFT JOIN estado e ON projecto.estado = e.id
INNER JOIN direccao ON projecto.direccao = direccao.id
WHERE projecto.estado <5
ORDER BY data_registo DESC”;
O ideal seria inserir na printTable a variável $sql e obter a tabela com os registos ou então através do setQuery inserir mais campos para INNER JOIN, ON e LEFT JOIN.
Obrigada!!
Já consegui :D! Adicionei mais um parâmetro $join à setQuery e alterei a função do printTable para utilizar $join nos filtros da query para o mysql poder receber e dar o resultado pretendido!
Depois posso mostrar como ficou para quem quiser utilizar query’s mais complexas nesta ferramenta!
Obrigada pela ajuda!!!
Oi Bruna, ainda bem que conseguiu. Parabéns! Eu ainda não obtive essa experiência com este script. De qualquer forma, exige conhecimentos avançados mas no entanto, muito útil. :)
Muito bacana, é uma boa ferramenta
Bruna, gostaria de saber como ficou as modificações que você fez para utilizar query’s que relacionam várias tabelas.
Estou tentando adicionar um script para inserção, edição e para deletar um dos registros, mas estou tendo dificuldades em entender como fazê-lo. Já que nas funções ele chama um java script com um alerta. Isso me deixou um tanto confuso. Alguém poderia me dar uma luz?
amigo tem algum jeito de percorrer pelas linhas com as setas do teclado??
Existe sim. Com recurso a Javascript http://www.webgrafismo.com/2009/04/13/tabelas-html-com-navegacao-por-teclado-estilo-excell/ pode chegar a essa funcionalidade.
Respondendo ao TIAGO:
Não sei se é como a Bruna fiz, mas após uns ajustes, também consegui atingir meu objetivo. Mostrar a grid buscando dados de mais de uma tabela.
Seguem os ajustes:
class.eyedatagrid.inc.php Linha 650:
public function printTable($join=”"){
class.eyedatagrid.inc.php Linha 690:
$query = ‘SELECT ‘ . $this->select_fields . ‘ FROM ‘ . $this->select_table . ”.$join.’ ‘ . $filter;
E quando chamo o pirinTable, passo o JOIN.
$join = ” inner join tb_tela on tb_tela.ntela = tb_acesso.ntela “;
$x->printTable($join);
Espero ter ajudado…
eu não consegui, pois não está abriindo e tbm gostaria de saber como eu edito o banco de dados, criei o banco mas ele não reconhece
Olá Marcelo! Tens de conseguir conectar-te à base de dados, antes de pensares em editar valores. Que servidor estás a usar? Estás a trabalhar em local ou servidor web?
Olá Pedro!
Se vc puder me ajudar gostaria de um exemplo como gerar colunas colocando em um campo a quantidade de linhas que eu queira e o banco de dados gerar automaticamente essas linhas ou colunas?
Ex:Como do Xamp eu digito o número de colunas que eu quero e ele gera automaticamente.
Agradeço muito se vc puder me ajudar com isso.
Obrigado.
Em primeiro lugar, gostaria de parabenizar pelo otimo script. Segue ai a minha duvida… como faço para cadastrar um novo dado ? sendo que quando eu clico em “Add new person” ele da a mensagem “Code for creating a new person”.
Obrigado
Luís experimenta criar um campo PK do tipo AUTO INCREMENT. Usa um LOOP em PHP para obter os registos da tabela.
Jessé sobre o CODE que pede não vejo à partida qual seja o problema. Se ligar a página com a informação à base de dados a SQL QUERY tem que ficar disponível ao utilizador graças ao PHP e à interacção em JAVASCRIPT que vem com este recurso.
Soluções não testadas. Desculpem mas eu nunca usei este recurso.
Gostava que os botões de editar e apagar funcionassem, qual o codigo a usar e onde o colocar
Olá Hélder. Podes confirmar se estás conectado a uma base de dados MySQL ?
Sim, estou conectado, consigo listar, ordenar, etc. Agora adicionar, eliminar e alterar é que não. Se calhar tenho uma versão em que o código para isso ainda não foi implementado
E então pessoal, alguém consegue editar os dados?
Parabens pelo seu trabalho, mas nao estou conseguindo colocar imagem dentro do grid nem abrir o link em uma nova página _blank. É possível isso tudo?
Olá eu gostaria de add este script, mas não estou conseguindo configurar pois não tenho muito conhecimento em php e banco de dados e se alguem puder me dar uma ajuda e me dizer o que tem que ser mudado no código para que funcione aqui´pois ja tentei varias mudanças e nada deu certo.
Pessoal eu só precisava mesmo é saber como faço a conecção com meu bando de dados com este script, pois estou trabalhando direto no servidor e não uso local host e só precisa saber onde exatamente coloco as informações necessárias para esta conecção.
Já consegui pessoal!!! :)
Minha duvida agora seroa o seguinte, como fazer para quando fazer o login buscar uma tabela pessoal da pessoa que esta fazendo o login. Tipo uma tabela especifica para cada login onde ja tenho campos iguais nelas para fazer o relacionamento, mas como seria este relacionamneto??? se alguem souber e puder me dar uma ajuda.
Galera já consegui hehehe!!! show de bola este script e era tudo o que eu estava precisando aqui VALEU!!!
Bom dia, gostaria de saber se alguem pode me ajudar.
O Botao editar, passa como parâmetro a id como javascript no meu caso: “%id%”.
Gostaria de alguma forma de passar essa id como php, ou pega-la de qualquer forma sem ser pelo javascript. Porque queria usar um lightbox para exibir a tela de editar sem ter que mudar de página intendem ? Ai precisaria de pegar essa id para mandar pro Lighbox, como está agora esta passando por javascript, ai nao tem como enviar o parametro pro Lightbox.
Atualmente está assim, mas gostaria de pegar essa id ” %id% ” pelo php. guardar em uma variavel ou uma sessão.
$x->addStandardControl(EyeDataGrid::STDCTRL_EDIT, ” if(confirm(‘Deseja mesmo editar (ID: %id%)’)){
window.location.href=’page.php?page=editar&id=%id%’;
}else{
} “);
Obrigado…..
Pessoal eu utilizei o exemplo2 e gostaria de saber se é possivel fazer o filtro por períodos também tipo escolher duas datas ou colocar dois nome no campo nome e ele me retorna a pesquisa apenas dos dois, se alguém puder me dar um auxilio ficarei feliz :)
Olá Bruna,
Será que você pode me passar a função adaptada pra trabalhar com join?
obrigado.
Here I go, Again.
Caros colegas,
Estou me utilizando do mesmo método do exemplo 2, onde construi a tabela em um PHP separado e depois, dentro do código principal, eu chamo a função:
EyeDataGrid::useAjaxTable(‘lista_endereco.php’);
que me retorna o erro a seguir:
Strict Standards: Non-static method EyeDataGrid::printJavascript() should not be called statically in C:\xampp\htdocs\piv\jslib\eyedatagrid-1.1\class.eyedatagrid.inc.php on line 855
Notice: Undefined variable: this in C:\xampp\htdocs\piv\jslib\eyedatagrid-1.1\class.eyedatagrid.inc.php on line 885
Alguém pode me ajudar com isso?
Fiz exatamente como nos exemplos e não funcionou.
Obrigado pela paciência, à todos.
Jessé, é só vc dar um windoe.open() para a url que você deseja….