Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

trabalhar com datas em formato e condições especiais

12-06-2007 17:04

ola, estou criando um script para trabalhar com data, ex. uma agenda de aniversarios,

entao a principio nao quero o ano, somente o DIA e MÊS, ai ja começou a complicar, pq não tem este formato no PHP.

vou inserir os registro no banco de dados, quero exibilos em uma busca, pelos meses, ex. JUNHO, mostra os anviersariantes de junho, e a data dos aniversarios esta no formato 12/06.

também quero exibir os proximos 50 aniversarios, então preciso fazer uma busca na tabela pelos anviersarios com data a partir de hoje, ai limito a busca a 50 resultados.

não sei como fazer o php interpretar este formato de data. podem me ajudar?
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

trabalhar com datas em formato e condições especiais

12-06-2007 17:11

No caso da busca contando da data de hoje mais 50 basta usar o seguinte antes do seu select:

$dia_atual = date('d-m'); $dia_mais = date('d-m', strtotime('+50 days'));

Com isso, tenho armazenado a data atual ( $dia_atual ) e data atual mais 50 dias ( $dia_mais ).

Agora o select fica assim:

SELECT * FROM suatabela WHERE campo BETWEEN '$dia_atual' AND '$dia_mais'

Já no caso da busca pelo mês o select pode ser assim:

SELECT * FROM suatabela WHERE campo LIKE '%/$mes'

Ou seja, ele vai pegar $mes q você vai passar e vai consultar.

LIKE '%/06'

Como o campo da data vai sempre terminar com ( /mm ), basta passar para consulta o valor do mês: 01, 02, etc.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

trabalhar com datas em formato e condições especiais

12-06-2007 18:20

blz, funciona perfeitamente, o limite e a busca tbm. valeu, so mudei o formato da data pra /

$dia_atual = date('d-m');
$dia_mais = date('d-m', strtotime('+50 days'));


ai como vou trabalhar no formato 12/06 mudei para

$dia_atual = date('d/m');
$dia_mais = date('d/m', strtotime('+50 days'));

valeu, ficou show
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

trabalhar com datas em formato e condições especiais

12-06-2007 18:24

¨aww¨
0
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

trabalhar com datas em formato e condições especiais

12-06-2007 18:56

Uma observação quanto as datas.

Tanto no banco de dados quanto no código devem estar no formato: aaaa/mm/dd

Ai o código fica:

$dia_atual = date('Y/m/d'); $dia_mais = date('Y/m/d', strtotime('+10 days')); // + 10 dias

O select fica assim:

SELECT * FROM suatabela WHERE campo BETWEEN '$dia_atual' AND '$dia_mais' ORDER BY campo ASC

Adicionei a linha para ordenar a consulta pelo campo em ordem crescente, para ordem decrescente, troque o ASC por DESC.

Para colocar a data no formato brasileiro usei.

$separa = explode("/", $campodatabela); echo $separa[2]."/".$separa[1]."/".$separa[0]."<br>";

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

trabalhar com datas em formato e condições especiais

12-06-2007 19:05

boa, tava vendo um erro, qdo a data passava de um mês para o outro nao mostrava resultados, agora é isto, fechou, valeu fera
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

trabalhar com datas em formato e condições especiais

12-06-2007 20:08

¨halfsmile¨
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

trabalhar com datas em formato e condições especiais

12-06-2007 20:11

Opa, mais duas coisinhas,

1. a busca por mes agora tem ser o seguinte '%/$mes/' pra nao pegar dia.

2. eu pretende exibir os proximos 50 aniversarios, e não os aniversarios nos proximos 50 dias, então não seria o BETWEEN e sim o LIMIT, mas não bem como ele funciona

$query = "SELECT * FROM tabela ORDER BY data ASC LIMIT 50";
mas a partir de $dia_atual, como seria?
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

trabalhar com datas em formato e condições especiais

12-06-2007 20:20

Se você quer buscar os 50 últimos aniversários entre as datas definidas, ficaria:
SELECT * FROM tabela WHERE data BETWEEN '$dia_atual' AND '$dia_mais' ORDER BY data ASC LIMIT 50

Agora, se for na busca dentro do mês, ficaria:
SELECT * FROM tabela WHERE data LIKE '%/$mes/%' ORDER BY data ASC LIMIT 50

Note que usei % no início e final do campo LIKE, isso porque o mês estará sempre no meio do campo.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

trabalhar com datas em formato e condições especiais

12-06-2007 20:28

