Jump to content


Photo

Aniversariantes Do Mês C/ Idade


  • Faça o login para participar
8 replies to this topic

#1 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 13/08/2006, 15:19

Ok, eu uso essa query para selecionar a idade e a data de aniversário dos usuários do meu site de acordo com o mês.

echo '<h1>Aniversariantes do mês</h1>';

$query = mysql_query("SELECT usuario AS usuario,DATE_FORMAT(nascimento,'%m-%d') AS nascimento, FORMAT((TO_DAYS(NOW())-TO_DAYS(nascimento))/365,1) AS idade FROM usuarios WHERE MONTH(nascimento) = MONTH(NOW()) ORDER BY nascimento DESC");
while($row=mysql_fetch_array($query)){
$usuario = $row["usuario"];
$idade = $row["idade"];
$nascimento = $row["nascimento"];

echo "<a href=\"membro/$usuario\">$usuario</a> faz <b>$idade</b> anos em ";

print implode('/', array_reverse(explode('-', $nascimento)));

echo '.<br>';

} #while

E ele imprime assim:

lahlahbarros faz 19.0 anos em 21/08.

Ok, correto. Mas, tem uma coisa que eu quero mudar:

1. Como eu faço para exibir apenas '19' e não '19.0'?

O meu campo de data de nascimento do db é

nascimento DATE NOT NULL,


;) Obrigada desde já.

Edição feita por: lahlahbarros, 13/08/2006, 15:32.


#2 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 13/08/2006, 15:46

você pode usar a função EXPLODE() ^^'

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#3 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 13/08/2006, 16:01

Eu usei isso:

// SUBSTITUI O .0 POR NADA
function corrige($sql_in){
$sql = preg_replace("/(.0)/ie","",$sql_in);
$sql_out = $sql;
return $sql_out;
}

e na hora de imprimir a idade

echo corrige($idade);

É, eu sei que não é a forma mais efetiva, mas funcionou. :)
Eu não sei usar o explode direito. ;~

#4 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 13/08/2006, 16:39

<?php

$a = explode("separador", $variavel);
/*
 Exemplo:
$A =  explode ("/","22/01/04");
irá retornar uma ARRAY para à variavel $A!
para exibir:
echo $A[0]; // 22
echo $A[1]; // 01
echo $A[2]; // 04
^^'
*/
echo $a[0]. ' - '. $a[1] . ' - '.$a[2];
?>

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#5 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 13/08/2006, 17:56

Bom vou abrir a torneirinha de asneiras e arriscar um palpite. Será que não pra fazer o que tu quer convertendo o tipo da variável para inteiro?

Afinal não acredito que lhe interesse informar que a pessoa fez 19.4 anos de idade. :P

[]'s

#6 lanlan

lanlan

    12 Horas

  • Usuários
  • 180 posts
  • Sexo:Não informado
  • Localidade:Teresina
  • Interesses:design, php, photoshop. ;} webdesign em geral!

Posted 13/08/2006, 18:39

Obrigada pelas respostas.
A que achei mais simples e com menos código foi a do Jackpot.
Realmente funcionou. Só foi usar o echo assim:

echo intval($idade);

e ele imprimiu só 19 anos ;)

#7 jfsso

jfsso

    12 Horas

  • Usuários
  • 145 posts
  • Sexo:Não informado
  • Localidade:Tsukuba
  • Interesses:JAVA - PHP - RUBY - PERL - PYTHON - MYSQL

Posted 15/08/2006, 02:51

Bom.. pra resolver seu problema pela raiz e' so mudar um digito no query.

FORMAT((TO_DAYS(NOW())-TO_DAYS(nascimento))/365,1)

muda o 1 para 0

FORMAT((TO_DAYS(NOW())-TO_DAYS(nascimento))/365,0)

o segundo parametro do FORMAT() e' a quantidade de casas decimais que quer receber.
João

#8 odraude_fa

odraude_fa

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 22/09/2009, 12:49

eu quero fazer uma consulta por intervalo:

Exemplo:

digite o Mês (ex:12)
digite o intervalo de dias: dia1 até dia2 (ex: 01 até 20)

Obs: o sistema deverá me listar os aniversariantes do mês especificado dentro do intervalo das datas solicitadas
Alguma sugestão?

Alguém pode me ajudar, por favor?

Obs: havia me esquecido, estou usando campo do tipo date, mas gostaria de saber a implementação para php nos dois tipos de datos (date e varchar)

Abraços

Edição feita por: odraude_fa, 22/09/2009, 12:34.


#9 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 23/09/2009, 13:42

Um exemplo de query para isso é a seguinte:

SELECT *
  FROM tabela
  WHERE DATE_FORMAT(dt_nascimento, '%c%d') BETWEEN 1201 AND 1220

1201 e 1220 sendo o mês+ano do início e fim do período.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq