Dividir resultados de query no PHP



Recentemente precisei ver um jeito para dividir os resultados retornados do MySql, como eram muitos, procurei um modo de paginação.
Encontrei algo na internet por Rafael Costa, adaptei o código pra's minhas necessidades e resolvi compartilhar aqui. ;)



<?php
//Define a variável recebida (p=página. via URL, exemplo: home.php?p=1)
$p = $_GET["p"];

// Verifica se a variável tá declarada, senão deixa
//na primeira página como padrão.
if(!isset($p)) $p = 1;

// Define aqui a quantidade máxima de registros por página.
$qnt = 10;

// A função calcula o início da seleção, calculando:
// (página atual * quantidade por página) - quantidade por página
$inicio = ($p*$qnt) - $qnt;

// Seleciona no banco de dados com o LIMIT indicado pelos
//números acima.
$sql_select = "SELECT cliente, email, telefone, endereco, id, ativo FROM tbl_clientes LIMIT $inicio, $qnt";

// Executa o Query
$sql_query = mysql_query($sql_select);

// Faz uma nova seleção no banco de dados, desta vez sem LIMIT para
//pegarmos o número total de registros
$sql_select_all = "SELECT cliente, email, telefone, endereco, id, ativo FROM tbl_clientes";

// Executa o query da seleção acima
$sql_query_all = mysql_query($sql_select_all);

// Gera uma variável com o número total de registros no banco de dados
$total_registros = mysql_num_rows($sql_query_all);

// Gera outra variável, desta vez com o número de
//páginas que será preciso. O comando ceil() arredonda
//"para cima" o valor
$pags = ceil($total_registros/$qnt);

// Número máximos de botões de paginação
$max_links = 5;

// Exibe registro inicial
$reg_inicial = ($inicio+1);

//Exibe registro final
$reg_final = ($reg_inicial + 9);
if ($reg_final > $total_registros){
$reg_final = $total_registros;
}else{
$reg_final = ($reg_inicial + 9);};
?>

//Inicia tabela de exibição de registros
<table width="100%" border="0px">
<tr>
<td class="h5">Exibindo registros<?php echo $reg_inicial." - ".$reg_final; ?></td>
</tr>
</table>

//Inicia tabela de cabeçalho dos dados do cliente
<table cellspacing="1" cellspadding="0" border="0" style="margin-left:2px;">
<tbody>
<thead class="S_thead">
<tr class="tbl_tr">
<th class="tbl_td">Nome do cliente: </th>
<th class="tbl_td">E-mail: </th>
<th class="tbl_td">Telefone: </th>
<th class="tbl_td">Endere&ccedil;o: </th>
<th class='tbl_td'></th>
</tr>
</thead>
</tbody>
</table>

<?php
// Cria um while para pegar as informações do BD
while($array = mysql_fetch_array($sql_query)) {

// Variável para capturar os campos no banco de dados
$cliente = $array["cliente"];
$email = $array["email"];
$telefone = $array["telefone"];
$id = $array["id"];
$endereco = $array["endereco"];
$ativo = $array["ativo"];

//Encurtar variáveis longas para aparecer na td da tabela
if (strlen($email)>15)
$email = substr($email, 0, 15)."...";
if (strlen($cliente)>15)
$cliente = substr($cliente, 0, 15)."...";
if (strlen($endereco)>15)
$endereco = substr($endereco, 0, 15)."...";

//Define a cor da linha e o ícone se inativo
if($ativo == 0){
$backg_inativo = "#FFBFCB"; $alerta = "<img src='images/warningicon.png'>&nbsp;<span style='color:red;font-weight:bold;'>Inativo</span>";
}else{$backg_inativo = "white"; $alerta = "";};

//Aqui começa o formulário de exibição dos clientes
echo " <table cellspacing='1' cellspadding='0'>";
echo " <tbody>";
echo " <tr class='tbl_tr' bgcolor='".$backg_inativo."'>";
echo " <td class='tbl_td'>$cliente</td>";
echo " <td class='tbl_td'>$email</td>";
echo " <td class='tbl_td'>$telefone</td>";
echo " <td class='tbl_td'>$endereco</td>";

//Bot&atilde;o Exibir
echo " <td class='tbl_td'><a href='exibircliente.php?view=".$id."'>Exibir</a>&nbsp;&nbsp;&nbsp;".$alerta."</td>";
echo " </tr>";
echo " </tbody>";
echo " </table>";
}

