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

(Resolvido) Ordenar tabela php


dinohills

Pergunta

Bom pessoal estou montando uma agenda telefônica e estou tentando ordenar as tabelas pela coluna quando o usuário clica no cabeçalho da coluna.

Eu consegui isso usando um script em java desde site http://tablesorter.com/docs/ mas o que acontece é que eu uso o while pra imprimir a tabela puxando os dados do banco e com o while não ordena.

Vou postar o código em php pra vocês terem uma ideia.

<html>
<head>
<title>Untitled Document</title>
<style type="text/css">

table#tabela
tr:hover {
background-color: #CCCCCC;
}
#atualizar {
background: url(fundo_div_pesquisa.jpg);
background-repeat:repeat-x;
}
table {
            text-align: left;
            font-size: 12px;
            font-family: verdana;
            background: #c0c0c0;
        }
        table thead  {
            cursor: pointer;
        }
                tr:hover {
                background-color: #CCCCCC;
                }
        table thead tr,
        table tfoot tr {
            background: #c0c0c0;
        }
        table tbody tr {
            background: #f0f0f0;
        }
        td, th {
            border: 1px solid white;
        }
</style>
</head>
<body>
<?php
     include "conexao_banco.php";
?>
<form id="form1" name="form1" method="post" action="">
<table cellspacing="1" cellpadding="2" id="tabela">
<thead>
    <tr>
    <th scope="col">Sel.</th> 
    <th scope="col">Nome</th>
    <th scope="col">Telefone 01</th>
    <th scope="col">Telefone 02</th>
    <th scope="col">Telefone 03</th>
    <th scope="col">Telefone 04</th>
    </tr>
</thead>
<?
// Fazendo uma consulta SQL e retornando os resultados em uma tabela HTML
$query = "SELECT * from contatos";
$sql = mysql_query($query,$conecta);
$row = mysql_num_rows($sql);
while ($row = mysql_fetch_array($sql)) {
$id = $row['id_contato'];
$nome = $row['nome'];
$telefone01 = $row['telefone01'];
$telefone02 = $row['telefone02'];
$telefone03 = $row['telefone03'];
$telefone04 = $row['telefone04'];
?>
<tbody>
<tr> 
    <td><div align="center"><input type="radio" name="marcado" id="radio" value="<? echo $id;?>" /></div>
    <td><? echo $nome; ?></td>
    <td><? echo $telefone01; ?></td>
    <td><? echo $telefone02; ?></td>
    <td><? echo $telefone03; ?></td>
    <td><? echo $telefone04; ?></td>
</tr>
</tbody>
<?
}
?>
</table> 
    <input type="submit" name="button" id="atualizar" value="Atualizar" />
</form>
</body>
</html>

Se for necessário mudar como eu gero a tabela pode fala que eu faço de outra maneira.

Obrigado.

Editado por Jonathan Queiroz
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Não etendi muito bem ... mas se quiser ordernar a melhor maneira é usando a SQL da colsulta do seu Banco:

http://dev.mysql.com/doc/refman/4.1/pt/ord...timization.html

No caso caso suponhamos tal condição

SELECT * FROM contatos ORDER BY nome ASC;

Isso para com os dados da tela seje ordernado pelo nome em orderm alfabetica ... mas assim olhando aquele código de JQuery era par ter resolvido acredito que você não esa sabendo trabalhar com ele :P

Editado por SK15
Link para o comentário
Compartilhar em outros sites

  • 0

então SK15 vou postar o código usando o script com jquery

<html>
<head>
<title>Untitled Document</title>

<!-- script para ordenar tabela -->

&lt;script type="text/javascript" src="jquery.js"></script> 
&lt;script type="text/javascript" src="jquery.tablesorter.js"></script> 
&lt;script type="text/javascript">
$(document).ready(function()
    {
        $("#tabela").tablesorter( {sortList: [[0,0], [1,0]]} );
    }
);

</script>

</head>

<body>
<?php
     include "conexao_banco.php";
?>



<form id="form1" name="form1" method="post" action="">
<table cellspacing="1" cellpadding="2" id="tabela">
<thead>
    <tr>
    <th scope="col">Sel.</th> 
    <th scope="col">Nome</th>
    <th scope="col">Telefone 01</th>
    <th scope="col">Telefone 02</th>
    <th scope="col">Telefone 03</th>
    <th scope="col">Telefone 04</th>
    </tr>
</thead>
<?
// Fazendo uma consulta SQL e retornando os resultados em uma tabela HTML
$query = "SELECT * from contatos";
$sql = mysql_query($query,$conecta);
$row = mysql_num_rows($sql);
while ($row = mysql_fetch_array($sql)) {
$id = $row['id_contato'];
$nome = $row['nome'];
$telefone01 = $row['telefone01'];
$telefone02 = $row['telefone02'];
$telefone03 = $row['telefone03'];
$telefone04 = $row['telefone04'];
?>
<tbody>
<tr> 
    <td><div align="center"><input type="radio" name="marcado" id="radio" value="<? echo $id;?>" /></div>
    <td><? echo $nome; ?></td>
    <td><? echo $telefone01; ?></td>
    <td><? echo $telefone02; ?></td>
    <td><? echo $telefone03; ?></td>
    <td><? echo $telefone04; ?></td>
</tr>
</tbody>
<?
}
?>
</table> 
    <input type="submit" name="button" id="atualizar" value="Atualizar" />
</form>
</body>
</html>

Estou fazendo desse jeito ai e ele não ordena, mas se eu uso ele em uma tabela normal sem usa o while ai ordena beleza.

