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

Mostrar Aniversariantes Do Mês Usando Mysql


Beraldo

Pergunta

Script postado por: Fabyo

Mostrar Aniversariantes do Mês usando MySQL

<?php

//exemplo mostra aniversariante do mês

include "conecta.php";

$query = "SELECT nome, aniversario FROM festa WHERE MONTH(aniversario) = MOD(MONTH(CURDATE()), 12)";
$re = mysql_query($query);
$exe = mysql_query($query, $cn);

while($l = mysql_fetch_array($exe)) {
$nome = $l['nome'];
$aniversario = $l['aniversario'];

echo "Aniversariante do mês $nome<br>";

}
?>

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
Script postado por: Fabyo

Mostrar Aniversariantes do Mês usando MySQL

<?php

//exemplo mostra aniversariante do mês

include "conecta.php";

$query = "SELECT nome, aniversario FROM festa WHERE MONTH(aniversario) = MOD(MONTH(CURDATE()), 12)";
$re = mysql_query($query);
$exe = mysql_query($query, $cn);

while($l = mysql_fetch_array($exe)) {
$nome = $l['nome'];
$aniversario = $l['aniversario'];

echo "Aniversariante do mês $nome<br>";

}
?>

Olá amigo...

Sou novo por aqui e estou com um probleminha e preciso de ajuda. Tenho essa tabela abaixo em um Banco de Dados.

CREATE TABLE `cadpro` (

`id` INTEGER NOT NULL AUTO_INCREMENT,

`nome` VARCHAR( 255 ) NOT NULL ,

`email` VARCHAR( 60 ) NOT NULL ,

`rua` VARCHAR( 255 ) NOT NULL ,

`bairro` VARCHAR( 255 ) NOT NULL ,

`cidade` VARCHAR( 255 ) NOT NULL ,

`estado` VARCHAR( 5 ) NOT NULL ,

`cep` VARCHAR( 30 ) NOT NULL ,

`telfixo` VARCHAR( 15 ) NOT NULL ,

`telmovel` VARCHAR( 15 ) NOT NULL ,

`dia` TINYTEXT NOT NULL,

`mês` TINYTEXT NOT NULL,

PRIMARY KEY (`Id`)

) TYPE=MyISAM;

Pergunto: [como é possível desenvolver algum script que selecione somente os aniversariantes do dia e envie mensagem de parabéns pra todos?]

Se puder ajudar ficarei muito grato.

Obrigado

WErber

Link para o comentário
Compartilhar em outros sites

  • 0

Antes de tudo, aconselho você a usar um campo do tipo DATE, que armazena a data no formato YYYY-MM-DD, em vez de dois campos de texto: um para dia e outro, para mês.

Tendo um campo do tipo DATE, pode-se usar as funções de data do MySQL. No seu caso isso seria bem simples:

Select * From tabela Where DAY(nascimento) = DAY(CURDATE()) AND MONTH(nascimento) = MONTH(CURDATE());

"nascimento" é um campo do tipo DATE.

Mais detalhes:

http://dev.mysql.com/doc/refman/5.1/en/dat...-functions.html

http://www.php.net/manual/pt_BR/ref.datetime.php

Abraços,

Beraldo

Link para o comentário
Compartilhar em outros sites

  • 0

beleza moçada, sei que o tópico não recebe mensagem a mais de um ano, porém, como eu cheguei aqui no Fórum hoje, e comecei a tentar aprender PHP a menos de um mês, e uma das melhores coisas que aconteceu fui ter descoberto esse Fórum, pena não ter descoberto antes...

bem minha dúvida é a seguinte, tentando aprender PHP sozinho, achei que a melhor forma de aprender era criando um site, e tive a idéia de criar esse site para cadastrar os membros da família, e como não poderia deixar de ser teria que ter uma página para exibir os aniversariantes do dia, aí que meu problema surge, eu quero que os dados que apareçam na página de aniversariantes do dia, sejam exatamente os mesmos dados que são exibidos na página que contém todos os membros da família.

