Ir para conteúdo
Fórum Script Brasil
  • 0

[Ajuda] Ordenação de lista de dados por 2 campos


wilterson

Pergunta

Boa Tarde..
Estou desenvolvendo uma aplicação, e agora me bati com um problema que não estou conseguindo resolver.
é o seguinte: tenho uma página que será mostrado todas as pessoas cadastradas no sistema, a página mostrara as pessoas em blocos montados pelo while vindas do banco de dados.
o Código:

visualiza.php

                    <?php
                        require ('conecta.php');
                        //verifica a página atual caso seja informada na URL, senão atribui como 1ª página
                            $pagina_atual = (isset($_GET['pagina']))? $_GET['pagina'] : 1;
                     
                        //seleciona todos os itens da tabela
                            $cmd = "SELECT id, nome, celular, foto, email
                                    FROM cadastro";
                            $cadastros = mysql_query($cmd);
                            
                        //conta o total de itens
                            $total = mysql_num_rows($cadastros);
                       
                        //seta a quantidade de itens por página, neste caso, 10 itens
                            $registros = 15;
                       
                        //calcula o número de páginas arredondando o resultado para cima
                            $paginas = ceil($total/$registros);
                            
                        //variavel para calcular o início da visualização com base na página atual
                            $inicio = ($registros*$pagina_atual)-$registros;
                     
                        //seleciona os itens por página
                            $cmd = "SELECT
                                        id, nome, celular, foto, email, tipo, idade, cidade, estado
                                    FROM
                                        cadastro
                                    WHERE 
                                        nome LIKE '$filtro%' OR tipo like '$filtro%' or cidade like '$filtro%'
                                    ORDER BY $order ASC
                                    LIMIT $inicio,$registros";
                            $cadastros = mysql_query($cmd);
                            $total = mysql_num_rows($cadastros);
                            
                        //exibe os produtos selecionados
                            while ($row = mysql_fetch_array($cadastros)) {
                                $id = $row['id'];
                                $nome = $row['nome'];
                                $foto = $row['foto'];
                                $celular = $row['celular'];
                                $email = $row['email'];
                                $tipo = $row['tipo'];
                                $idade = $row['idade'];
                                $cidade = $row['cidade'];
                                $estado = $row['estado'];
                                
                                //BLOCO CONTENDO UM PERFIL
                                echo "<div class='vitrine col-xs-12'>
                                          <div class='foto col-xs-3'>
                                             <img alt='foto do perfil' title='foto perfil $nome' src='$foto' class='img-thumbnail'/>
                                          </div>
                                               
                                          <div class='col-xs-1'></div>
                                          
                                          <div class='wrapp'>
                                                <div class='infos col-xs-5'>
                                                    <div class='col-sm-12'>
                                                        <label class='nome'> $nome</label>
                                                    </div>
                                                    <div class='col-sm-12'>
                                                        <label>E-mail:</label> <span> $email</span>
                                                    </div>
                                                    <div class='col-sm-12'>
                                                        <label>Celular:</label> <span>$celular</span>
                                                    </div>
                                                    <div class='hidden'>
                                                        <input type='text' name='id' value='$id'>
                                                    </div>
                                                    <br/>
                                                    <div class='col-sm-12'>
                                                        <label>Idade:</label> <span class=''>$idade</span>
                                                    </div>
                                                    <div class='col-sm-12'>
                                                        <label>Cidade: </label> <span class=''>$cidade - $estado</span>
                                                    </div>
                                                    <div class='col-sm-12'>
                                                        <label>Classificação:</label> <span class='tipo'>$tipo</span>
                                                    </div>
                                                </div>
                                            </div>
                                            <div class='col-sm-3 centraliza'>                                                
                                                <a class='btn btn-lg button' href='perfil.php?id=$id'><span class='icon-search'></span> Ver Perfil </a>
                                            </div>
                                        </div>
                                        <div class='clearfix'></div>";
                            }
                            
                        //Exibe a paginação
                        echo "<div class='paginacao col-xs-12 row'>";
                            echo"<div class='centro'>";
                                //Primeira página e Anterior
                                if ($pagina_atual == 1){
                                    echo"<a class='btn btn-default ativo disabled'>Primeira</a>";
                                    echo"<a class='btn btn-default ativo disabled'>Anterior</a>";
                                }else{
                                    echo"<a href='?pagina=1&filtro=$filtro&order=$order' class='btn btn-default'>Primeira</a>";
                                    echo"<a href='?pagina=".($pagina_atual-1)."&filtro=$filtro&order=$order' class='btn btn-default'>Anterior</a>";
                                }
                                
                                if($pagina_atual>=5){
                                    echo" . . . ";
                                }
                                
                                // 3 Páginas antes
                                foreach(array_reverse(range($pagina_atual-1, $pagina_atual-3)) as $pagina){
                                    if ($pagina > 0){
                                        echo "<a href='?pagina=$pagina&filtro=$filtro&order=$order' class='btn btn-default'>$pagina</a>";
                                    }
                                }
                                
                                // Página Atual
                                echo"<a class='btn btn-default ativo'>$pagina_atual</a>";
                                
                                //3 Páginas depois da Página atual
                                foreach( range($pagina_atual+1, $pagina_atual+3) as $pagina){
                                    if ($pagina < ($paginas +1)){
                                        echo"<a href='?pagina=$pagina&filtro=$filtro&order=$order' class='btn btn-default'>$pagina</a>";
                                    }
                                }
                                
                                $limitePaginas = $paginas-4;
                                if($pagina_atual<=$limitePaginas){
                                    echo" . . . ";
                                }
                                
                                //'Próxima Página' e 'Ultima Página'
                                if ($pagina_atual == $paginas){
                                    echo"<a class='btn btn-default ativo disabled'>Próxima</a>";
                                    echo"<a class='btn btn-default ativo disabled'>Última</a>";
                                }else{
                                    echo"<a href='?pagina=".($pagina_atual+1)."&filtro=$filtro&order=$order' class='btn btn-default'>Próxima</a>";
                                    echo"<a href='?pagina=".($paginas)."&filtro=$filtro&order=$order' class='btn btn-default'>Última</a>";
                                }
                            echo"</div>";
                        echo "</div>";
                    ?>

