[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Paginar resultados em html
From: |
Alexandre Gorges |
Subject: |
Re: [shell-script] Paginar resultados em html |
Date: |
Sat, 17 Jan 2009 14:02:36 -0200 |
User-agent: |
Microsoft-Entourage/12.15.0.081119 |
Obrigado Fernando, já deu uma luz por onde comecar.
Irei fazer tentativas aqui, não compreendi muito bem como montar os links
para as páginas. Mas irei ficar fazendo testes.
[]'s
Alexandre Gorges
http://algorges.blogspot.com
MSN/Gtalk/iCHAT/Skype/Jabber: address@hidden
From: Fernando Luizao <address@hidden>
Reply-To: Lista Shell Script <address@hidden>
Date: Sat, 17 Jan 2009 05:36:45 -0800 (PST)
To: Lista Shell Script <address@hidden>
Subject: Re: [shell-script] Paginar resultados em html
Da forma que seu script está, vc vai precisar mudar um pouco. Primeiro
porque vc está pegando todos os registros de uma vez (a maior causa da
lentidão). Em vez de fazer um
SELECT * FROM ...
Você vai precisar saber a quantidade de registros da tabela (use COUNT(*)
para isso). Sabendo a quantidade total de registros, vc define a quantidade
de registros por paginá que você quer e trabalha com o LIMIT para buscar
apenas os registros da página desejada. A sintaxe para usar o LIMIT é a
seguinte:
SELECT * FROM tabela LIMIT inicio, quantidade_por_pagina
Para calcular o início, é simples:
inicio=(numero_pagina - 1) * quantidade_por_pagina
Você vai precisar passar o número da página pela url. Caso o número da
página não seja passado, inicialize inicio com 0.
Essa é toda a lógica que vc precisa para buscar os registros do banco.
Depois é montar as urls com os links para as páginas.
Espero que ajude, ou pelo menos dê uma luz. Qualquer dúvida estamos aí.
Abraços
Fernando
--- Em sex, 16/1/09, Alexandre Gorges <address@hidden
<mailto:algorges%40gmail.com> > escreveu:
De: Alexandre Gorges <address@hidden <mailto:algorges%40gmail.com> >
Assunto: [shell-script] Paginar resultados em html
Para: address@hidden
<mailto:shell-script%40yahoogrupos.com.br>
Data: Sexta-feira, 16 de Janeiro de 2009, 23:45
Boa noite pessoal, programo com shell a bastante tempo e de uns tempos pra
cá tenho me aprofundado ainda mais.
Possuo um sistema de gestão de servidores va web, interagindo com o servidor
via shell.
Até hoje tenho feito praticamente tudo com o shell. Uso bem pouco do PHP,
apenas para chamar o script shell.
Acontece que estou com um problema que é fazer uma listagem ser dividida em
páginas. Como se fosse um resultado de busca
do google. Meu desejo é dividir em páginas com 20 resultados.
O meu script hoje consulta no mysql e monta o html. Funciona perfeitamente,
mas existe alguns servidores que possuem muitos emails, e o html
fica gigante. Visualizando o meu script abaixo, é possível via shell criar
essas páginas?
Email_listatodos)
# converte data de aaaa-mm-dd para dia/mes/ano
data_mysql-to- brasil(){
echo "$*" | sed
's,\([0-9]\{ 4\}\)-\([ 0-9][0-9] \)-\([0-9] [0-9]\),\ 3/\2/\1,'
}
# verifica se o email esta ativo
esta_ativo() {
if [ "$*" = "1" ]; then
echo "Sim"
else
echo "Não"
fi
}
#divide a quota por 1024
divide_quota( ){
echo $(( $* / 1024 ))
}
# Executa a pesquisa no banco do postfix
S=$(mysql -u server -e "SELECT * FROM mailbox order by
username" postfix)
# a procura retornou algum registro ?!
[ "$S" ] || { echo "Sem registro";exit; }
# colocar um TAB como IFS
IFS="$(echo -e '\t')"
# Apaga a primeira linha, ela contem o nome dos campos
S=$(echo "$S" | sed '1d')
echo "<p> </ p>"
echo "<table width=\"335\ " height=\"49\ " border=\"0\"
align=\"center\ " cellpadding= \"0\" cellspacing= \"0\">"
echo " <tr>"
echo " <th height=\"15\ " colspan=\"2\ "
bordercolor= \"#000000\ " bgcolor=\"#BABABA\ " class=\"f01\ "
scope=\"col\ ">Usuá rios do
Email</th>"
echo " </tr>"
# coloca um espaco em branco entre TABs repetidos (\t\t)
echo "$S" | sed ":a;s/\(`echo -e '\t'`\)\(\1\ )/\1 \2/;ta" |
\
while read username password name maildir quota domain
created modified active relay; do
echo " <tr>"
echo " <th width=\"97\" height=\"68\ " valign=\"top\ "
class=\"f02\ " scope=\"col\ "><div align=\"left\ ">"
echo " Nome:<br />"
echo " Email:<br />"
echo " Quota:<br />"
echo " Criado em:<br />"
echo " Ativo:<br />"
echo " </div><div align=\"left\ "></div>< /th>"
echo " <th width=\"285\ " valign=\"top\ " class=\"f02\ "
scope=\"col\ ">"
echo " <div align=\"right\ ">"
echo " $name<br />"
echo " $username<br />"
echo " $(divide_quota $quota) MB<br />"
echo " $(data_mysql- to-brasil $created)<br />"
echo " $(esta_ativo $active)<br />"
echo " </div></th>"
done
echo "</tr></table> "
;;
Qualquer ajuda ficarei muito grato.
[]'s
Alexandre Gorges
http://algorges. blogspot. com
MSN/Gtalk/iCHAT/ Skype/Jabber: algorges@gmail. com
[As partes desta mensagem que não continham texto foram removidas]
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com
[As partes desta mensagem que não continham texto foram removidas]
[As partes desta mensagem que não continham texto foram removidas]