shell-script-pt
[Top][All Lists]
Advanced

[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&atilde;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>&nbsp;</ 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&aacute; 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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]