A Página:

http://uploaddeimagens.com.br/imagens/1-png--1730 (não consegui posta-la aqui).

Continuando..

nessa pagina tenho botoes que fazem a ordenacao dos resultados por NOME, IDADE, CIDADE, ESTADO, TIPO DE PERFIL (a,b,c ou d)

o código dos botões de ordenação..

<div class="col-lg-2">
       <a href="?order=nome&filtro=<?php echo $filtro; ?>" class="btn btn-default"><span class="orderNome"><img src="img/sort14.png">Ordenar por Nome</span></a>

</div>
<div class="col-lg-2">
       <a href="?order=tipo&filtro=<?php echo $filtro; ?>" class="btn btn-default"><span class="orderTipo"><img src="img/sort14.png">Ordenar por Tipo</span></a>
</div>
<div class="col-lg-2">
       <a href="?order=idade&filtro=<?php echo $filtro; ?>" class="btn btn-default"><span class="orderIdade"><img src="img/sort14.png">Ordenar por Idade</span></a>
</div>
<div class="col-lg-2">
       <a href="?order=cidade&filtro=<?php echo $filtro; ?>" class="btn btn-default"><span class="orderCidade"><img src="img/sort14.png">Ordenar por Cidade</span></a>
</div>
<div class="col-lg-2">
       <a href="?order=estado&filtro=<?php echo $filtro; ?>" class="btn btn-default"><span class="orderEstado"><img src="img/sort14.png">Ordenar por Estado</span></a>
</div>

Passando via get a 'order' para a mesma página..

no inicio contem:

<?php
    //Foi informado a ordenação?
    $order = (isset($_GET['order'])) ? $_GET['order'] : 'id';


    //Foi informado o filtro?
    $filtro = (isset($_GET['filtro'])) ? $_GET['filtro'] : '';
?>

E depois desse mega texto, minha pequena dúvida..

Como faço para ordenar por mais de um botão?
Quero ordenar por idade e por tipo, por exemplo..
mas ele ordena por Idade OU por titulo. (devido ao método get que usei para passar a informacao de ordenacao)..

Se alguém puder me ajudar.. :D

Obrigado...

Página inteira:

<?php    //Foi informado a ordenação?
    $order = (isset($_GET['order'])) ? $_GET['order'] : 'id';


    //Foi informado o filtro?
    $filtro = (isset($_GET['filtro'])) ? $_GET['filtro'] : '';
