Beraldo Postado Dezembro 19, 2006 Denunciar Share Postado Dezembro 19, 2006 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>"; } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Werber Postado Junho 21, 2007 Denunciar Share Postado Junho 21, 2007 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.ObrigadoWErber Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Junho 21, 2007 Autor Denunciar Share Postado Junho 21, 2007 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.htmlhttp://www.php.net/manual/pt_BR/ref.datetime.phpAbraços,Beraldo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pedro Sézar Postado Novembro 19, 2008 Denunciar Share Postado Novembro 19, 2008 (editado) 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 ajudadesde 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 Novembro 20, 2008 por Pedro Sézar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Edielson Postado Março 8, 2009 Denunciar Share Postado Março 8, 2009 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 ajudadesde 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Edielson Postado Março 11, 2009 Denunciar Share Postado Março 11, 2009 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 - Fulano02 - beltrano03 - 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 thiagito Postado Fevereiro 3, 2010 Denunciar Share Postado Fevereiro 3, 2010 Edielsonesta muito incompleta tua funcao de calcular idadeusa 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; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Total := QryHora.FieldByN Postado Maio 18, 2011 Denunciar Share Postado Maio 18, 2011 Muito bom esse select testado e aprovado, se puder dar essa força como faço pra alterar pra pegar os aniversariantes do diaMuito bom esse select testado e aprovado, se puder dar essa força como faço pra alterar pra pegar os aniversariantes do diaDesculpe não tinha visto o post anterior com atenção, já foi mostrado, grato.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MagoDanger Postado Novembro 22, 2011 Denunciar Share Postado Novembro 22, 2011 cara, esse tópico faz tempo... mas vamos tentar né!! rrsss..você copnseguiu fazer esse script de cadastro de anviersariantes? Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Beraldo
Script postado por: Fabyo
Mostrar Aniversariantes do Mês usando MySQL
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
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.