Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Gostaria de saber como eu consigo fazer este sistema de calendario por dia da semana, inclusive setando que o dia de Hoje é hoje, como neste site:
http://www2.ibahia.com/shows/
Por favor aguardo um retorno!
Att,
Alisson Maciel
Não rola isso não manin, o sistema dos dias da semana é feito com php, pode ser uma função.
mas isso que botei aí é php, só botei a parte de montar a sql que busca os dados no banco pois imagino que esses dados tá no banco e imagino que já fez a parte da conexão com o banco e tudo mas a parte php só precisa fazer isso, buscar os dados e montar a sequência pois a parte de printar na tela dá pra fazer naquele modo html lá mesmo
Não, não é bem assim não, valeu pela dica.
Seguinte, tenho uma ideia mas não sei se serviria:
<?php
$dataSelecionada = "+2 months";
$hojedia = date('d');
$hojemes = date('n');
$hojeano = date('Y');
$hoje = date('d-m-Y');
$timestamp = strtotime($dataSelecionada);
$data = date('d-m-Y', $timestamp);
$dia = date('d', $timestamp);
$diaWrite = date('N', $timestamp);
$mes = date('n', $timestamp);
$ano = date('Y', $timestamp);
if($data == $hoje){
echo "Hoje";
}else{
if($diaWrite == 1){
echo "Seg";
}
if($diaWrite == 2){
echo "Ter";
}
if($diaWrite == 3){
echo "Qua";
}
if($diaWrite == 4){
echo "Qui";
}
if($diaWrite == 5){
echo "---";
}
if($diaWrite == 6){
echo "Sab";
}
if($diaWrite == 7){
echo "Dom";
}
echo ", $dia/";
if($mes == 1){
echo "Jan";
}
if($mes == 2){
echo "Fev";
}
if($mes == 3){
echo "Mar";
}
if($mes == 4){
echo "Abr";
}
if($mes == 5){
echo "Mai";
}
if($mes == 6){
echo "Jun";
}
if($mes == 7){
echo "Jul";
}
if($mes == 8){
echo "Ago";
}
if($mes == 9){
echo "Set";
}
if($mes == 10){
echo "Out";
}
if($mes == 11){
echo "Nov";
}
if($mes == 12){
echo "Dez";
}
}
//By Mateus Tozoni
?>
Ai na **$dataSelecionada** você pode usar como uma string num loop que mostraria sempre um a mais em cada div que ia retornar os dados... Acabei fazendo correndo dps que vi então né kkkk. Mas assim, só adaptar que da.
Abraços,
Mateus Tozoni.Quer com o loop feito? Ta aqui:
<table><tr>
<?php
$dias = " days";
$hojedia = date('d');
$hojemes = date('n');
$hojeano = date('Y');
$hoje = date('d-m-Y');
$contagem = + 1;
$x = 1;
$d = -1;
while ($x <= 7) {
echo "<td>";
$x = $x + 1;
$d = $d + 1;
$timestamp = strtotime("$d days");
$data = date('d-m-Y', $timestamp);
$dia = date('d', $timestamp);
$diaWrite = date('N', $timestamp);
$mes = date('n', $timestamp);
$ano = date('Y', $timestamp);
if($data == $hoje){
echo "Hoje";
}else{
if($diaWrite == 1){
echo "Seg";
}
if($diaWrite == 2){
echo "Ter";
}
if($diaWrite == 3){
echo "Qua";
}
if($diaWrite == 4){
echo "Qui";
}
if($diaWrite == 5){
echo "---";
}
if($diaWrite == 6){
echo "Sab";
}
if($diaWrite == 7){
echo "Dom";
}
echo ", $dia/";
if($mes == 1){
echo "Jan";
}
if($mes == 2){
echo "Fev";
}
if($mes == 3){
echo "Mar";
}
if($mes == 4){
echo "Abr";
}
if($mes == 5){
echo "Mai";
}
if($mes == 6){
echo "Jun";
}
if($mes == 7){
echo "Jul";
}
if($mes == 8){
echo "Ago";
}
if($mes == 9){
echo "Set";
}
if($mes == 10){
echo "Out";
}
if($mes == 11){
echo "Nov";
}
if($mes == 12){
echo "Dez";
}
}echo " | </td>";
};
//By Mateus Tozoni
?>
</tr></table>
Feito captar 7 dias contando com o dia atual, você pode fazer campos para pesquisa e tal dps. Segue exemplo.
Mateus Tozoni.só uma dica, pra evitar esse tanto de if e o código ficar mais limpo eu faço assim
$dia_sem = array('Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'S e x', 'Sab');
$nome_mes = array('Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez');
echo $dia_sem[$diaWrite] . ', ' . $diahoje . '/' . $nome_mes[$mes - 1];
vai imprimir algo como
**Dom, 23/Abr**
reduzimos mais de 50 linhas de código pra apenas 3. bem mais rápido de escrever o código e a performance fica melhor tambem porque não precisa ficar verificando if a if. tendo o número do dia e do mês já vai direto nele lá na array@marsolim Acho q consigo fazer com menos linhas emmm!?
Se liga:
<?php
//Garantindo que o servidor está Pt_BR
setlocale(LC_ALL, NULL);
setlocale(LC_ALL, 'Portuguese_Brazil.1252');
echo strftime("<p>%d/%B de %Y", time()) . "</p>";
//Exibir amanha...
echo strftime("<p>%d/%B de %Y", strtotime('+1 day')) . "</p>";
//Exbir depois de amanha
echo strftime("<p>%d/%B de %Y", strtotime('+2 day')) . "</p>";
Já já o @Gabriel Heming vai ter uma ulcera quando ver a ausência do [DateTime](http://php.net/manual/pt_BR/class.datetime.php)....
Enfim, o autor do post, @sacjamm tem oq em mente?
fiquei curioso pra saber como ele armazenas as datas dos eventos dele já que não utiliza um banco de dados....
mateusjosepretti
Conseguir resolver com o seu exemplo, muito obrigado a você e aos demais amigo que compartilharam.
Abraços!
gabrieldarezzo no meu curtinho tempo de programação nunca precisei usar essas paradinha de pegar o tempo e tals eu até sabia que tinha jeito de fazer por aí porque eu já tinha visto esses lances em configuração de data e hora em blogs hehehe mas eu acho que uma vantagem de fazer passando os números por uma array é que o fulanim pode usar em qualquer localidade que vai funfar. vai que pega um server loco por aí que dá problema com as configs de data e hora e tals sei lá pode ser que aconteça hahaha. detalhe que pra setar a localidade pra pegar os nomes de mês em português aqui funfa com
setlocale(LC_ALL, 'pt_BR');
no lugar de
setlocale(LC_ALL, 'Portuguese_Brazil.1252');
e pra pegar a semana e o mês abreviado como o autor do post postou que queria é com **%a** e com **%b** minúsculos no **strftime**.
o dia no modelo **Sem, d/mes** no modelo do site passado no tópico fica assim
**strftime('%a, %d/%b', strtotime('+1 day'))**
ainda tem as paradinha de inicial maiúscula e minúscula
mas são detalhes que cada um vai pesquisando e ajustando do seu jeito@gabrieldarezzo Infelizmente, a Date\Time ignora locale, logo, não traduz para o português. ='(
@marsolim depende de como está instalado no servidor. Caso esteja no linux, use o comando 'locale -a'. Exibirá todos os locales e a forma que deve ser utilizado.
então gabriel heming essas parada aí que dão uma bagunçadinha no samba hehehe, por isso que uma arrayzinha de vez em quando é bom porque vai funfar de qualquer jeito acho
Legal a info.
Uma maneira que utilizo que é independente da plataforma (linux/mac/windows) é pelo proprio php.
<?php
echo Locale::getDefault();
var_dump(ResourceBundle::getLocales(''));
Assim ele exibe o default do php.ini
intl.default_locale
E a lista de possíveis 'local '
@marsolim eu deixei salvo essa opção pois da maneira que você falou não funciona na minha local ^^já aqui em um desses server grátis o getDefalt() e tals não funciona dá erro de classe não encontrada e não retorna nada
olha só aqui consigo uma lista de locales com
echo shell_exec('locale -a');
só que isso traz aquela bagunça básica de tudo misturado em sequência mas nada que um **explode** e uma inserção em **array** com um **'<pre>'** e um **print_r** ou **var_dump** não resolva hehehe. para o português brasileiro esse server que uso tem as opções **pt_BR** e **pt_BR.utf8**
é só buscar os dados filtrados em ordem crescente da data de hoje pra frente