?>
<!DOCTYPE html>
<html lang="pt">
    <head>
        <meta charset="utf-8">
        <title>Visualizar cadastros</title>
        <meta name="description" content="Visualizar cadastros do casting - Promova ideias">
        <meta name="author" content="Wilterson Garcia">
        <!-- CSS -->
        <link rel="stylesheet" href="css/vitrine.css"/>
        <link rel="stylesheet" href="css/bootstrap.css" />
        <!-- JS -->
        <script type="text/javascript" src="js/jquery.min.js"></script>
        <script>
            $(function(){
                $('.pesquisar').on("click", function(){
                    $('.searchbar').toggleClass('hidden');
                });
            });
        </script>
    </head>
    
    <body>
        <div class="page">
            <h1 class="text-center titulo">Pessoas Cadastradas</h1>
            <div class="container">
                <div class="primeiraLinha">
                    <div class="col-lg-2">
                        <a href="?order=nome&filtro=<?php echo $filtro; ?>" class="btn btn-default"><span class="orderNome"><img src="img/sort14.png">Ordenar por Nome</span></a>
                    </div>
                    <div class="col-lg-2">
                        <a href="?order=tipo&filtro=<?php echo $filtro; ?>" class="btn btn-default"><span class="orderTipo"><img src="img/sort14.png">Ordenar por Tipo</span></a>
                    </div>
                    <div class="col-lg-2">
                        <a href="?order=idade&filtro=<?php echo $filtro; ?>" class="btn btn-default"><span class="orderIdade"><img src="img/sort14.png">Ordenar por Idade</span></a>
                    </div>
                    <div class="col-lg-2">
                        <a href="?order=cidade&filtro=<?php echo $filtro; ?>" class="btn btn-default"><span class="orderCidade"><img src="img/sort14.png">Ordenar por Cidade</span></a>
                    </div>
                    <div class="col-lg-2">
                        <a href="?order=estado&filtro=<?php echo $filtro; ?>" class="btn btn-default"><span class="orderEstado"><img src="img/sort14.png">Ordenar por Estado</span></a>
                    </div>
                    <div class="col-lg-1">
                        <a class="icon-search2 btn btn-default pesquisar"></a>
                    </div>
                    <div class="col-lg-1">
                        <a href="visualiza.php" class="btn btn-default">Todos</a>
                    </div>
                    <div class="clearfix"></div>
                    <div class="col-lg-12 hidden searchbar">
                        <div class="centro">
                            <form action="?" method="get" class="form-horizontal" role="form">
                                <div class="col-lg-8 center-block">
                                    <input type="text" id="search" name="filtro" class="search form-control" placeholder="Buscar..." value="<?php echo $filtro ?>"/>
                                </div>
                                <div class="col-lg-4">
                                    <input type="submit" class="btn-pesquisar btn btn-default" value="Pesquisar"/> 
                                </div>
                                <div class="clearfix"></div>
                            </form>
                        </div>
                    </div>
                </div>
                <div class="clearfix"></div>
                <div class="info-order">
                    <p>Ordenando os resultados por <label><?php echo $order; ?></label></p>
                </div>
                    <?php
                        require ('conecta.php');
                        //verifica a página atual caso seja informada na URL, senão atribui como 1ª página
                            $pagina_atual = (isset($_GET['pagina']))? $_GET['pagina'] : 1;
                     
                        //seleciona todos os itens da tabela
                            $cmd = "SELECT id, nome, celular, foto, email
                                    FROM cadastro";
                            $cadastros = mysql_query($cmd);
                            
                        //conta o total de itens
                            $total = mysql_num_rows($cadastros);
                       
                        //seta a quantidade de itens por página, neste caso, 10 itens
                            $registros = 15;
                       
                        //calcula o número de páginas arredondando o resultado para cima
                            $paginas = ceil($total/$registros);
                            
                        //variavel para calcular o início da visualização com base na página atual
                            $inicio = ($registros*$pagina_atual)-$registros;
                     
                        //seleciona os itens por página
                            $cmd = "SELECT
                                        id, nome, celular, foto, email, tipo, idade, cidade, estado
                                    FROM
                                        cadastro
                                    WHERE 
                                        nome LIKE '$filtro%' OR tipo like '$filtro%' or cidade like '$filtro%'
                                    ORDER BY $order ASC
                                    LIMIT $inicio,$registros";
                            $cadastros = mysql_query($cmd);
                            $total = mysql_num_rows($cadastros);
                            
                        //exibe os produtos selecionados
                            while ($row = mysql_fetch_array($cadastros)) {
                                $id = $row['id'];
                                $nome = $row['nome'];
                                $foto = $row['foto'];
                                $celular = $row['celular'];
                                $email = $row['email'];
                                $tipo = $row['tipo'];
                                $idade = $row['idade'];
                                $cidade = $row['cidade'];
                                $estado = $row['estado'];
                                
                                //BLOCO CONTENDO UM PERFIL
                                echo "<div class='vitrine col-xs-12'>
                                          <div class='foto col-xs-3'>
                                             <img alt='foto do perfil' title='foto perfil $nome' src='$foto' class='img-thumbnail'/>
                                          </div>
                                               
                                          <div class='col-xs-1'></div>
                                          
                                          <div class='wrapp'>
                                                <div class='infos col-xs-5'>
                                                    <div class='col-sm-12'>
                                                        <label class='nome'> $nome</label>
                                                    </div>
                                                    <div class='col-sm-12'>
                                                        <label>E-mail:</label> <span> $email</span>
                                                    </div>
                                                    <div class='col-sm-12'>
                                                        <label>Celular:</label> <span>$celular</span>
                                                    </div>
                                                    <div class='hidden'>
                                                        <input type='text' name='id' value='$id'>
                                                    </div>
                                                    <br/>
                                                    <div class='col-sm-12'>
                                                        <label>Idade:</label> <span class=''>$idade</span>
                                                    </div>
                                                    <div class='col-sm-12'>
                                                        <label>Cidade: </label> <span class=''>$cidade - $estado</span>
                                                    </div>
                                                    <div class='col-sm-12'>
                                                        <label>Classificação:</label> <span class='tipo'>$tipo</span>
                                                    </div>
                                                </div>
                                            </div>
                                            <div class='col-sm-3 centraliza'>                                                
                                                <a class='btn btn-lg button' href='perfil.php?id=$id'><span class='icon-search'></span> Ver Perfil </a>
                                            </div>
                                        </div>
                                        <div class='clearfix'></div>";
                            }
                            
                        //Exibe a paginação
                        echo "<div class='paginacao col-xs-12 row'>";
                            echo"<div class='centro'>";
                                //Primeira página e Anterior
                                if ($pagina_atual == 1){
                                    echo"<a class='btn btn-default ativo disabled'>Primeira</a>";
                                    echo"<a class='btn btn-default ativo disabled'>Anterior</a>";
                                }else{
                                    echo"<a href='?pagina=1&filtro=$filtro&order=$order' class='btn btn-default'>Primeira</a>";
                                    echo"<a href='?pagina=".($pagina_atual-1)."&filtro=$filtro&order=$order' class='btn btn-default'>Anterior</a>";
                                }
                                
                                if($pagina_atual>=5){
                                    echo" . . . ";
                                }
                                
                                // 3 Páginas antes
                                foreach(array_reverse(range($pagina_atual-1, $pagina_atual-3)) as $pagina){
                                    if ($pagina > 0){
                                        echo "<a href='?pagina=$pagina&filtro=$filtro&order=$order' class='btn btn-default'>$pagina</a>";
                                    }
                                }
                                
                                // Página Atual
                                echo"<a class='btn btn-default ativo'>$pagina_atual</a>";
                                
                                //3 Páginas depois da Página atual
                                foreach( range($pagina_atual+1, $pagina_atual+3) as $pagina){
                                    if ($pagina < ($paginas +1)){
                                        echo"<a href='?pagina=$pagina&filtro=$filtro&order=$order' class='btn btn-default'>$pagina</a>";
                                    }
                                }
                                
                                $limitePaginas = $paginas-4;
                                if($pagina_atual<=$limitePaginas){
                                    echo" . . . ";
                                }
                                
                                //'Próxima Página' e 'Ultima Página'
                                if ($pagina_atual == $paginas){
                                    echo"<a class='btn btn-default ativo disabled'>Próxima</a>";
                                    echo"<a class='btn btn-default ativo disabled'>Última</a>";
                                }else{
                                    echo"<a href='?pagina=".($pagina_atual+1)."&filtro=$filtro&order=$order' class='btn btn-default'>Próxima</a>";
                                    echo"<a href='?pagina=".($paginas)."&filtro=$filtro&order=$order' class='btn btn-default'>Última</a>";
                                }
                            echo"</div>";
                        echo "</div>";
                    ?>
            </div>
            <!--  RODAPÉ  -->
            <?php
                require('footer.php');
            ?>
            <!--  /RODAPÉ  -->
        </div>
    </body>
</html>
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...