// Depois que selecionou todos os campos, pula uma
//linha para exibir os links(próxima, última...)
echo "<br />";

//Se a página for =1 o link fica desativado
if ($p == 1){
echo ""&lt;&lt;&lt;Primeira página";} else {
// Exibe o primeiro link "primeira página", que não
//entra na contagem acima($max_links=5)
echo "<a href='controleclientes.php?p=1' target='_self'>&lt;&lt;&lt;Primeira p&aacute;gina</a> ";
};

// Cria um for() para exibir os 3 links antes da página atual
for($i = $p-$max_links; $i <= $p-1; $i++) {
// Se o número da página for menor ou igual a zero, não faz nada
// (afinal, não existe página 0, -1, -2..)
if($i <=0) {
//faz nada
// Se estiver tudo OK, cria o link para outra página
} else { echo "<a href='controleclientes.php?p=".$i."' target='_self'>".$i."</a> "; } }

// Exibe a página atual, sem link, apenas o número
echo $p." ";
// Cria outro for(), desta vez para exibir 3 links após a página atual
for($i = $p+1; $i <= $p+$max_links; $i++) {
// Verifica se a página atual é maior do que
//a última página. Se for, não faz nada.
if($i > $pags) {
//faz nada
}
// Se tiver tudo Ok gera os links.
else { echo "<a href='controleclientes.php?p=".$i."' target='_self'>".$i."</a> "; } }

//Se a página for igual a $pags o link fica desativado
if ($p == $pags){
echo "Última p&aacute;gina&gt;&gt;&gt;";} else {
// Exibe o link "última página"
echo "<a href='controleclientes.php?p=".$pags."' target='_self'>Última p&aacute;gina&gt;&gt;&gt;</a> ";
};
?>


Qualquer dúvida, comente logo abaixo.

Projeto de extensão na UFSM



Blog para acompanhamento do projeto:

Conheça mais sobre o projeto de extensão-
Título : A PRESERVAÇÃO DO PATRIMÔNIO CULTURAL REGIONAL DE SANTA MARIA NA PRODUÇÃO DE INSTRUMENTOS DE PESQUISA ARQUIVÍSTICOS

Resumo:
O projeto tem por objetivo apresentar uma proposta para a preservação e difusão do patrimônio histórico cultural da UFSM e região, através da produção de instrumentos arquivístivos. As atividades deverão ser executadas por alunos bolsistas, sob a coordenação e acompanhamento do coordenador e da arquivista responsável pelo projeto. Sob a orientação do Curso de Arquivologia, o Programa de Pós-Graduação Profissionalizante em Patrimônio Cultural (PPGPPC) juntamente com o Departamento de Arquivo Geral (DAG) colaborarão com o objeto de estudo e o conhecimento na área. Em primeiro momento espera-se digitalizar a documentação fotográfica do Fundo Coordenadoria de Comunicação Social; obter o acondicionamento adequado dos suportes originais; facilitar a disponibilização da documentação fotográfica para os pesquisadores de diferentes áreas do conhecimento e abrangência geográfica e, ao mesmo tempo, possibilitar a complementação da descrição por parte dos usuários do acervo. Também implementar políticas de preservação e difusão do patrimônio histórico cultural da região de Santa Maria. A produção e disseminação do conhecimento adquirido neste projeto contribuirão para as discussões científicas na área de Ciência da Informação (Arquivologia) e Tecnologia da Informação (Gestão Eletrônica de Documentos - GED). Os resultados do projeto contribuirão para promover e facilitar o acesso e a pesquisa aos documentos fotográficos da UFSM e do patrimônio cultural arquivístico regional pela comunidade nacional e internacional.

Objetivo geral:
Difundir e preservar o Patrimônio Cultural e documental da UFSM e da região de Santa Maria por meio da criação de um laboratório que viabilize a produção de instrumentos arquivísticos e sua consequente publicação on-line via softwares de Gestão de Conteúdo e presencial através de mostras do Patrimônio Documental.

