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

Aniversariantes Do Mês


Fabriciovasco

Pergunta

AMigos me ajudem!!!

alguém poderia me ajudar a fazer um sistema de aniversariantes?? É o seguinte, eu tenho um bnaco em mysql de cadastro de user e agora eu to querendo mostrar os aniversariantes do mês do banco, o que tenho que fazer??

Me ajudem desdo inicio por favor, qualo formato do campo se é data etc..o que tenho que fazer??

Obrigado.

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

Voce tem que comparar o dia e o mês de nascimento dos usuários com a data atual. Se quiser mostrar os aniversariantes do mês, apenas compare o mês. Se quiser mostrar os aniversariantes do dia, compara o dia e o mês.

Você pode usar a função date() para pegar a data atual e explode() para separar a data de nascimento cadastrada no banco.

Movido:

Tutoriais & Dicas -> PHP

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Seria muito te pedir para me da uma ajuda no script, to começando nisso e aionda to meio perdido....

Fabricio

Voce tem que comparar o dia e o mês de nascimento dos usuários com a data atual. Se quiser mostrar os aniversariantes do mês, apenas compare o mês. Se quiser mostrar os aniversariantes do dia, compara o dia e o mês.

Você pode usar a função date() para pegar a data atual e explode() para separar a data de nascimento cadastrada no banco.

Movido:

Tutoriais & Dicas -> PHP

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Primeiro monte o banco de dados. Já tem um? Se tiver, poste o código.

Sim já tenho, no cadastro de usuários eu tenho um campo "Nascimento" no formato texto. O que eu fiz foi assim, na hora do cadastro de usuários ele coloca a data de nascimento, olha o codigo do cadastro não sei se tem alguma coisa errda pp eu peguei e to modificando.

Segue o codigo

Banco de Dados

Eu tenho uma tabela de usuarios com os campos.

nascimento, dia, mês e ano entre outros...

Cadastro de usuários.

<?

$erro=false;

if(isset($_POST['a'])):

$erro =$mp->validarCampo($_POST['nome'],"por favor informe o seu nome");

if($mp->qtd_registros("site_usuarios","login={$_POST['login]}'")):

$erro .= "+ <b>Este login já esta uso selecione outro login</b> <br />";

endif;

if($mp->qtd_registros("site_usuarios","email='{$_POST['email']}'")):

$erro .= "+ <b>Este e-mail já esta cadastrado em nosso site. Use outro e-mail</b> <br />";

endif;

$erro.=$mp->validarCampo($_POST['email'],"por favor informe um email");

$erro.=$mp->validarCampo($_POST['login'],"por favor escolha um login");

$erro.=$mp->validarCampo($_POST['senha'],"por favor escolha uma senha");

if(!$erro):

if($_FILES['foto']['tmp_name']):

$nomeimagem=time().".JPG";

$mp->miniatura($_FILES['foto']['tmp_name'],$nomeimagem,200,200,100,"imagens/usuarios");

endif;

$ini= explode("/",$_POST['inicio']);

$inicio=mktime(0,0,0,$ini[1],$ini[0],$ini[2]);

$fm= explode("/",$_POST['fim']);

$fim=mktime(0,0,0,$fm[1],$fm[0],$fm[2]);

$mp->midia_query("insert into site_usuarios (IDusuario,

apelido,

nome,

graduacao,

grupo,

seumestre,

dia,

mês,

ano,

telefone,

email,

login,

senha,

foto,

status,

cadastro)

values(

null,

'".$_POST['apelido']."',

'".$_POST['nome']."',

'".$_POST['graduacao']."',

'".$_POST['grupo']."',

'".$_POST['seumestre']."',

'".$entry[0]}."',

'".$entry[1]}."',

'".$entry[2]}."',

'".$_POST['telefone']."',

'".$_POST['email']."',

'".$_POST['login']."',

'".sha1($_POST['senha'])."',

'".$nomeimagem."',

'0',

'".time()."')") or die(mysql_error());

print"<script>alert('Cadastro efetuado com Sucesso, aguarde a autorização do mesmo.!')</script>";

print"<script>document.location=index.php'</script>";..........

Agora o do Select dos aniversariantes..

<table width="100%" border="0" cellpadding="4" cellspacing="4">

<tr>

<td>

<?

$arquivo = "?pagina=$_GET[pagina]";

