Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Maurilio Campos

[Resolvido] Exibir resultado por ordem numérica

Recommended Posts

OLá, galera... É meu primeiro post e já venho com uma dúvida...

Tenho um sistema instalado que mostra os aniversariantes listados por mês, no site: http://www.yupfestas...ersariantes.php

 

Gostaria de listar os aniversariantes pela ordem de DATA, dentro das tabelas dos meses...

Tá mostrando de forma aleatória os dias...

 

Eis o código... Agradeco qq ajuda... :-)

 

===================================================================================================================

<? include "dbconfig.php"?>
<html>
<head>
<title>Aniversariantes</title>
<link href="estilo.css" rel="stylesheet" type="text/css">
</head>
<body>

<? if ($_POST[acao] == "adicionar") {
mysql_query("INSERT INTO aniversariantes (aniversariante,dia,mes,email) VALUES ('$_POST[form_nome]','$_POST[form_dia]','$_POST[form_mes]','$_POST[form_email]')");
echo "<p align=center>Aniversário cadastrado com sucesso!</p>";
} ?> <table border="0" width="100%">
<tr>
	<td bgcolor="#EAEAEA"><b>Janeiro</b></td>
</tr>
<tr>
	<td>
<? $sql = mysql_query("SELECT * FROM aniversariantes WHERE mes=1");
while ($coluna = mysql_fetch_array($sql)) { 
$aniversariantes.= "$coluna[dia] - $coluna[aniversariante]<br>";
} echo substr($aniversariantes,0,-4); $aniversariantes = ""; ?></td>
</tr>
<tr>
	<td bgcolor="#EAEAEA"><b>Fevereiro</b></td>
</tr>
<tr>
	<td><? $sql = mysql_query("SELECT * FROM aniversariantes WHERE mes=2");
while ($coluna = mysql_fetch_array($sql)) { 
$aniversariantes.= "$coluna[dia] - $coluna[aniversariante]<br>";
} echo substr($aniversariantes,0,-4); $aniversariantes = ""; ?></td>
</tr>
<tr>
	<td bgcolor="#EAEAEA"><b>Março</b></td>
</tr>
<tr>
	<td height="18"><? $sql = mysql_query("SELECT * FROM aniversariantes WHERE mes=3");
while ($coluna = mysql_fetch_array($sql)) { 
$aniversariantes.= "$coluna[dia] - $coluna[aniversariante]<br>";
} echo substr($aniversariantes,0,-4); $aniversariantes = ""; ?></td>
</tr>
<tr>
	<td bgcolor="#EAEAEA"><b>Abril</b></td>
</tr>
<tr>
	<td><? $sql = mysql_query("SELECT * FROM aniversariantes WHERE mes=4");
while ($coluna = mysql_fetch_array($sql)) { 
$aniversariantes.= "$coluna[dia] - $coluna[aniversariante]<br>";
} echo substr($aniversariantes,0,-4); $aniversariantes = ""; ?></td>
</tr>
<tr>
	<td bgcolor="#EAEAEA"><b>Maio</b></td>
</tr>
<tr>
	<td><? $sql = mysql_query("SELECT * FROM aniversariantes WHERE mes=5");
while ($coluna = mysql_fetch_array($sql)) { 
$aniversariantes.= "$coluna[dia] - $coluna[aniversariante]<br>";
} echo substr($aniversariantes,0,-4); $aniversariantes = ""; ?></td>
</tr>
<tr>
	<td bgcolor="#EAEAEA"><b>Junho</b></td>
</tr>
<tr>
	<td><? $sql = mysql_query("SELECT * FROM aniversariantes WHERE mes=6");
while ($coluna = mysql_fetch_array($sql)) { 
$aniversariantes.= "$coluna[dia] - $coluna[aniversariante]<br>";
} echo substr($aniversariantes,0,-4); $aniversariantes = ""; ?></td>
</tr>
<tr>
	<td bgcolor="#EAEAEA"><b>Julho</b></td>
</tr>
<tr>
	<td><? $sql = mysql_query("SELECT * FROM aniversariantes WHERE mes=7");
while ($coluna = mysql_fetch_array($sql)) { 
$aniversariantes.= "$coluna[dia] - $coluna[aniversariante]<br>";
} echo substr($aniversariantes,0,-4); $aniversariantes = ""; ?></td>
</tr>
<tr>
	<td bgcolor="#EAEAEA"><b>Agosto</b></td>
</tr>
<tr>
	<td><? $sql = mysql_query("SELECT * FROM aniversariantes WHERE mes=8");
while ($coluna = mysql_fetch_array($sql)) { 
$aniversariantes.= "$coluna[dia] - $coluna[aniversariante]<br>";
} echo substr($aniversariantes,0,-4); $aniversariantes = ""; ?></td>
</tr>
<tr>
	<td bgcolor="#EAEAEA"><b>Setembro</b></td>
</tr>
<tr>
	<td><? $sql = mysql_query("SELECT * FROM aniversariantes WHERE mes=9");
while ($coluna = mysql_fetch_array($sql)) { 
$aniversariantes.= "$coluna[dia] - $coluna[aniversariante]<br>";
} echo substr($aniversariantes,0,-4); $aniversariantes = ""; ?></td>
</tr>
<tr>
	<td bgcolor="#EAEAEA"><b>Outubro</b></td>
</tr>
<tr>
	<td><? $sql = mysql_query("SELECT * FROM aniversariantes WHERE mes=10");