Obs: tentei usar este exemplo e não deu certo também http://www.guiadohardware.net/comunidade/d...-tabela/911246/

Editado por dinohills
Link para o comentário
Compartilhar em outros sites

  • 0
coloca o ASC conforme o SK15 falou que ordena sim

no seu esta:

$query = "SELECT * from contatos";

coloque

$query = "SELECT * from contatos order by nome ASC";

:P eheehheh dessa eu sei, mas o que eu quero é que o usuário clique na coluna e ela seja ordenada conforme a coluna que ele clicou entende.

Link para o comentário
Compartilhar em outros sites

  • 0

Depois de ficar quebrando a cabeça achei a resposta o erro está no próprio código como escrevi.

Antes montava a tabela assim:

<table cellspacing="1" cellpadding="2" id="tabela">

<thead>

<tr>

<th scope="col">Sel.</th>

<th scope="col">Nome</th>

<th scope="col">Telefone 01</th>

<th scope="col">Telefone 02</th>

<th scope="col">Telefone 03</th>

<th scope="col">Telefone 04</th>

</tr>

</thead>

<?

// Fazendo uma consulta SQL e retornando os resultados em uma tabela HTML

$query = "SELECT * from contatos";

$sql = mysql_query($query,$conecta);

$row = mysql_num_rows($sql);

while ($row = mysql_fetch_array($sql)) {

$id = $row['id_contato'];

$nome = $row['nome'];

$telefone01 = $row['telefone01'];

$telefone02 = $row['telefone02'];

$telefone03 = $row['telefone03'];

$telefone04 = $row['telefone04'];

?>

<tbody>

<tr>

<td><div align="center"><input type="radio" name="marcado" id="radio" value="<? echo $id;?>" /></div>

<td><? echo $nome; ?></td>

<td><? echo $telefone01; ?></td>

<td><? echo $telefone02; ?></td>

<td><? echo $telefone03; ?></td>

<td><? echo $telefone04; ?></td>

</tr>

</tbody>

<?

}

?>

</table>

Quando que o certo é:

<table cellspacing="1" cellpadding="2" id="tabela">

<thead>

<tr>

<th scope="col">Sel.</th>

<th scope="col">Nome</th>

<th scope="col">Telefone 01</th>

<th scope="col">Telefone 02</th>

<th scope="col">Telefone 03</th>

<th scope="col">Telefone 04</th>

</tr>

</thead>

<tbody>

<?

// Fazendo uma consulta SQL e retornando os resultados em uma tabela HTML

$query = "SELECT * from contatos";

$sql = mysql_query($query,$conecta);

$row = mysql_num_rows($sql);

while ($row = mysql_fetch_array($sql)) {

$id = $row['id_contato];

$nome = $row['nome'];

$telefone01 = $row['telefone01'];

$telefone02 = $row['telefone02'];

$telefone03 = $row['telefone03'];

$telefone04 = $row['telefone04'];

?>

<tr>

<td><div align="center"><input type="radio" name="marcado" id="radio" value="<? echo $id;?>" /></div>

<td><? echo $nome; ?></td>

<td><? echo $telefone01; ?></td>

<td><? echo $telefone02; ?></td>

<td><? echo $telefone03; ?></td>

<td><? echo $telefone04; ?></td>

</tr>

<?

}

?>

</tbody>

</table>

Reparem que iniciei a <tbody> antes dos comandos SQL e fechei o laço do while antes do </tbody> por isso o script não ordenava quando se clicava na coluna.

Editado por dinohills
Link para o comentário
Compartilhar em outros sites

  • 0

então crie um link e coloque a ordem clicando nele pega a opção por get e ordena para o que quer

<a href='paginalistagem.php?ord=1'>Nome</a>

<a href='paginalistagem.php?ord=2'>data</a>

no inicio do php checa se foi recebido o ord e o que vai fazer na listagem

$ord = $_GET["ord"];

switch( $ord ) {

case "1":

$complemento.= " order by nome ASC";

break;

case "2":

$complemento.= " order by data DESC";

break;

default:

$complemento.= " order by data Desc";

break;

}

e no seu sql coloque

$query = "SELECT * from contatos $complemento";

Link para o comentário
Compartilhar em outros sites

  • 0
então crie um link e coloque a ordem clicando nele pega a opção por get e ordena para o que quer

<a href='paginalistagem.php?ord=1'>Nome</a>

<a href='paginalistagem.php?ord=2'>data</a>

no inicio do php checa se foi recebido o ord e o que vai fazer na listagem

$ord = $_GET["ord"];

switch( $ord ) {

case "1":

$complemento.= " order by nome ASC";

break;

case "2":

$complemento.= " order by data DESC";

break;

default:

$complemento.= " order by data Desc";

break;

}

e no seu sql coloque

$query = "SELECT * from contatos $complemento";

Vou tentar este seu método ai depois eu posto aqui se deu certo. vlw :rolleyes:

Link para o comentário
Compartilhar em outros sites

  • 0

Oi galera,
Seguinte, estou um usando tablesorter da seguinte forma:

$(function() {
$(“#myTable”).tablesorter();

});

funciona bleza, mas nessa tabela, eu tenho uma coluna que dá OK pra mudar o status de um registro, só que quando eu clico, perco a referencia do registro onde estava posicionado, como eu poderia corrigir isso baseado nessa rotina acima. já tentei varios foruns e nada
Obrigado..

Link para o comentário
Compartilhar em outros sites

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,3k
×
×
  • Criar Novo...