entendi o LIKE, ta certo %/$mes/% entao pode estar em qualquer parte do texto que vai ser encontrado.

agora exibir os 50 proximos aniversarios sem data limite para terminar, so iniciando de hoje, pq senão vou ter que saber a data depois do proximo 50ª aniversario ou colocar a datafinal com um ano menos um dia, ai sim, ele vai buscar todos aniversarios a partir de hoje, e LIMIT 50, exibir só os proximos cinquenta.

mas creio que asism carrega mais o servidor, acho que tem outro modo, usar um comando no LIMIT.

tipo LIMIT $hoje, 50
entao o LIMIT começa de hoje, e mostra 50.

mas nao funcionou bem aqui, é tipo paginação mas nao sei como funciona ao certo.
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

trabalhar com datas em formato e condições especiais

12-06-2007 20:35

Tenta assim:
SELECT * FROM tabela WHERE data > '$dia_atual' ORDER BY data ASC LIMIT 50
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

trabalhar com datas em formato e condições especiais

12-06-2007 20:56

ah sim, bem curto o codigo e funciona do jeito que eu preciso, agora ta show

valeu mais uma vez, obrigado
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

trabalhar com datas em formato e condições especiais

12-06-2007 20:56

:)
0
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

trabalhar com datas em formato e condições especiais

13-06-2007 19:32

Em relação ao problema de pegar datas do próximo ano, no caso de ter uma tabela apenas para um ano, vai um script.

<?php $dbhost="localhost"; $dbuser="login"; $dbpasswd="senha"; $dbname="bancodedados"; $conexao = @mysql_connect($dbhost, $dbuser, $dbpasswd) or die ("não foi possível a conexão, verifique os dados."); $db = @mysql_select_db($dbname) or die ("não foi possível o acesso ao banco de dados $dbname."); $quantos = 0; // valor para incremento $resultados = 20; // quantos resultados retornar $data_atual = date('Y-m-d'); // para teste pode colocar a data manualmente // $data_atual = date('2007-12-01'); echo "a data atual é $data_atual mostrando $resultados resultados.<br><br>"; $Busca = mysql_query("SELECT * FROM datas WHERE data >= '$data_atual' ORDER BY data ASC LIMIT $resultados"); while($Busca_while=mysql_fetch_array($Busca)) { $quantos=$quantos+1; $separa = explode("-", $Busca_while['data']); echo $separa[2]."/".$separa[1]."<br>"; if($Busca_while['data']=="2007-12-31") { $busca = $resultados-$quantos; $Busca_1 = mysql_query("SELECT * FROM datas WHERE data > '2007-00-00' ORDER BY data ASC LIMIT $busca"); while($Busca_while_1=mysql_fetch_array($Busca_1)) { $separa = explode("-", $Busca_while_1['data']); echo $separa[2]."/".$separa[1]."<br>"; } break; } } ?> <?php mysql_close($conexao); ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

trabalhar com datas em formato e condições especiais

13-06-2007 20:31

Muito bom, realmente estava com erro na troca do ano, isto soluciona, mas pensei em outro método.

em pegar as datas que ja passaram e aumentar um ano no registro delas, um código simples +/- assim:

//procuro todas datas menores que hoje $dia_atual = date('Y/m/d'); $sql= mysql_query("SELECT * FROM tabela WHERE datas < '$dia_atual'"); while ($reg = mysql_fetch_array($sql)){ $datas= $reg['datas']; //pegamos o ano da data, e adicionamos mais 1 $data_novo1 = substr("$datas",0,4)+1; //pegamos o resto da data ex. -06-13 $data_novo2 = substr("$datas",4,10); //montamos a nova data $data_novo = "$data_novo1$data_novo2"; //olhando so pra confirmar echo "$data_novo"; //um update na tabela pegando todos registros com a data antiga e inserindo a nova data mysql_query("UPDATE tabela SET datas = '$data_novo' WHERE tabela.datas= '$datas"); //aqui mostramos a data, que a esta altera ja foi substituida // mostrando so para comparar com a nova dada que foi inserido e sera mostrada antes desta echo "<br>$datas<br><hr>"; }

se deixar este codigo junto ao codigo que mostra a data ele fara a atualização cada vez que alguem acessar a pagina, ou deixar o codigo em separado e executar uma ou duas vezes por ano, ja é o suficiente.
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17638
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

trabalhar com datas em formato e condições especiais

13-06-2007 20:37

Outra boa alternativa. ¨1010¨
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Bing [Bot]