
Calendário Em Php E Mysql
#1
Posted 08/03/2010, 14:33
estou precisando criar algo parecido com um calendário acadêmico..
um exemplo: www.catolicaceara.edu.br .. o calendario academico deles na home só lista da data que está em diante..
e quando voce clica em acessa mais.. ai lista todo o ano!
alguém teria algum exemplo.. tutorial ou algo do tipo?
abraço.
#2
Posted 08/03/2010, 15:45
Pronto eu não tenho exemplo mas posso lhe ajudar a desenvolver o seu.
Basicamente você tem um nome do evento, uma data inicial, uma data final e uma descrição.
Dados esses campos você lista ordenados por data e separados pelo mês.
Se quiser continuar a partir dai, venha com suas dúvidas que tanto eu quanto o resto do pessoal lhe ajudaremos.
Caso prefira realmente achar um pronto, pesquise no google por "PHP event calendar".
Será fácil encontrar...
Abraços e até a próxima.
Mateus Antunes
#3
Posted 08/03/2010, 18:38
Boa tarde amigo, tudo bom?
Pronto eu não tenho exemplo mas posso lhe ajudar a desenvolver o seu.
Basicamente você tem um nome do evento, uma data inicial, uma data final e uma descrição.
Dados esses campos você lista ordenados por data e separados pelo mês.
Se quiser continuar a partir dai, venha com suas dúvidas que tanto eu quanto o resto do pessoal lhe ajudaremos.
Caso prefira realmente achar um pronto, pesquise no google por "PHP event calendar".
Será fácil encontrar...
Abraços e até a próxima.
Mateus Antunes
Grande Mateus!
valeu ai pela dicas..
bem vamos lá:
tenho um banco de dados já pronto com os seguintes campos:
id_agenda
titulo
descricao
local
data
no site ele já lista na chamada pela a data do mês!
só que preciso fazer uma página interna listando de todo o ano!
exemplo: Janeiro ( eventos de janeiro ) Fevereiro ( eventos de fevereiro )
um listão apenas..
o problema é que não sei como fazer esse listão no php e mysql trazendo do banco de dados o conteudo.
poderia me da uma dica de como fazer?
abraço.
#4
Posted 09/03/2010, 08:25
Você pode dar um select em todos os registros ordenando pelo mês.
Alguma coisa assim:
ORDER BY DATE_FOTMAT(data,'%m')
Se não der certo é só voltar ai.
Abraços!
Mateus Antunes
#5
Posted 09/03/2010, 09:31
Claro.
Você pode dar um select em todos os registros ordenando pelo mês.
Alguma coisa assim:ORDER BY DATE_FOTMAT(data,'%m')
Se não der certo é só voltar ai.
Abraços!
Mateus Antunes
beleza.. mais assim..
o php como fazer?
por que tem que fazer uma array com os mêses e em cada mês lista o determinado evento.
o problema e que ainda não descobri a logica e nem como fazer esse array para lista!
#6
Posted 09/03/2010, 12:04
Você tem a manha de fazer uma consulta simples no banco e recuperar os valores?
#7
Posted 09/03/2010, 21:21
Só para me situar sobre como lhe ajudar.
Você tem a manha de fazer uma consulta simples no banco e recuperar os valores?
sim sim..
sei um pouco de sql e php!
só não sei complicado!
e isso tá me complicando esse calendario!
eu quero estilo esse calendario aqui oh:
http://www.catolicac...r/?p=calendario
att.
Luciano Olvieira
#8
Posted 09/03/2010, 22:08
Não neh... estamos em Março.. se for listar o calendário de 2010 só vai até março no momento.
O unico array que vai montar é com a seleção feita dos eventos no bd, nenhuma outra.
O MBA te deu o caminho das pedras, e se sabe um pouco de php com mysql como disse teria visto a simplicidade do lance.
Mas se não sabe o básico do PHP com MySql, não tem problema, mas precisa deixar entendido pra te ajudar no teu nível.
Se não continuaremos falando grego aqui e perdendo tempo, pois não entenderá nada.
Veja bem... vc disse que tem aqueles campos no bd montado já neh?
então é o seguinte
id_agenda int
titulo varchar
descricao text
local varchar
data datetime ou só date ou time... (uso date ou datetime quando quero horas, pra uma ordenação mais exata datetime é melhor que date)
bom partindo que a estrutura dos teus campos no bd estão assim
Precisamos saber como está cadastrando esses eventos.
INSERT bla bla bla
Como está cadastrando a data??
pegando ela em um form de que forma??
Importante: não importa a forma que é enviada no form desde que seja dia mes e ano da seguinte forma
dia 00
mes 00
ano 0000
Depois é só gravar no bd desta forma 0000-00-00 00:00, pois o formato datetime no bd aceita os dados somnte nesse formato
pra exibir depois na página no formato BR, é simples.. basta usar DATEFORMAT() na própria query de consulta como o MBA exemplificou, porém com mais informações na formatação, mas isso é outra coisa.
Enfim... se vc estiver com o bd nessa estrutura, e estiver cadastrado os eventos de forma correta, então listar será muito mais fácil.
através do SELECT .... vc ordenará primeiramente pelo mês depois pelo dia, hora:minuto
acho que da pra fazer alguma coisa com isso
pelo menos a lógica, que vc disse que estava tendo dificuldade, está aí.

canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
#9
Posted 10/03/2010, 14:39
Tá.. mas todos os meses terão eventos??
Não neh... estamos em Março.. se for listar o calendário de 2010 só vai até março no momento.
O unico array que vai montar é com a seleção feita dos eventos no bd, nenhuma outra.
O MBA te deu o caminho das pedras, e se sabe um pouco de php com mysql como disse teria visto a simplicidade do lance.
Mas se não sabe o básico do PHP com MySql, não tem problema, mas precisa deixar entendido pra te ajudar no teu nível.
Se não continuaremos falando grego aqui e perdendo tempo, pois não entenderá nada.
Veja bem... vc disse que tem aqueles campos no bd montado já neh?
então é o seguinte
id_agenda int
titulo varchar
descricao text
local varchar
data datetime ou só date ou time... (uso date ou datetime quando quero horas, pra uma ordenação mais exata datetime é melhor que date)
bom partindo que a estrutura dos teus campos no bd estão assim
Precisamos saber como está cadastrando esses eventos.
INSERT bla bla bla
Como está cadastrando a data??
pegando ela em um form de que forma??
Importante: não importa a forma que é enviada no form desde que seja dia mes e ano da seguinte forma
dia 00
mes 00
ano 0000
Depois é só gravar no bd desta forma 0000-00-00 00:00, pois o formato datetime no bd aceita os dados somnte nesse formato
pra exibir depois na página no formato BR, é simples.. basta usar DATEFORMAT() na própria query de consulta como o MBA exemplificou, porém com mais informações na formatação, mas isso é outra coisa.
Enfim... se vc estiver com o bd nessa estrutura, e estiver cadastrado os eventos de forma correta, então listar será muito mais fácil.
através do SELECT .... vc ordenará primeiramente pelo mês depois pelo dia, hora:minuto
acho que da pra fazer alguma coisa com isso
pelo menos a lógica, que vc disse que estava tendo dificuldade, está aí.
valeu ajudou bastante!!
mais isso ai eu já fiz!
tá gravando normal 0000-00-00..
ta pegando a data de uma calendario em jquery funcionando perfeito..
o que to com dificuldade mesmo é de fazer o codigo em php...
por que eu sei que tenho que fazer um array com os meses e da o select chamando o mês..
só que não sei por onde começa..
fiz um chamando.. mais ele lista apenas o mês que estamos e preciso de um geral, que liste todos os mês!
ex: $mes_atual = date("m");
$sql = mysql_query("SELECT DATE_FORMAT(data, '%d/%m/%Y') AS data,titulo,id_agenda FROM agenda WHERE Month(data) = '$mes_atual' order by data desc");
só que eu preciso de um que liste todos os mês em ordem: Janeiro, Fevereiro, Março, Abril e etc...
como é no link que mostrei..
e estou com dificuldade de fazer o codigo!
#10
Posted 10/03/2010, 16:13
vc precisa fazer mais ou menos como o MBA disse lá no exemplo do ORDER e depois pode usar while() para resgatar os resultados todos do array
Se vc não usar um laço só resultará um registro na consulta, no teu caso ali seria o registro com data igual ao $mes_atual
com um laço ele retorna todos os registros ordenados pelo Mês ou conforme condicionar

Leia também sobre GROUP BY

canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
#11
Posted 11/03/2010, 13:56
include "conexao.php";
$sql = "SELECT DATE_FORMAT(data, '%d/%m/%Y') AS data,titulo,id_agenda,local,descricao FROM agenda ORDER BY DATE_FOTMAT(data,'%m') desc";
$query = mysql_query($sql);
while ($linha = mysql_fetch_array($query)) {
echo $linha["data"];
echo $linha["titulo"];
}
mais não lista!
fui no sql e dei um select no sql..
e apareceu o seguinte erro:
#1305 - FUNCTION ideia3.DATE_FOTMAT does not exist
alguém pode me dá uma ajuda?
Edição feita por: Luciano Oliveira Lima, 11/03/2010, 13:57.
#13
Posted 11/03/2010, 14:50
seguinte:
tá listando as datas:
mais agora quero coloca o titulo..
meu codigo está assim:
<? include "conexao.php"; // Select do mes Janeiro $sql = "SELECT * FROM agenda ORDER BY DATE_FORMAT(data,'%m') desc"; $query = mysql_query($sql); ?> <div id="lateralInt"> <? while ($linha = mysql_fetch_array($query)) { ?> <p><a href="?id=agenda&id_age=<?=$linha["id_agenda"] ?>"><?=$linha["data"] ?> - <?=$linha["titulo"] ?></a></p> <? } ?> </div>
e no site ele lista assim:
2010-01-16 - Mostra de Responsabilidade Social na Indústria
0000-00-00 - IV Encontro Nacional de Pesquisadores em Gestão Social – ENAPEGS 2010,
queria que fosse divido por grupos ex:
Janeiro
2010-01-16 - Mostra de Responsabilidade Social na Indústria
Fevereiro
2010-02-05 - IV Encontro Nacional de Pesquisadores em Gestão Social – ENAPEGS 2010..
alguém pode me da alguma ideia?
#14
Posted 11/03/2010, 16:03
Procure revisar bem sempre pra poupar tempo... as vezes é só um ponto e vírgula faltando.
Vou tentar ajudar:
Seguindo a tua linha:
<?php include "conexao.php"; /* estas duas linhas abaixo podem ficar direto no arquivo conexao.php */ mysql_query("SET NAMES 'utf8'"); mysql_query("SET lc_time_names = 'pt_BR'"); $sql = "SELECT *, DATE_FORMAT(data, '%d/%m/%Y') AS dataBR, MONTHNAME(data) AS mes FROM agenda ORDER BY MONTH(data) DESC"; $query = mysql_query($sql); $mes = NULL; echo "<div id=\"lateralInt\">"; while ($linha = mysql_fetch_array($query)) { if ($mes != $linha['mes']){ $mes = $linha['mes']; echo "<h2>".$mes."</h2>"; } echo "<a href=\"?id=agenda&id_age=".$linha['id_agenda']. "\"> "; echo $linha['dataBR']." - ".$linha['titulo']; echo "</a>"; echo "<br />"; } echo "</div>"; ?>
Se vacilar tem como recuperar no proprio PHP em PT-BR, mas eu desconheço.
Aquelas duas linhas lá em cima que acrescentei, fazem o trabalho de transformar a data pra lingua pt_BR
Junto com o MONTHNAME(campo) escreve o mês por extenso.
Agradeça ao Felipe Pena pela dica em um tópico que ensina esse método.
Resolvi postar a dica aqui tbm pra quem for visitar este tópico, visto que acredito que o autor não irá.

Edição feita por: Crab, 18/03/2010, 16:14.
Adicionando formas otimizadas de conversão do idioma da data
canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
#15
Posted 11/03/2010, 16:58
mais seguinte..
no PHP
estou tentando fazer assim mais dá um erro
$sql = "SELECT * FROM agenda ORDER BY DATE_FORMAT(data,'%m') desc";
$query = mysql_query($sql);
while ($linha = mysql_fetch_array($query)) {
if($linha["date"] == "01" ){
// aqui imprimi as datas de janeiro
<p>Janeiro</p>
}
if($linha["date"] == "02") {
// aqui imprimi as datas de fevereiro..
<p>Fevereiro</p>
}
}
mais não tá dando certo por que a variavel $linha["date"] está trazendo data no formato 0000-00-00
a minha pergunta é? como fazer essa variavel $linha["date"] trazer apenas o mês? para comparar se é 01,02,03,04 ...
para dizer qual é o mês!
se a minha lógica está errada..
queria algum exemplo!
abraço.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)