while ($coluna = mysql_fetch_array($sql)) { 
$aniversariantes.= "$coluna[dia] - $coluna[aniversariante]<br>";
} echo substr($aniversariantes,0,-4); $aniversariantes = ""; ?></td>
</tr>
<tr>
	<td bgcolor="#EAEAEA"><b>Novembro</b></td>
</tr>
<tr>
	<td><? $sql = mysql_query("SELECT * FROM aniversariantes WHERE mes=11");
while ($coluna = mysql_fetch_array($sql)) { 
$aniversariantes.= "$coluna[dia] - $coluna[aniversariante]<br>";
} echo substr($aniversariantes,0,-4); $aniversariantes = ""; ?></td>
</tr>
<tr>
	<td bgcolor="#EAEAEA"><b>Dezembro</b></td>
</tr>
<tr>
	<td><? $sql = mysql_query("SELECT * FROM aniversariantes WHERE mes=12");
while ($coluna = mysql_fetch_array($sql)) { 
$aniversariantes.= "$coluna[dia] - $coluna[aniversariante]<br>";
} echo substr($aniversariantes,0,-4); $aniversariantes = ""; ?></td>
</tr>
</table>
<p>
<script language="Javascript">
function critica()
{
if (document.form1.form_nome.value == "")
{ alert("Campo Obrigatório: NOME"); document.form1.form_nome.focus(); return (false); }
return (true);
}
</script>
</p>
</body>
</html>
<? mysql_close(); ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Maurilio,

 

Teoricamente, tudo o que você precisaria fazer seria ordenar pelo mês e pelo dia, contudo, seu código possui alguns problemas:

 

1. Marcação incorreta, se é uma lista de aniversariantes, utilize a marcação de lista (UL, OL)

2. Várias consultas redundantes, isso causará, inevitavelmente, um aumento de tráfego entre a aplicação e o servidor de banco de dados e um baixo desempenho.

 

A consulta deveria ser:

 

SELECT `aniversariante`,`mes`,`dia` FROM `aniversariantes` ORDER BY `mes`,`dia`;

 

Dessa forma, os dados serão listados primeiro pelo mês, depois pelo dia, trazendo o resultado esperado, contudo, como existe alguns erros no seu código, vou ilustrar uma situação que trará os resultados de uma forma mais correta:

 

<html>
<head>
	<title>Aniversariantes</title>
	<style type="text/css">
		*,html {
			margin		: 0px;
			padding		: 0px;
			font-family	: Arial, Helvitica;
			list-style	: none;
		}

		h2.month {
			display		: block;
			width		: 150px;
			background	: #EAEAEA;
		}
	</style>
</head>
<body>
	<h1>Aniversariantes</h1>

	<?php
	$pdo = new PDO( 'mysql:host=127.0.0.1;dbname=nome_do_banco' , 'user' , 'pswd' );
	$pdo->query( 'SET lc_time_names = "pt_BR";' );
	$stm = $pdo->query( 'SELECT `aniversariante`,`dia`,MONTHNAME( MAKEDATE( 2000 , 28 * `mes` ) ) AS `mes` FROM `aniversariantes` AS `a` ORDER BY `a`.`mes`,`a`.`dia`;' );
	$mes = null;

	foreach ( $stm->fetchAll( PDO::FETCH_OBJ ) as $row ){
		if ( $row->mes != $mes ){
			if ( !is_null( $mes ) ) echo '</ul>';

			echo '<h2 class="month">' , ucfirst( $row->mes ) , '</h2>';
			echo '<ul>';

			$mes = $row->mes;
		}

		echo '<li>' , $row->dia , ' - ' , $row->aniversariante , '</li>';
	}

	if ( !is_null( $mes ) ) echo '</ul>';
	?>
</body>
</html>

 

Dessa forma, o HTML gerado será:

<html>
<head>
	<title>Aniversariantes</title>
	<style type="text/css">
		*,html {
			margin		: 0px;
			padding		: 0px;
			font-family	: Arial, Helvitica;
			list-style	: none;
		}

		h2.month {
			display		: block;
			width		: 150px;
			background	: #EAEAEA;
		}
	</style>
</head>
<body>
	<h1>Aniversariantes</h1>

	<h2 class="month">Janeiro</h2>
	<ul>
		<li>1 - Teste 1</li>
		<li>4 - Outro</li>
	</ul>

	<h2 class="month">Junho</h2>
	<ul>
		<li>4 - Mais um</li>
	</ul>

	<h2 class="month">Julho</h2>
	<ul>
		<li>5 - Testando</li>
		<li>7 - teste</li>
	</ul>

	<h2 class="month">Setembro</h2>
	<ul>
		<li>5 - Neto</li>
	</ul>
</body>
</html>

 

Agora é só trabalhar o CSS para que o resultado visual seja o esperado.

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo João batista,

nem sei como agradecer sua ajuda... O resultado ficou como eu esperava...

http://www.yupfestas.com.br/aniversariantes/aniversariantes.php

 

Abraços..

 

Agora sim;;;; link correto:

http://www.yupfestas.com.br/aniversariantes/aniversariantes.php

 

 

 

 

 

 

Amigo João batista,

nem sei como agradecer sua ajuda... O resultado ficou como eu esperava...

http://www.yupfestas.com.br/aniversariantes/aniversariantes.php

 

Abraços..

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.