Resultados esperados:
A ação extensionista, no conjunto das atividades propostas, visa contribuir para o atingimento dos seguintes resultados:
•    Proporcionar um espaço para aplicação prática dos conhecimentos teóricos adquiridos por alunos dos diferentes cursos oferecidos pela UFSM, visando o intercâmbio entre as diversas áreas do conhecimento e a integração ensino-pesquisa-extensão teórica e prática;
•    Tratar (identificar, organizar, descrever, digitalizar, acondicionar, preservar e difundir) a documentação arquivística da UFSM visando a sua preservação e difusão para pesquisa;
•    Preservar os suportes originais da documentação, que se constitui no patrimônio documental das instituições/órgãos que serão atingidas pelo projeto, visando a sua preservação em longo prazo;
•    Publicar os projetos de tratamento arquivístico dos conjuntos documentais de relevância histórica e cultural à sociedade, principalmente a disponibilização de guias, catálogos, inventários, relativos ao Patrimônio Histórico e Cultural da UFSM e região de Santa Maria, frutos dessa ação;
•    Conscientizar a comunidade atingida pelo projeto para a preservação e difusão da documentação de relevância histórica e cultural na preservação da memória social;
•    Oferecer oportunidade para produção científica acadêmica;
•    Implementar uma política de contínua capacitação dos servidores, professores e alunos na utilização das ferramentas tecnológicas que visam a produção de instrumentos arquivísticos.
-------------------------------------------------------------------------------------



2ª edição do ECMSHOW

São Paulo realiza em setembro segunda edição do ECMSHOW
Principal congresso internacional de gestão documental na AL terá evento focado em SharePoint, plataforma de colaboração mais utilizada no mundo 


São Paulo, julho de 2011 – Em setembro, entre os dias 13 e 14, a capital paulista recebe a segunda edição do congresso internacional de gestão de informação empresarial (Enterprise Content Management), maior encontro do setor na América Latina (AL). No ano passado, o evento recebeu 1.300 profissionais no Sheraton WTC São Paulo. O gerenciamento de informação é, atualmente, um dos principais desafios das empresas, independente do campo de atuação, devido ao aumento exponencial dos dados que circulam nas redes e a utilização cada vez maior de plataformas de colaboração e mídias sociais.

Serão dois dias de atividades intensas, com dezenas de palestras focadas no dia-a-dia das empresas e cerca de 20 cases, além de uma exposição tecnológica que reunirá os principais players do segmento de ECM. Pelo segundo ano consecutivo, o congresso trará ao Brasil, principal mercado na AL, a Association for Information and Imaging Management (AIIM), entidade da área mais respeitada mundialmente. Jesse Wilkins, diretor da instituição, falará sobre Social Business, um dos principais assuntos do momento nas corporações do mundo todo.

Este ano, o congresso (www.ecmshow.com.br) apresentará em paralelo o SharePoint 360º, primeiro encontro nacional dedicado à plataforma de colaboração da Microsoft e tecnologias relacionadas, com mais de 10 palestras envolvendo diversos temas – ECM 3.0, inovações na visualização de dados e soluções de CAD, entre outros. Haverá uma mostra das principais soluções e inovações do segmento, com visitação gratuita, e um centro de excelência, no qual os profissionais terão acesso às melhores práticas utilizadas na área.

O congresso internacional de gestão de informação, que em abril último promoveu uma edição especial em Brasília para 600 profissionais, é realizado pela Guia Business Media, com o apoio da Associação Brasileira da Gestão de Documentos (ABGD) e da Associação Nacional dos Gestores de Contratos (ANGC) e Associação Brasileira de Empresas de Identidade Digital (ABRID).

Agenda 
Congresso Internacional de Gestão da Informação - ECMSHOW
Data: 13 e 14 de setembro de 2011
Local: Sheraton WTC São Paulo
Horário: Das 9h às 18hs
Mais informações: www.ecmshow.com.br

Congresso Brasileiro de SharePoint 360º
Data: 13 e 14 de setembro de 2011
Local: Sheraton WTC São Paulo
Horário: Das 9h às 18hs
Mais informações: www.sharepoint360.com.br



Fonte da Notícia (011)3539-8742
Marlene Maeda





Design em aplicações Access – Parte 02


Por Gilberto Mendes

