[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Paginar resultados em html
From: |
Fernando Luizao |
Subject: |
Re: [shell-script] Paginar resultados em html |
Date: |
Sat, 17 Jan 2009 05:36:45 -0800 (PST) |
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> escreveu:
De: Alexandre Gorges <address@hidden>
Assunto: [shell-script] Paginar resultados em html
Para: address@hidden
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]