Jump to content

Datas de aniversários


Go to solution Solved by HappyHippyHippo,

Recommended Posts

Posted

Boa noite,

Tenho uma dúvida relacionada com um sistemas de aniversários.

Tabela de base de dados:

ID

Nome

Aniversario

Imagem

Neste momento o sistema que desenhei utiliza o seguinte código php:

<?php
include ('secure/bd/init.php');

$date = date("Y-m-d");
$month_last_date = date("Y-m-t", strtotime($date));

$sql="SELECT * FROM aniversarios WHERE Aniversario >= CURRENT_DATE() AND Aniversario <= '$month_last_date'";
$resultado = $conn->query($sql) or die("Erro : " . $conn->error);

while ($reg = mysqli_fetch_array($resultado)) {
?>
<div style="text-align: center; margin-bottom: 2%;">
 <h2><?php echo $reg['Nome'];  ?></h2>
 <?php if ($reg['Imagem']) { echo '<img src="images/' . $reg['Imagem'] . '""/>'; }?>
 <p><?php echo $reg['Funcao'];  ?></p>
 <p><?php echo $reg['Escalao'];  ?></p>
 <p><?php echo $reg['Aniversario'];  ?></p>
</div>
<?php
  }
?>

O problema é que desta forma só são mostradas as entradas que tenham como data de aniversário uma data entre o dia actual e o último dia do mês.

Na realidade o que eu necessitava é que fosse retornadas as entradas da base de dados em que o dia e o mês da data de aniversário (ex: 08-06-1990) quando o dia e o mês desta data está entre o dia do mês actual e o último dia do mês corrente.

Alguém me pode dar uma ajuda?

  • Solution
Posted

Na realidade o que eu necessitava é que fosse retornadas as entradas da base de dados em que o dia e o mês da data de aniversário (ex: 08-06-1990) quando o dia e o mês desta data está entre o dia do mês actual e o último dia do mês corrente.

como fizeste o trabalho de horrivelmente descrever o que pretendes, vou assumir que pretendes saber quem faz anos dentro das seguintes duas regras:

- mês actual

- após o dias actual

SELECT *
 FROM aniversarios
WHERE MONTH(Aniversario) = MONTH(CURRENT_DATE()) -- mês actual
  AND DAY(Aniversario) >= DAY(CURRENT_DATE())    -- após o dias actual
IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

como fizeste o trabalho de horrivelmente descrever o que pretendes, vou assumir que pretendes saber quem faz anos dentro das seguintes duas regras:

- mês actual

- após o dias actual

SELECT *
 FROM aniversarios
WHERE MONTH(Aniversario) = MONTH(CURRENT_DATE()) -- mês actual
  AND DAY(Aniversario) >= DAY(CURRENT_DATE())	-- após o dias actual

Desculpa não me ter expressado bem mas já era o adiantar da hora.

Ao utilizar as funções DAY e MONTH está a dar o erro que estas funções não estão definidas. 😕

Alguém me pode ajudar?

Edited by danielfpaiva
Posted (edited)

Eu alterei o meu código para o seguinte:

<?php
include('secure/bd/init.php');
$date			= date("Y-m-d");
$current_day	 = DAY('$date');
$current_month   = MONTH('$date');
$month_last_date = date("Y-m-d", strtotime('$date'));
$last_month_day  = DAY('$month_last_date');
$sql = "SELECT * FROM aniversarios WHERE Month(Aniversario) = '$current_month' AND DAY(Aniversario) >= '$current_day' AND DAY(Aniversario) <= '$last_month_day'";
/*$sql="SELECT * FROM aniversarios WHERE Aniversario >= CURRENT_DATE() AND Aniversario <= '$month_last_date'";*/
$resultado = $conn->query($sql) or die("Erro : " . $conn->error);
while ($reg = mysqli_fetch_array($resultado)) {
?>
<div style="text-align: center; margin-bottom: 2%;">
<h2><?php   echo $reg['Nome']; ?></h2>
  <?php
if ($reg['Imagem']) {
	echo '<img src="images/' . $reg['Imagem'] . '""/>'; }?>
 <p><?php  echo $reg['Funcao']; ?></p>
 <p><?php echo $reg['Escalao'];?></p>
 <p><?php  echo $reg['Aniversario'];?></p>
</div>
<?php } ?>

Também tentei utilizar o DAYOFMONTH mas também deu o mesmo problema da função não estar definida. 😕

Edited by danielfpaiva
Posted

Sabes a diferenca entre php e SQL?

Eu coloquei codigo SQL e tu deste-te so desvaneio de alterar o que te foi dito

Já alterei o meu código e já funciona.

Da primeira vez não tinha percebido que a tua sugestão era só para SQL.

<?php
include ('secure/bd/init.php');
$date = date("Y-m-d");

$sql = "SELECT * FROM aniversarios WHERE MONTH(Aniversario) = MONTH(CURRENT_DATE()) AND DAY(Aniversario) >= DAY(CURRENT_DATE())";

$resultado = $conn->query($sql) or die("Erro : " . $conn->error);
while ($reg = mysqli_fetch_array($resultado)) {
 ?>
  <div style="text-align: center; margin-bottom: 2%;">
   <h2><?php echo $reg['Nome'];  ?></h2>
   <?php if ($reg['Imagem']) { echo '<img src="images/' . $reg['Imagem'] . '""/>'; }?>
   <p><?php echo $reg['Funcao'];  ?></p>
   <p><?php echo $reg['Escalao'];  ?></p>
   <p><?php echo $reg['Aniversario'];  ?></p>
  </div>
<?php } ?>

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.