"Bom, no artigo anterior eu deixei claro o quanto acho que as aplicações Access feitas sem cuidado são ruins para quem desenvolve, para quem usa e até para o próprio Access, que ganhou a fama de ferramenta para desenvolvimento nas coxas.

Agora quero compartilhar algumas dicas de como construir uma aplicação visualmente mais agradável com o uso de alguns truques simples.


Design Básico de um form

Acho que o primeiro passo é realizar um checklist em algumas propriedades de um formulário. Vamos começar com um exemplo clássico, uma agenda simples de 5 campos.

Criamos a tabela e chamamos o assistente. Ele nos dá algo assim.

Coisas que desagradam:

    * Fundo cinza
    * Fonte padrão
    * Seletor de registros
    * Botões de navegação

Então, as primeiras mudanças:

    * Vá para o modo estrutura. Clique na área cinza do formulário e defina uma cor branca
    * Marque todos os objetos e mude o fonte para algo melhor. Tahoma, Trebuchet MS e Verdana são opções interessantes, que vêm junto com o pacote Office. Vou usar Trebuchet MS tamanho 10 para as caixas de texto e tamanho 8 para os rótulos
    * Selecione as caixas de texto e defina a borda como um cinza intermediário.
    * Com as caixas de texto selecionadas, dê um duplo clique em uma das extremidades para ajustar o tamanho.

Mais alguns ajustes: Acesse as propriedades do formulário e defina as seguintes propriedades:

    * Seletores de registro: não
    * Barras de rolagem: nenhuma
    * Botões de navegação: não
    * Linhas divisórias: não
    * Auto Redimensionar: sim
    * Auto centralizar: sim (este é escola pessoa, conforme a função da janela)

Ainda não é algo que impressione, mas a gente pode dar alguns passos. Ajuste os rótulos para que fiquem sobre as caixas de texto e coloque sua cor como um cinza escuro (reduzir o contraste colocando um cinza leve no fundo ou um cinza médio no fonte deixa mais agradável aos olhos).

Como receita, cor é gosto de cada um. Recomendo dar uma olhada nos artigos sobre design web. Mesmo sendo para outra plataforma eles têm conceitos que são universais, uma espiada em uma matéria sobre cor ou tipografia pode enriquecer muito suas aplicações.

Botões de comando ao invés da barrinha de navegação

Para navegar pelo formulário, você pode acrescentar os botões de navegação, criados a partir dos assistentes. Com eles você tem mais controle sobre o espaçamento e tamanho, facilitando a vida do seu cliente.

Outra vantagem é que em uma mesma linha você pode acrescentar botões para a impressão de listagens, etiquetas e tantos recursos quanto quiser.

Pincel e Controles Padrão

Antes de prosseguir, quero dar uma dica: vamos supor que você deseja acrescentar novos campos a esta agenda. Depois de alterar a tabela, você segue para o formulário e arrasta os campos a partir da lista e descobre que eles estão naquele formato padrão.

A primeira possibilidade é usar a ferramenta pincel. Clique em uma caixa de textos formatada e depois clique sobre uma das caixas de texto que você criou. Vai ver que a caixa ganhou o fonte e a borda do primeiro controle e mais, os rótulos também foram formatados.

Uma segunda possibilidade, ainda mais interessante é, antes de arrastar os campos, clicar em uma das caixas de texto e selecionar no menu Formatar a opção Definir controles padrão. Repita o mesmo processo com os rótulos. Se você arrastar os campos agora, verá que todas as caixas de texto estão no mesmo formato.

Então, para padronizar de forma rápida os controles no seu formulário, arraste cada um deles para o form, realize as alterações de fonte, cor, borda, e tamanho e acione o “Definir Controles Padrão”.

O formulário “Normal”

Aqui vai mais uma dica: se você definiu criteriosamente um padrão de formatação e cores para o seu formulário, certamente vai querer utilizar este padrão em outros formulários.

Para definir este padrão, basta salvar uma cópia do seu formulário com o nome “normal”. Todos os formulários que você criar a partir de agora serão baseados nele, respeitando os formatos de borda, centralização, cores e também os padrões de controles.

Outra dica é que tanto os padrões de controle quanto o “normal” valem para os relatórios. Assim, se você criar um padrão visual para os relatórios, basta salvar uma cópia com o nome normal para ter um modelo inicial de relatório diferente.