bom vou postar o código abaixo, aí talvez fique mais fácil de alguém entender e se for possível me ajudar:

<?php

$conexao = mysql_connect("localhost","root","");
$banco = mysql_select_db("familia");

$sql = mysql_query("SELECT * FROM cadastro Where DAY(data_nascimento) = DAY(CURDATE()) AND MONTH(data_nascimento) = MONTH(CURDATE())");

while($linha = mysql_fetch_array($sql)) {
$nome = $linha['nome'];
$datanascimento = implode("/", array_reverse(explode("-", $linha['data_nascimento'])));;
$sexo = $linha['sexo'] == "M" ? "Masculino" : "Feminino";
$parentesco = $linha['parentesco'];
$estadocivil = $linha['estadocivil'];
$naturalidade = $linha['naturalidade'];
$cidade = $linha['cidade'];
$estado = $linha['estado'];
$foto = $linha['foto'];

echo "<img src=\"" . $foto . "\" width=300 height=200 border=0><br>";
echo "<strong>Nome Completo: </strong>" ."$nome<br>";
echo "<strong>Data de Nascimento: </strong>" ."$datanascimento<br>";

/*
function calcula_idade( $data_nasc ){
$data_nasc = explode("/", $data_nasc);
$data = date("d/m/Y");
$data = explode("/", $data);
$anos = $data[2] - $data_nasc[2];
if ( $data_nasc[1] >= $data[1] ){
if ( $data_nasc[0] <= $data[0] ){
return $anos; break;
}else{
return $anos-1;
break;
} 
}else{
return $anos;
} 
} 
$anos = calcula_idade("$datanascimento");

echo "<strong>Idade: </strong>" . "$anos anos<br>";
*/

echo "<strong>Sexo: </strong>" ."$sexo<br>";
echo "<strong>Grau de Parentesco: </strong>" ."$parentesco<br>";
echo "<strong>Estado Civil: </strong>" ."$estadocivil<br>";
echo "<strong>Naturalidade: </strong>" ."$naturalidade<br>";
echo "<strong>Cidade: </strong>" ."$cidade<br>";
echo "<strong>Estado: </strong>" ."$estado<br>";
echo "<br><br>";

}
?>
porque eu coloquei como /**/ na função calcula_idade e na linha que exibe a idade... pois bem é exatamente aí que está o meu problema, nos dias que tem apenas um aniversariante a página é exibida sem problema algum, porém quando tem mais de um aniversariante naquele dia, aí retorna esse erro: Fatal error: Cannot redeclare calcula_idade() (previously declared in exatamente na linha 23, que é onde é feita a função para calcular a idade (qualquer semelhança dessa função com a que está postada aqui no Fórum, não é mera coincidência, rsrs). como é de se notar eu retirei essas duas linhas do código do script, porque com essas duas linhas ele não funcionava, e a única maneira que encontrei dele funcionar foi retirando as linhas...
$re = mysql_query($query);
$exe = mysql_query($query, $cn);

então, apesar de estar sendo autodidata em PHP, e ter começado a me interessar por essa Linguagem de Programação a menos de um mês, o que eu pude perceber é que o problema está por causa da função estar dentro do while... me corrijam se eu estiver errado...

beleza pessoal... será que alguém pode me dar uma luz... e uma grande ajuda

desde já fico grato!!!

problema resolvido... recebi uma dica em outro Fórum para tirar a função de dentro do while, só chamar a função dentro do while, e funcionou 100%

Editado por Pedro Sézar
Link para o comentário
Compartilhar em outros sites

  • 0

Muito bom o código, mas não consigo ordená-lo pelo dia de aniversário. Quando ordeno pela data de aniversário, os dias não são ordenados, logicamente. Tentei a opção "...order by day(campo)..." mas não deu certo.

beleza moçada, sei que o tópico não recebe mensagem a mais de um ano, porém, como eu cheguei aqui no Fórum hoje, e comecei a tentar aprender PHP a menos de um mês, e uma das melhores coisas que aconteceu fui ter descoberto esse Fórum, pena não ter descoberto antes...

bem minha dúvida é a seguinte, tentando aprender PHP sozinho, achei que a melhor forma de aprender era criando um site, e tive a idéia de criar esse site para cadastrar os membros da família, e como não poderia deixar de ser teria que ter uma página para exibir os aniversariantes do dia, aí que meu problema surge, eu quero que os dados que apareçam na página de aniversariantes do dia, sejam exatamente os mesmos dados que são exibidos na página que contém todos os membros da família.

bom vou postar o código abaixo, aí talvez fique mais fácil de alguém entender e se for possível me ajudar:

<?php

$conexao = mysql_connect("localhost","root","");
$banco = mysql_select_db("familia");

$sql = mysql_query("SELECT * FROM cadastro Where DAY(data_nascimento) = DAY(CURDATE()) AND MONTH(data_nascimento) = MONTH(CURDATE())");

while($linha = mysql_fetch_array($sql)) {
$nome = $linha['nome'];
$datanascimento = implode("/", array_reverse(explode("-", $linha['data_nascimento'])));;
$sexo = $linha['sexo'] == "M" ? "Masculino" : "Feminino";
$parentesco = $linha['parentesco'];
$estadocivil = $linha['estadocivil'];
$naturalidade = $linha['naturalidade'];
$cidade = $linha['cidade'];
$estado = $linha['estado'];
$foto = $linha['foto'];

echo "<img src=\"" . $foto . "\" width=300 height=200 border=0><br>";
echo "<strong>Nome Completo: </strong>" ."$nome<br>";
echo "<strong>Data de Nascimento: </strong>" ."$datanascimento<br>";

/*
function calcula_idade( $data_nasc ){
$data_nasc = explode("/", $data_nasc);
$data = date("d/m/Y");
$data = explode("/", $data);
$anos = $data[2] - $data_nasc[2];
if ( $data_nasc[1] >= $data[1] ){
if ( $data_nasc[0] <= $data[0] ){
return $anos; break;
}else{
return $anos-1;
break;
} 
}else{
return $anos;
} 
} 
$anos = calcula_idade("$datanascimento");

echo "<strong>Idade: </strong>" . "$anos anos<br>";
*/

echo "<strong>Sexo: </strong>" ."$sexo<br>";
echo "<strong>Grau de Parentesco: </strong>" ."$parentesco<br>";
echo "<strong>Estado Civil: </strong>" ."$estadocivil<br>";
echo "<strong>Naturalidade: </strong>" ."$naturalidade<br>";
echo "<strong>Cidade: </strong>" ."$cidade<br>";
echo "<strong>Estado: </strong>" ."$estado<br>";
echo "<br><br>";

}
?>
porque eu coloquei como /**/ na função calcula_idade e na linha que exibe a idade... pois bem é exatamente aí que está o meu problema, nos dias que tem apenas um aniversariante a página é exibida sem problema algum, porém quando tem mais de um aniversariante naquele dia, aí retorna esse erro: Fatal error: Cannot redeclare calcula_idade() (previously declared in exatamente na linha 23, que é onde é feita a função para calcular a idade (qualquer semelhança dessa função com a que está postada aqui no Fórum, não é mera coincidência, rsrs). como é de se notar eu retirei essas duas linhas do código do script, porque com essas duas linhas ele não funcionava, e a única maneira que encontrei dele funcionar foi retirando as linhas...
$re = mysql_query($query);
$exe = mysql_query($query, $cn);

então, apesar de estar sendo autodidata em PHP, e ter começado a me interessar por essa Linguagem de Programação a menos de um mês, o que eu pude perceber é que o problema está por causa da função estar dentro do while... me corrijam se eu estiver errado...

beleza pessoal... será que alguém pode me dar uma luz... e uma grande ajuda

desde já fico grato!!!

problema resolvido... recebi uma dica em outro Fórum para tirar a função de dentro do while, só chamar a função dentro do while, e funcionou 100%

Muito bom o código. Funcionou 100%, mas não consigo ordená-lo pelo dia de aniversário. Quando ordeno pela data de aniversário, os dias não são ordenados, logicamente. Tentei a opção "...order by day(campo)..." mas não deu certo.

Desde já Agradeço a ajuda.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia caros amigos!

Estou com dificuldades em um script que estou desenvolvendo.

Trata-se de uma lista de aniversariantes do mês. Já consegui selecionar os aniversariantes do mês, mas não consigo ordená-los pelo dia de aniversário, pois gostaria de exibí-los pelo dia:

01 - Fulano

02 - beltrano

03 - Ciclano....

Utilizei o seguinte código:("Select * From TABELA Where status ='Sim' and MONTH(CAMPO_data_nasc) = MONTH(CURDATE()) order by day(CAMPO_DATA_NASC)" );

Caso alguém possa me ajudar, desde já agradeço a compreensão.

Edielson

Link para o comentário
Compartilhar em outros sites

  • 0

Edielson

esta muito incompleta tua funcao de calcular idade

usa essa

/**
 *
 * @param <type> $date = data do aniversario da 
 * pessoa tem que vir no formato Y-m-d
 * 
 * @return <type> 
 */
function calcularIdade($date){
    $dataAtual = explode("-", date("Y-m-d"));
    $anoAtual = $dataAtual[0];
    $mesAtual = $dataAtual[1];
    $diaAtual = $dataAtual[2];

    $data = explode("-" , $date);
    $ano = $data[0];
    $mes = $data[1];
    $dia = $data[2];

    if($anoAtual == $ano){
        if($mesAtual == $mes){
            if($diaAtual == $dia)
                $idade = "Esta pessoa nasceu hoje.";
            if($diaAtual > $dia)
                $idade = "Esta pessoa possuí ".$diaAtual - $dia." dias de vida.";
            else if($diaAtual < $dia)
                $idade = "Esta pessoa ainda não nasceu.";
        } else if($mesAtual > $mes) {
            if($diaAtual == $dia)                
                    $idade = ($mesAtual - $mes) + 1 . " meses de vida.";
            else if($diaAtual < $dia)
                if($mesAtual - $mes == 1)
                    $idade = $mesAtual - $mes . " mês de vida.";
                else
                    $idade = $mesAtual - $mes . " mêses de vida.";
            else if($diaAtual > $dia)
                    $idade = ($mesAtual - $mes) + 1 . " mêses de vida.";
        } else
            $idade = "Esta pessoa ainda não nasceu.";
    } else if($anoAtual > $ano){
        if($mesAtual > $mes)
            $idade = ($anoAtual - $ano) + 1;
        else if($mesAtual == $mes)
                if($diaAtual > $dia || $diaAtual == $dia)
                    $idade = ($anoAtual - $ano) + 1 . " anos";
                else
                    if($anoAtual - $ano == 1)
                        $idade = ($anoAtual - $ano) . " ano";
                    else
                        $idade = ($anoAtual - $ano) . " anos";
        else
            if($anoAtual - $ano == 1)
                $idade = $anoAtual - $ano . " ano";
            else
                $idade = $anoAtual - $ano . " anos";
    } else
        $idade = "Esta pessoa ainda não nasceu.";

return $idade;
}

Link para o comentário
Compartilhar em outros sites

  • 0

Muito bom esse select testado e aprovado, se puder dar essa força como faço pra alterar pra pegar os aniversariantes do dia

Muito bom esse select testado e aprovado, se puder dar essa força como faço pra alterar pra pegar os aniversariantes do dia

Desculpe não tinha visto o post anterior com atenção, já foi mostrado, grato..

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...