danielfpaiva Posted June 5, 2015 at 01:52 AM Report #584313 Posted June 5, 2015 at 01:52 AM 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 HappyHippyHippo Posted June 5, 2015 at 07:15 AM Solution Report #584315 Posted June 5, 2015 at 07:15 AM 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 Portugol Plus
danielfpaiva Posted June 7, 2015 at 05:07 PM Author Report #584425 Posted June 7, 2015 at 05:07 PM (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 June 7, 2015 at 05:07 PM by danielfpaiva
HappyHippyHippo Posted June 7, 2015 at 05:26 PM Report #584427 Posted June 7, 2015 at 05:26 PM DAY : https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_day MONTH : https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_month afinal como testaste esse código SQL ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
danielfpaiva Posted June 7, 2015 at 05:30 PM Author Report #584428 Posted June 7, 2015 at 05:30 PM (edited) DAY : https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_day MONTH : https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_month afinal como testaste esse código SQL ? 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 June 7, 2015 at 05:55 PM by danielfpaiva
HappyHippyHippo Posted June 7, 2015 at 07:03 PM Report #584430 Posted June 7, 2015 at 07:03 PM (edited) Sabes a diferenca entre php e SQL? Eu coloquei codigo SQL e tu deste-te so desvaneio de alterar o que te foi dito Edited June 7, 2015 at 07:04 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
danielfpaiva Posted June 7, 2015 at 07:18 PM Author Report #584432 Posted June 7, 2015 at 07:18 PM 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 } ?>
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now