Nota: acessando no menu Ferramentas o item Opções, você pode definir na aba Formulário/Relatório o nome do modelo que deve ser usado pelo Access.

Margens e Linhas de Força

Como não sou designer profissional, às vezes dou nomes para alguns conceitos que eu percebo intuitivamente. Mas acho que os grandes designers vão concordar comigo quando digo que o melhor design é aquele que surge naturalmente, a partir da intuição.

Um dos primeiros detalhes que eu observo nos formulários e relatórios são as margens e o espaçamento. Margens desiguais criam uma sensação de que o formulário “pesa” mais de um lado. Margens iguais dão por outro lado uma sensação de equilíbrio. Margens muito grandes dão uma sensação de coisas soltas e margens muito apertadas uma sensação de aperto.

Um segundo detalhe que quero comentar é o espaçamento e alinhamento dos objetos. Conforme os objetos são posicionados na tela, criam “linhas de força”

Margens desproporcionais e campos desalinhados

Margens iguais e campos alinhados: atenção aos detalhes, produzindo conforto para quem usa a aplicação

Mais alguns detalhes

Outras dicas que podem ajudar a criar uma boa experiência com os usuários:

    * Revise a ordem de tabulação dos campos. Nada pior que um formulário onde a gente salta sem lógica de um campo a outro.
    * Selecione os botões de comando e mude a propriedade “parada de tabulação” para não. Assim o foco circula apenas nos campos de edição, sem cair nos botões, fazendo com que o usuário apressado mude de registro sem querer.
    * Mude a propriedade “ciclo” do formulário para registro atual. Aqui é o mesmo. O cliente termina o cadastramento e o Access pula para o primeiro campo, ao invés de mudar de registro.
    * Defina a propriedade “legenda” do formulário. É mais agradável uma janela com o nome “Cadastro de Clientes” do que “frmCadCli”.

Às vezes nos deparamos com desafios na hora de construir uma aplicação. Formulários com muitos campos ou que precisam exibir muitas informações. Guias ou barras de rolagem? Colocar todas as informações de uma vez na tela ou paginar? Pedir dados de uma vez ocultando e exibindo campos ou usar assistentes?

Não dá pra responder nenhuma pergunta sobre design em termos absolutos, mas um caminho interessante é criar protótipos e mostrar ao cliente, para que ele possa opinar sobre o que mais lhe agrada. São poucos os programadores que tem tempo e disposição para se esforçar no layout, e ainda menos os que se dispõem a prototipar telas, mas garanto que estes exercícios vão trazer pouco a pouco uma experiência e conhecimento sobre a elaboração de aplicações que pode ser um dos seus grandes diferenciais como profissional de desenvolvimento.

Um abraço, até o próximo artigo em que vou abordar elementos visuais “fora da caixa”.

Links relacionados:
http://www.sistemasemaccess.com.br
http://www.informeaccess.com.br/ler.php?id=72&id_cat=26&id_coluna=&cat=Artigos&titulo=Design%20em%20aplica%E7%F5es%20Access%20%96%20Parte%2002

Eletrônico ou digital?



Diferença entre documento eletrônico e documento digital

Segundo a Câmara Técnica de Documentos Eletrônicos (CTDE) do Conselho Nacional de Arquivos (CONARQ):

“Na literatura arquivística internacional, ainda é corrente o uso do termo “documento eletrônico” como sinônimo de “documento digital”. Entretanto, do ponto de vista tecnológico, existe uma diferença entre os termos “eletrônico” e “digital. Um documento eletrônico é acessível e interpretável por meio de um equipamento eletrônico (aparelho de videocassete, filmadora, computador), podendo ser registrado e codificado em forma analógica ou em dígitos binários. Já um documento digital é um documento eletrônico caracterizado pela codificação em dígitos binários e acessado por meio de sistema computacional. Assim, todo documento digital é eletrônico, mas nem todo documento eletrônico é digital. Exemplos: 1) documento eletrônico: filme em VHS, música em fita cassete. 2) documento digital: texto em PDF, planilha de cálculo em Microsoft  Excel, áudio em MP3, filme em AVI.”

O Dicionário Brasileiro de Terminologia Arquivística (DBTA) define:

Documento eletrônico: “Gênero documental integrado por documentos em meio eletrônico ou somente acessíveis por equipamentos eletrônicos, como cartões perfurados, disquetes e documentos digitais.” (DBTA, p. 75)

Documento digital: “Documento codificado em dígitos binários, acessível por meio de sistema computacional.” (DBTA, p. 75)

Embora estes conceitos diferenciem documento digital do eletrônico, há autores que preferem usar somente o termo “documento eletrônico” para abranger tanto os eletrônicos quanto os digitais, ao considerar as definições do CONARQ. Todavia não fogem do pensamento dos demais, uma vez que o CONARQ afirma que documentos eletrônicos abrangem documentos digitais: “todo documento digital é eletrônico, mas nem todo documento eletrônico é digital”.


Referências:
----------------
ARQUIVO NACIONAL (Brasil). Dicionário Brasileiro de Terminologia Arquivística. Rio de Janeiro: Arquivo Nacional, 2005.

CÂMARA TÉCNICA DE DOCUMENTOS ELETRÔNICOS (CONARQ / Brasil) <http://www.documentoseletronicos.arquivonacional.gov.br/cgi/cgilua.exe/sys/start.htm?sid=10>

Gerenciamento de documento - Congresso internacional inédito

Depois do sucesso de 2010 em SP, chegou a vez de Brasília receber o ECMShow 2011. Confira:

Brasília terá congresso internacional inédito
sobre gerenciamento de informação e documento

Evento, que ocorre em maio, é o maior do setor na América Latina e apresentará ao mercado local as últimas novidades e tendências mundiais

São Paulo, janeiro de 2011 – Entre os dias 23 e 24 de maio, Brasília realizará pela primeira vez um congresso internacional sobre Enterprise Content Management (ECM) ou gerenciamento de informação e documentos, uma área crucial que afeta não só o desempenho das empresas privadas, mas também dos órgãos governamentais. A falta de uma gestão eficiente das informações leva os profissionais a perderem horas diariamente buscando conteúdo e consequentemente não sendo efic az em suas tarefas mais básicas.
O ECM Show, que já ocorre em São Paulo e é o maior encontro do setor na América Latina, apresentará em Brasília as últimas novidades do setor no mundo, com a participação de palestrantes internacionais. Durante os dois dias de congresso serão apresentados cases, tecnologias, aplicações e tendências que vão orientar empresas dos setores público e privado. Também haverá uma feira com os maiores fornecedores de produtos e serviços do mercado, que apresentarão suas soluções na prática.
Na edição paulista do ECM Show do ano passado, o evento atraiu cerca de 1.500 visitantes nos dois dias de congresso, reunindo keynotes conceituados mundialmente, mais de 50 palestras e uma exposição dos principais players do mercado, além de trazer ao País a mais respeitada instituição do setor em todo o mundo, a Association for Information and Imaging Management (AIIM).
A área de gerenciamento de informação e documentos, que tem crescido no Brasil nos últimos anos, reúne tecnologias, estratégias, métodos e ferramentas destinadas a capturar, gerenciar, armazenar, preservar e distribuir conteúdo e documentos não-estruturados que envolvem uma organização, como e-mail, nota fiscal, contratos, imagens, etc.
A gestão de todo esse conteúdo, que está fora da base de dados das organizações, é um grande desafio para qualquer organização, uma vez que o volume de informação cresce exponencialmente nas redes corporativas e impacta diretamente nos resultados. Devido à ausência de um gerenciamento adequado, as organizações perdem dinheiro e competitividade. De acordo com a consultoria IDC, o volume de dados deverá crescer 44 vezes até 2020.
O ECM Show 2011 é uma realização da Guia Business Media, com o apoio da Associação Brasileira da Gestão de Documentos (ABGD), Associação Nacional dos Gestores de Contratos (ANGC) e Associação Brasileira de Empresas de Identidade Digital (ABRID).

Serviço:
ECMSHOW - EXPO + CONFERENCE 2011
Data: 23 e 24 de maio
Local: Brasil 21 – Centro de Eventos e Convenções – Brasília
Horário: Das 8h às 17hs
Mais informações: www.ecmsh ow.com.br
Informações para a Imprensa
Fonte da Notícia
(11) 3539-8741/42
Contato
Cel. (011) 7681-0726
Cel. 8550-9182