$maxpag = 5;

$maxlnk = 10;

if (isset($_GET['indice]) == '')

{

$param = 0;

}

else

{

$temp = $_GET['indice'];

$passo1 = $temp - 1;

$passo2 = $passo1 * $maxpag;

$param = $passo2;

}

$res1 = mysql_query("select count(*) as total from site_usuarios where mês=".date("m")."'") or die(mysql_error());

$res2 = mysql_query("select * from site_usuarios where mês='".date("m")."' order by dia limit $param,$maxpag")

or die(mysql_error());

$totreg = mysql_result($res1,0,"total");

$totreg_01 = mysql_num_rows($res2);

$registros = $totreg;

$proximo = $totreg_01;

$results_tot = $totreg;

$results_parc = $totreg_01;

$result_div = $results_tot/$maxpag;

$n_inteiro = (int)$result_div;

if ($n_inteiro < $result_div)

{

$n_paginas = $n_inteiro + 1;

}

else

{

$n_paginas = $result_div;

}

$pg_atual = $param/$maxpag+1;

$reg_inicial = $param + 1;

$pg_anterior = $pg_atual - 1;

$pg_proxima = $pg_atual + 1;

$registros = mysql_num_rows($res2);

?>

<table width="100%" border="0" align="center" cellpadding="3" cellspacing="3">

<?

$contador = 0;

?>

<tr>

<td colspan="3" valign="middle">

<?

if(isset($_GET['mensagem])):

include"site.aniversariante.mensagem.php";

endif;

?>

<tr>

<td colspan="3" valign="middle"><? while ($dds=mysql_fetch_array($res2)):?>

<br>

<table width="100%" align="center">

<tr>

<td width="10%" valign="top">

<? if($dados['foto']):?>

<div align=center"><a href="?pagina=usuarios.perfil.editar"><img src="imagens/usuarios/<?=$dados['foto]?>" border="0" style="border: 2px solid #FFB833"/></a>

<? else:?>

<a href="?pagina=usuarios.perfil.editar"><img src="imagens/usuarios/padrão.jpg" border="1" style="border: 1px solid #FFB833"/></a> </div>

<? endif; ?></td>

<td width="90%" valign="top"> Nome -

<?=$dds['nome']?>

<br/>

E-mail de contato:

<?=$dds['email']?>

<br/>

<?=$dds['dia']."/".$dds['mês']?>

<br/>

<a href=?pagina=<?=$_GET['pagina]?>&mensagem=1&vr1=<?=$dds[0]?>">Deixar Mensagem</a></td>

</tr>

<tr>

<td colspan=2">&nbsp;</td>

</tr>

</table>

<?

$contador++;

endwhile;

$reg_final = $param + $contador;

?>

</table>

<? if ($totreg >=$maxpag): ?>

<table WIDTH="330" BORDER="0" ALIGN="CENTER" CELLPADDING="1" CELLSPACING="1">

<tr>

<td WIDTH="150" align="right">

<?

if (isset($_GET['indice]) > 1)

{

?>

<?=$lista_produtos;?>

<a HREF="<?=$arquivo?>&indice=<?=$pg_anterior;?>">&laquo; Anterior</a>

<?

}

?>

</td>

<?

$lnk_impressos=0;

$temp=0;

if (isset($temp) >= $maxlnk)

{

if ($n_paginas > $maxlnk)

{

$n_maxlnk = $temp + 4;

$maxlnk = $n_maxlnk;

$n_start = $temp - 6;

$lnk_impressos = $n_start;

}

}

while(($lnk_impressos < $n_paginas) and ($lnk_impressos < $maxlnk))

{

$lnk_impressos ++;

?>

<td WIDTH="30" align="center">

<?

if ($pg_atual != $lnk_impressos)

{

?>

<a href="<?=$arquivo?>&indice=<?=$lnk_impressos;?>">

<?

}

if ($pg_atual == $lnk_impressos)

{

print "<font size=4>$lnk_impressos</font>";

}

else

{

print "$lnk_impressos";

}

?>

</a> </td>

<? } ?>

<td WIDTH="150" align="left">

<?

if ($reg_final < $results_tot)

{

?>

<a HREF="<?=$arquivo?>&indice=<?=$pg_proxima?>">Pr&oacute;xima &raquo;</a>

<?

}

?>

</td>

</tr>

</table>

<? endif; ?>

<div style="text-align:center">Exibindo&nbsp; <font color="#000055">

<?=$reg_inicial;?>

</font> &nbsp;a&nbsp; <font color="#000055">

<?=$reg_final;?>

</font> &nbsp;de&nbsp; <font color="#000055">

<?=$totreg;?>

</font> &nbsp;Classificados. </div></td>

</tr>

</table>

<? endif;?>

Desculpe o tamanho do codigo é que acho que assim você consegue me ajudar falw cara obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Mas o código está funcionando? Aparece algum erro? O que acontece?

Os valores do codigo de cadastro de usuários campos dia, mês e ano não recebem os valores digitados no campo Nascimento..

dessa forma o select no banco não resgata os dados do db..

Não da erro ele apenas não da o insert..

Um abraço Fabrício Vasco

Link para o comentário
Compartilhar em outros sites

  • 0

Nas datas, voce está inserindo $entry, mas não definiu essa variável (array, na verdade). Outra coisa: voce fechou uma chave depois dos $entry, mas não as acriu.

Olhe um exemplo simples que tenho aqui:

banco:

Create Table usuarios(
id smallint(5) unsigned not null auto_increment,
nome varchar(100) default '',
nascimento date not null,
primary key (id)
) type = innodb character set latin1 collate latin1_general_ci

INSERT INTO `usuarios` VALUES (1, 'beraldo', '1987-12-03');
INSERT INTO `usuarios` VALUES (2, 'joao', '1900-02-01');
INSERT INTO `usuarios` VALUES (3, 'maria', '1800-02-03');
INSERT INTO `usuarios` VALUES (4, 'josé', '2000-03-01');
index.php
<?php
function calc_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;
}
}


$My = new Mysqli ("localhost", "usuario", "senha", "Testes");

$sql = $My->query ("Select DATE_FORMAT(nascimento, '%d-%m-%Y') as nasc, nome From usuarios Where MONTH(nascimento) = " . date ("m"));

echo "Total: " . $sql->num_rows . "<br />";

while ($f = $sql->fetch_array())
    echo $f['nome'] . " => " . calc_idade( $f['nasc'] ) . "<br />";

$My->close();
?>

Mude o mês de seu Sistema Operacional e veja que sempre aparece o nome e a idade do usuário.

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Nas datas, voce está inserindo $entry, mas não definiu essa variável (array, na verdade). Outra coisa: voce fechou uma chave depois dos $entry, mas não as acriu.

Olhe um exemplo simples que tenho aqui:

banco:

Create Table usuarios(
id smallint(5) unsigned not null auto_increment,
nome varchar(100) default '',
nascimento date not null,
primary key (id)
) type = innodb character set latin1 collate latin1_general_ci

INSERT INTO `usuarios` VALUES (1, 'beraldo', '1987-12-03');
INSERT INTO `usuarios` VALUES (2, 'joao', '1900-02-01');
INSERT INTO `usuarios` VALUES (3, 'maria', '1800-02-03');
INSERT INTO `usuarios` VALUES (4, 'josé', '2000-03-01');
index.php
<?php
function calc_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;
}
}


$My = new Mysqli ("localhost", "usuario", "senha", "Testes");

$sql = $My->query ("Select DATE_FORMAT(nascimento, '%d-%m-%Y') as nasc, nome From usuarios Where MONTH(nascimento) = " . date ("m"));

echo "Total: " . $sql->num_rows . "<br />";

while ($f = $sql->fetch_array())
    echo $f['nome'] . " => " . calc_idade( $f['nasc'] ) . "<br />";

$My->close();
?>

Mude o mês de seu Sistema Operacional e veja que sempre aparece o nome e a idade do usuário.

[]'s

Obrigado pela resposta...

Mas não consegui...cara acertei as chaves.., mas como posso fazer então...?

Com base nesse codigo postado....

Os dados não são inseridos...eu não preciso do campo "nascimento" né? Quem faz a inserção pros dia, mês e ano são os entry né??...

Me ajuda..

Um abraço Fabricio

Link para o comentário
Compartilhar em outros sites

  • 0

Voce tem que separar a data completa (00/00/0000) e colocar cada parte numa chave de $entry:

$data = "06/02/2007";
$entry = explode ("/", $data);
print_r ($entry);

/*
Retornará:

[0] => 06 (dia)
[1] => 02 (mês)
[2] => 2007 (ano)
*/

Sacou?

Eu usei um único campo do tipo DATE para salvar a data. Isso é mais correto e lhe permite o uso das funções de data e hora do próprio MySQL. ;)

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Voce tem que separar a data completa (00/00/0000) e colocar cada parte numa chave de $entry:

$data = "06/02/2007";
$entry = explode ("/", $data);
print_r ($entry);

/*
Retornará:

[0] => 06 (dia)
[1] => 02 (mês)
[2] => 2007 (ano)
*/

Sacou?

Eu usei um único campo do tipo DATE para salvar a data. Isso é mais correto e lhe permite o uso das funções de data e hora do próprio MySQL. ;)

[]'s

Saquei..

Mas como eu coloco isso no banco...

eu preciso...da o insert no campo nascimento também...

e no db eu crio apenas o campo "nascimento" com formato date??

olha o codigo como ficaria..?

<?

$erro=false;

if(isset($_POST['a'])):

$erro =$mp->validarCampo($_POST['nome'],"por favor informe o seu nome");

if($mp->qtd_registros("site_usuarios","login={$_POST['login]}'")):

$erro .= "+ <b>Este login já esta uso selecione outro login</b> <br />";

endif;

if($mp->qtd_registros("site_usuarios","email='{$_POST['email']}'")):

$erro .= "+ <b>Este e-mail já esta cadastrado em nosso site. Use outro e-mail</b> <br />";

endif;

$erro.=$mp->validarCampo($_POST['email'],"por favor informe um email");

$erro.=$mp->validarCampo($_POST['login'],"por favor escolha um login");

$erro.=$mp->validarCampo($_POST['senha'],"por favor escolha uma senha");

if(!$erro):

if($_FILES['foto']['tmp_name']):

$nomeimagem=time().".JPG";

$mp->miniatura($_FILES['foto']['tmp_name'],$nomeimagem,200,200,100,"imagens/usuarios");

endif;

$mp->midia_query("insert into site_usuarios (IDusuario,

apelido,

nome,

graduacao,

grupo,

seumestre,

nascimento,

telefone,

email,

login,

senha,

foto,

status,

cadastro)

values(

null,

'".$_POST['apelido']."',

'".$_POST['nome']."',

'".$_POST['graduacao']."',

'".$_POST['grupo']."',

'".$_POST['seumestre']."',

'".$_POST['nascimento']."',

'".$_POST['telefone']."',

'".$_POST['email']."',

'".$_POST['login']."',

'".sha1($_POST['senha'])."',

'".$nomeimagem."',

'0',

'".time()."')") or die(mysql_error());

print"<script>alert('Cadastro efetuado com Sucesso, aguarde a autorização do mesmo.!')</script>";

print"<script>document.location=index.php'</script>";

$hide=1;

endif;

endif;

if(!isset($hide)):

?>

<table width="740" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td width="250" align="left" valign="top"><? include"site.capa.lateral.php";?></td>

<td width="490" valign="top" style="border: 1px solid #CCCCCC"><img src="imagens/layout/cadastro.user.png" width="490" height="30" border="0" />

<form action="" method="post" enctype="multipart/form-data" name="form1">

<table width="400" border="0" align="center" cellpadding="2" cellspacing="2">

<tr>

<td><strong>Cadastro de Usu&aacute;rios</strong></td>

</tr>

</table><br>

<table width="400" border="0" align="center" cellpadding="2" cellspacing="2">

<? if($erro):?>

<tr valign="middle">

<td height="30" colspan="2" bgcolor="#FFFFCC" style="border: 1px solid #CCCCCC"><img src="imagens/icon/important.png" width="16" height="16" align="absmiddle"> <?=$erro?></td>

</tr>

<? endif; ?>

<tr>

<td>Apelido:</td>

<td><input name="apelido" type="text" class=modelo1 id="apelido2" value="<?=@$_POST['apelido]?>" size="30"></td>

</tr>

<tr>

<td><div align="left">Nome Completo:</div> </td>

<td><input name="nome" type="text" class=modelo1 id="nome2" value="<?=@$_POST['nome']?>" size=30"></td>

</tr>

<tr>

<td>Gradua&ccedil;&atilde;o:</td>

<td><input name="graduacao" type="text" class=modelo1 id="graduacao2" value="<?=@$_POST['graduacao]?>" size="30"></td>

</tr>

<tr>

<td width="35%"><div align="left">Grupo de Capoeira:</div></td>

<td width="65%"><input name="grupo" type="text" class=modelo1 id="grupo" value="<?=@$_POST['grupo']?>" size=30"></td>

</tr>

<tr>

<td>Seu Mestre </td>

<td><input name="grupo2" type="text" class=modelo1 id="grupo2" value="<?=@$_POST['seumestre]?>" size="30"></td>

</tr>

<tr>

<td><div align="left">Data de Nascimento: </div></td>

<td><input name="nascimento" type="text" class=modelo1 id="nascimento" onKeyPress="fmtEntrada(this, '##/##/####')" value="<?=@$_POST['nascimento']?>" size=30" />

<input name="a" type="hidden" id="a" value="1"></td>

</tr>

<tr>

<td><div align="left">Telefone:</div></td>

<td><input name="telefone" type="text" class=modelo1 id="telefone" value="<?=@$_POST['telefone]?>" size="30"></td>

</tr>

<tr>

<td><div align="left">E-mail:</div></td>

<td><input name="email" type="text" class=modelo1 id="email" value="<?=@$_POST['email']?>" size=30"></td>

</tr>

<tr>

<td colspan="2" valign="top">&nbsp;</td>

</tr>

<tr>

<td valign="top"><img src="imagens/icon/camera.png" width="16" height="16" align="absmiddle"> Enviar Foto </td>

<td valign="top"><input name="foto" type="file" class=modelo1 id="foto3" size="30"></td>

</tr>

<tr>

<td valign="top"><img src="imagens/icon/businessman_add.png" width="16" height="16" align="absmiddle"> Login de Acesso</td>

<td valign="top"><input name="login" type="text" class=modelo1 id="login3" value="<?=@$_POST['login]?>" size="30"></td>

</tr>

<tr>

<td valign="top"><img src="imagens/icon/unlock.png" width="16" height="16" align="absmiddle"> Senha</td>

<td valign="top"><input name="senha" type="password" class=modelo1 id="senha3" size="30" />

min. 6 dig. </td>

</tr>

<tr>

<td colspan="2" valign="top"><input type="submit" name="Submit" class=modelo2 value="Cadastrar"></td>

</tr>

</table>

<br>

<p></p>

</form>

<? endif;?></td>

</tr>

</table>

Link para o comentário
Compartilhar em outros sites

  • 0

Se voce quiser usar um campo date como eu fiz, pode usar o PHPMyAdmin, excluir os campos dia, mês e ano e adicionar nascimento Date Not Null (pela interface gráfica, não precisa digitar o código). Para excluir, apenas clique no X ao lado do campo. No fim da tabela há a opção para adicionar um novo campo. Lá voce se acha; é bem simples.

Mas se quiser manter os campos separados, beleza. Mas voce não poderá usar as funções de data do MySQL quando precisar.

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Se voce quiser usar um campo date como eu fiz, pode usar o PHPMyAdmin, excluir os campos dia, mês e ano e adicionar nascimento Date Not Null (pela interface gráfica, não precisa digitar o código). Para excluir, apenas clique no X ao lado do campo. No fim da tabela há a opção para adicionar um novo campo. Lá voce se acha; é bem simples.

Mas se quiser manter os campos separados, beleza. Mas voce não poderá usar as funções de data do MySQL quando precisar.

[]'s

Obrigado pela ajuda tão rápido veio...

beleza...eu uso o PHPMyAdmin, deletei os campos..dia, mês e ano..e criei o campo nascimento no formato que você falou....

Agora quanto ao script..o que eu faço...?

Na hora do cadastro;..o meu codigo de cadastro é esse que eu postei ai em cima....da uma olhada por favor..

Fabricio.

Link para o comentário
Compartilhar em outros sites

  • 0

Vai depender do que o usuário digitar. O ideal é voce colocar cada parte da data em um campo e depois juntar os três, formando a data aceita pelo MySQL.

No seu código não há a validação da data, então não tenho como dizer se está certo ou não.

Separe os campo para o usuário digitar, daí voce recebrá os tres campo, validará o valor com checkdate(), do PHP (olhe o Manual) e montará a data assim 0000-00-00.

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