Ordenar dados por data ( com paginação )
por web 7831 em 06 Jun 2007 08:12 am
Esse script permite retornar dados de uma consulta sql por data.
Ex.:
id data
2 30/01/2007
3 04/04/2007
4 07/03/2007
5 07/03/2007
Note que 4 e 5 tem a mesma data.
O objetivo é retornar os dados da seguinte forma:
04/04/2007
3
07/03/2007
5
4
30/01/2007
2
Esse tipo de organização é bom para sistema de notícias. vejamos o código.
Obs.: Para uma versão sem paginação, acesse:
viewtopic.php?t=776
<table border=0>
<tr>
<td>campo</td>
</tr>
<?php
$dbhost="localhost"; /* servidor */
$dbuser=""; /* usuário do banco de dados */
$dbpasswd=""; /* senha do banco de dados */
$dbname=""; /* nome do banco de dados */
/* abaixo abrimos a conexão com os dados acima */
$conexao = @mysql_connect($dbhost, $dbuser, $dbpasswd) or die ("não foi possível a conexão, verifique os dados.");
$db = @mysql_select_db($dbname) or die ("não foi possível o acesso ao banco de dados $dbname.");
/* nome da tabela onde está os nosso valores */
$tabela="tabelatal";
/* pegamos todos os dados da tabela ordenando em ordem crescente por nome */
$sql=mysql_query("SELECT DISTINCT(data) FROM $tabela ORDER BY data ASC");
$total=mysql_num_rows($sql);
/* declaração da página inicial */
if($_GET['pagina']=="") {
$pagina="1";
} else {
$pagina=$_GET['pagina'];
}
/* quantos registros por página */
$maximo="1";
/* calcula o registro inicial */
$inicio=$pagina-1;
$inicio=$maximo*$inicio;
/* base do script */
$query=mysql_query("SELECT DISTINCT(data) FROM $tabela ORDER BY data ASC LIMIT $inicio,$maximo");
/* início da mostragem de dados */
while($dados=mysql_fetch_array($query)) {
$data = $dados['data'];
?>
<?php
echo "<tr>";
echo "<td>$data</td>";
echo "</tr>";
/ * base dos dados de acordo com a data */
$selec2 = "SELECT * FROM $tabela WHERE data='$data' ORDER BY id DESC";
$exec2 = mysql_query($selec2, $conexao) or die(mysql_error());
while($dados2=mysql_fetch_array($exec2)) {
$id = $dados2['id'];
echo "<tr><td>$id</td></tr>";
}
?>
<?php
}
?>
</table>
<?php
/* calcula a página anterior */
$menos=$pagina-1;
/* calcula a página posterior */
$mais=$pagina+1;
/* calculo da mostragem das páginas */
$p_ini=$mais-1;
$p_ini=$maximo*$p_ini;
/* início da mostragem das páginas */
$p_query=mysql_query("SELECT DISTINCT(data) FROM $tabela ORDER BY data ASC LIMIT $p_ini,$maximo");
$p_total=mysql_num_rows($p_query);
/* mostragem do página anterior e posterior */
if($menos>0) {
echo "<a href=\"?pagina=$menos\">anterior(es)</a> ";
} if($p_total>0) {
echo "<a href=\"?pagina=$mais\">proxima(s)</a>";
}
?>
<?php
/* resumo do armazenado no bd */
print <<< HERE
<center>
Existe $total dados nesse bd.
<br>
Estamos mostrando $maximo por página.
</center>
HERE;
?>
<?php
mysql_close($conexao);
?>
Dúvida + Resposta = Conhecimento
Conhecimento * Todos = Soluções
Se souber, reparta com outros
5 avisos desativam a conta do usuário, leia nas regras do fórumContato para orçamento de scripts e outros:
codigosnaweb HOTMAIL Siga as regras do fórumSiga as Dicas de uso