Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gregorcs

[Resolvido] String para ler data

Recommended Posts

Galera, bom dia, gostaria que vocês me ajudassem com uma string.

 

Eu preciso que meu código leia a data com o 0 na frente, datas como 20/04/2012 ele entende perfeitamente, mas quando cadastro uma data com o dia assim 04/04/2012 ele não entende.

 

O que posso usar para rodar??

 

Precisaria de uma função inversa da ltrim mas nao achei qual!!!

 

 

 

Galera, bom dia, gostaria que vocês me ajudassem com uma string.

 

Eu preciso que meu código leia a data com o 0 na frente, datas como 20/04/2012 ele entende perfeitamente, mas quando cadastro uma data com o dia assim 04/04/2012 ele não entende.

 

O que posso usar para rodar??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posta seu código para entendermos melhor como você está lendo esta data.

 

Até mais

 

Galera, bom dia, gostaria que vocês me ajudassem com uma string.

 

Eu preciso que meu código leia a data com o 0 na frente, datas como 20/04/2012 ele entende perfeitamente, mas quando cadastro uma data com o dia assim 04/04/2012 ele não entende.

 

O que posso usar para rodar??

 

Precisaria de uma função inversa da ltrim mas nao achei qual!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não sei por que ele só de pegar a data não reconhece os dias com 0 na frente, será que tem alguma string que faça esse reconhecimento?!?!

 

Vou por só uma

 

if(isset($_GET['d'])){/*link dos dias de eventos*/

 

$idev = $_GET['d'];

 

$sqlev = mysql_query("SELECT * FROM agenda WHERE dtevento = '$idev' ORDER BY hora ASC") or die(mysql_error());

 

 

aqui segue o código todo para facilitar .

 

 

<?php

 

include "sql.php";//conexão com o banco de dados

 

@mysql_select_db($db);//selecione o banco de dados

 

if(empty($_GET['data'])){//navegaçao entre os meses

 

$dia = date('d');

 

$month = date('m');

 

$ano = date('Y');

 

}else{

 

$data = explode('-',$_GET['data']);//nova data

 

$dia = $data[0];

 

$month = $data[1];

 

$ano = $data[2];

 

}

 

if($month==1){//mês anterior se janeiro mudar valor

 

$mes_ant = 12;

 

$ano_ant = $ano - 1;

 

}else{

 

$mes_ant = $month - 1;

 

$ano_ant = $ano;

 

}

if($month==12){//proximo mês se dezembro tem que mudar

 

$mes_prox = 1;

 

$ano_prox = $ano + 1;

 

}else{

 

$mes_prox = $month + 1;

 

$ano_prox = $ano;

 

}

 

 

 

$hoje = date('j');//função importante pego o dia corrente

 

switch($month.$n){/*notem duas variaveis para o switch para identificar dia e limitar numero de dias*/

 

case 1: $mes = "JANEIRO";

 

$n = 31;

 

break;

 

case 2: $mes = "FEVEREIRO";// todo ano bixesto fev tem 29 dias

 

$bi = $ano % 4;//anos multiplos de 4 são bixestos

 

if($bi == 0){

 

$n = 29;

 

}else{

 

$n = 28;

 

}

 

break;

 

case 3: $mes = "MARÇO";

 

$n = 31;

 

break;

 

case 4: $mes = "ABRIL";

 

$n = 30;

 

break;

 

case 5: $mes = "MAIO";

 

$n = 31;

 

break;

 

case 6: $mes = "JUNHO";

 

$n = 30;

 

break;

 

case 7: $mes = "JULHO";

 

$n = 31;

 

break;

 

case 8: $mes = "AGOSTO";

 

$n = 31;

 

break;

 

case 9: $mes = "SETEMBRO";

 

$n = 30;

 

break;

 

case 10: $mes = "OUTUBRO";

 

$n = 31;

 

break;

 

case 11: $mes = "NOVEMBRO";

 

$n = 30;

 

break;

 

case 12: $mes = "DEZEMBRO";

 

$n = 31;

 

break;

 

}

 

 

 

$pdianu = mktime(0,0,0,$month,1,$ano);//primeiros dias do mes

 

$dialet = date('D', $pdianu);//escolhe pelo dia da semana

 

switch($dialet){//verifica que dia cai

 

case "Sun": $branco = 0; break;

 

case "Mon": $branco = 1; break;

 

case "Tue": $branco = 2; break;

 

case "Wed": $branco = 3; break;

 

case "Thu": $branco = 4; break;

 

case "Fri": $branco = 5; break;

 

case "Sat": $branco = 6; break;

 

}

 

 

 

print '<table class="tabela" >';//construção do calendario

 

print '<tr>';

 

print '<td class="mes"><a href="?data='.$dia.'/'.$mes_ant.'/'.$ano_ant.'" title="Mês anterior"> « </a></td>';/*mês anterior*/

 

print '<td class="mes" colspan="5">'.$mes.'/'.$ano.'</td>';/*mes atual e ano*/

 

print '<td class="mes"><a href="?data='.$dia.'/'.$mes_prox.'/'.$ano_prox.'" title="Próximo mês"> » </a></td>';/*Proximo mês*/

 

print '</tr><tr>';

 

print '<td class="sem">D</td>';//printar os dias da semana

 

print '<td class="sem">S</td>';

 

print '<td class="sem">T</td>';

 

print '<td class="sem">Q</td>';

 

print '<td class="sem">Q</td>';

 

print '<td class="sem">S</td>';

 

print '<td class="sem">S</td>';

 

print '</tr><tr>';

 

$dt = 1;

 

if($branco > 0){

 

for($x = 0; $x < $branco; $x++){

 

print '<td> </td>';/*preenche os espaços em branco*/

 

$dt++;

 

}

 

}

 

 

 

for($i = 1; $i <= $n; $i++ ){/*agora vamos no banco de dados verificar os evendos*/

 

$dtevento = $i."-".$month."-".$ano;

 

$sqlag = mysql_query("SELECT * FROM agenda WHERE dtevento = '$dtevento'") or die(mysql_error());

 

$num = mysql_num_rows($sqlag);/*quantos eventos tem para o mes*/

 

$idev = @mysql_result($sqlag, 0, "dtevento");

 

$eve = @mysql_result($sqlag, 0, "evento");

 

if($num > 0){/*prevalece qualquer dia especial do calendario, por isso está em primeiro*/

 

print '<td class="evt">';

 

print '<a href="?d='.$idev.'&data='.$dia.'/'.$month.'/'.$ano.'" title="'.$eve.'">'.$i.'</a>';

 

print '</td>';

 

$dt++;/*incrementa os dias da semana*/

 

$qt++;/*quantos eventos tem no mes*/

 

}elseif($i == $hoje){/*imprime os dia corrente*/

 

print '<td class="hj">';

 

print $i;

 

print '</td>';

 

$dt++;

 

 

 

}elseif($dt == 1){/*imprime os domingos*/

 

print '<td class="dom">';

 

print $i;

 

print '</td>';

 

$dt++;

 

}else{/*imprime os dias normais*/

 

print '<td class="td">';

 

print $i;

 

print '</td>';

 

$dt++;

 

}

 

if($dt > 7){/*faz a quebra no sabado*/

 

print '</tr><tr>';

 

$dt = 1;

 

}

 

}

 

print '</tr>';

 

print '</table>';

 

if($qt > 0){/*se tiver evento no mês imprime quantos tem */

 

print "Temos ".$qt." evento(s) em ".strtolower($mes)."<br>";/*mudar para caixa baixa as letras do mes*/

 

}

 

if(isset($_GET['d'])){/*link dos dias de eventos*/

 

$idev = $_GET['d'];

 

$sqlev = mysql_query("SELECT * FROM agenda WHERE dtevento = '$idev' ORDER BY hora ASC") or die(mysql_error());

 

$numev = mysql_num_rows($sqlev);

 

for($j = 0; $j < $numev; $j++){/*caso no mesmo dia tenha mais eventos continua imprimindo */

 

$eve = @mysql_result($sqlev, $j, "evento");/*pegando os valores do banco referente ao evento*/

 

$dev = @mysql_result($sqlev, $j, "dtevento");

 

$dsev = @mysql_result($sqlev, $j, "conteudo");

 

$auev = @mysql_result($sqlev, $j, "autor");

 

$lev = @mysql_result($sqlev, $j, "local");

 

$psev = @mysql_result($sqlev, $j, "data");

 

$nowev = date('d/m/Y - H:i', strtotime($psev));/*transforma a data para data padrão brazil*/

 

$hev = @mysql_result($sqlev, $j, "hora");

 

print '<table width="300" cellspacing="0" cellpadding="0">';/*monta a tabela de eventos*/

 

print '<tr><td class="show">'.$dev.' - '.$eve.'</td></tr>';

 

print '<tr><td class="linha"><b>Hora: </b>'.$hev.'hs</td></tr>';

 

print '<tr><td class="linha"><b>Local: </b>'.$lev.'</td></tr>';

 

print '<tr><td class="linha"><b>Descrição: </b>'.nl2br($dsev).'</td></tr>';/*mantem o quebra da linha para dascriçao do evento*/

 

print '<tr><td class="linha"><b>Postado: </b><small>'.$nowev.'hs por '.$auev.'</small></td></tr>';

 

print '</table>';

 

}

 

}

 

 

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro você poderia economizar algumas linhas...

if(empty($_GET['data'])){//navegaçao entre os meses

$dia = date('d');

$month = date('m');

$ano = date('Y');

}else{

$data = explode('-',$_GET['data']);//nova data

$dia = $data[0];

$month = $data[1];

$ano = $data[2];

}

 

Troque por:

if(empty($_GET['data'])){//navegaçao entre os meses
   $data1 = date('Y-m-d');
   list($ano, $month, $dia) = explode('-', $data1));
}else{
   list($ano, $month, $dia) = explode('-', $_GET['data']));
}

 

Mostre o resultado por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não rolou ele ainda só está pegando se o dia for 4 e não 04!!

 

Vou fazer uma limpa no código e tirar essas linhas extras rsrs

 

Primeiro você poderia economizar algumas linhas...

 

 

Troque por:

if(empty($_GET['data'])){//navegaçao entre os meses
   $data1 = date('Y-m-d');
   list($ano, $month, $dia) = explode('-', $data1));
}else{
   list($ano, $month, $dia) = explode('-', $_GET['data']));
}

 

Mostre o resultado por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Du, devo estar fazendo isso errado então pois quando apliquei o echo

ele retornou Notice: Undefined index: dtevento in C:\Users\Edicao\Desktop\agenda\agenda.php on line 241

 

mas ai que está, pois as outras datas que estão cadastradas, estão voltando normais, dias como 10/04/2012 ou 22/04/2012

e o dia 4/04/2012 mas com o 0 dia 04/04/2012 não!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está é a primeira parte

 

if(empty($_GET['data'])){//navegaçao entre os meses

$dia = date('d');

$month = date('m');

$ano = date('Y');

 

}else{

$data = explode('-',$_GET['data']);//nova data

$dia = $data[0];

$month = $data[1];

$ano = $data[2];

}

 

if($month==1){//mês anterior se janeiro mudar valor

$mes_ant = 12;

$ano_ant = $ano - 1;

 

}else{

$mes_ant = $month - 1;

$ano_ant = $ano;

 

}

if($month==12){//proximo mês se dezembro tem que mudar

 

$mes_prox = 1;

$ano_prox = $ano + 1;

 

}else{

 

$mes_prox = $month + 1;

$ano_prox = $ano;

 

}

 

e este é o código inteiro, só para entender melhor

 

 

if(empty($_GET['data'])){//navegaçao entre os meses

$dia = date('d');

$month = date('m');

$ano = date('Y');

 

}else{

$data = explode('-',$_GET['data']);//nova data

$dia = $data[0];

$month = $data[1];

$ano = $data[2];

}

 

if($month==1){//mês anterior se janeiro mudar valor

$mes_ant = 12;

$ano_ant = $ano - 1;

 

}else{

$mes_ant = $month - 1;

$ano_ant = $ano;

 

}

if($month==12){//proximo mês se dezembro tem que mudar

 

$mes_prox = 1;

$ano_prox = $ano + 1;

 

}else{

 

$mes_prox = $month + 1;

$ano_prox = $ano;

 

}

 

$hoje = date('j');//função importante pego o dia corrente

 

switch($month.@$n){/*notem duas variaveis para o switch para identificar dia e limitar numero de dias*/

 

case 1: $mes = "JANEIRO";

$n = 31;

 

break;

case 2: $mes = "FEVEREIRO";// todo ano bixesto fev tem 29 dias

$bi = $ano % 4;//anos multiplos de 4 são bixestos

if($bi == 0){

$n = 29;

}else{

$n = 28;

}

break;

case 3: $mes = "MARÇO";

$n = 31;

break;

case 4: $mes = "ABRIL";

$n = 30;

 

break;

case 5: $mes = "MAIO";

$n = 31;

 

break;

case 6: $mes = "JUNHO";

$n = 30;

 

break;

case 7: $mes = "JULHO";

$n = 31;

 

break;

case 8: $mes = "AGOSTO";

$n = 31;

 

break;

case 9: $mes = "SETEMBRO";

$n = 30;

 

break;

case 10: $mes = "OUTUBRO";

$n = 31;

 

break;

case 11: $mes = "NOVEMBRO";

$n = 30;

 

break;

case 12: $mes = "DEZEMBRO";

$n = 31;

 

break;

 

}

 

 

 

$pdianu = mktime(0,0,0,$month,1,$ano);//primeiros dias do mes

 

$dialet = date('D', $pdianu);//escolhe pelo dia da semana

 

switch($dialet){//verifica que dia cai

case "Sun": $branco = 0; break;

case "Mon": $branco = 1; break;

case "Tue": $branco = 2; break;

case "Wed": $branco = 3; break;

case "Thu": $branco = 4; break;

case "Fri": $branco = 5; break;

case "Sat": $branco = 6; break;

 

}

 

 

 

print '<table class="tabela" >';//construção do calendario

print '<tr>';

print '<td class="mes"><a href="?data='.$dia.'/'.$mes_ant.'/'.$ano_ant.'" title="Mês anterior"> « </a></td>';/*mês anterior*/

print '<td class="mes" colspan="5">'.$mes.'/'.$ano.'</td>';/*mes atual e ano*/

print '<td class="mes"><a href="?data='.$dia.'/'.$mes_prox.'/'.$ano_prox.'" title="Próximo mês"> » </a></td>';/*Proximo mês*/

print '</tr><tr>';

print '<td class="sem">D</td>';//printar os dias da semana

print '<td class="sem">S</td>';

print '<td class="sem">T</td>';

print '<td class="sem">Q</td>';

print '<td class="sem">Q</td>';

print '<td class="sem">S</td>';

print '<td class="sem">S</td>';

 

print '</tr><tr>';

 

$dt = 1;

 

if($branco > 0){

 

for($x = 0; $x < $branco; $x++){

print '<td> </td>';/*preenche os espaços em branco*/

$dt++;

 

}

}

 

for($i = 1; $i <= $n; $i++ ){/*agora vamos no banco de dados verificar os evendos*/

 

$dtevento = $i."-".$month."-".$ano;

 

$sqlag = mysql_query("SELECT * FROM agenda WHERE dtevento = '$dtevento'") or die(mysql_error());

 

$num = mysql_num_rows($sqlag);/*quantos eventos tem para o mes*/

$idev = @mysql_result($sqlag, 0, "dtevento");

$eve = @mysql_result($sqlag, 0, "evento");

 

if($num > 0){/*prevalece qualquer dia especial do calendario, por isso está em primeiro*/

 

print '<td class="evt">';

print '<a href="?d='.$idev.'&data='.$dia.'/'.$month.'/'.$ano.'" title="'.$eve.'">'.$i.'</a>';

print '</td>';

 

$dt++;/*incrementa os dias da semana*/

 

@$qt++;/*quantos eventos tem no mes*/

 

}elseif($i == $hoje){/*imprime os dia corrente*/

 

print '<td class="hj">';

print $i;

print '</td>';

$dt++;

 

}elseif($dt == 1){/*imprime os domingos*/

 

print '<td class="dom">';

print $i;

print '</td>';

$dt++;

 

}else{/*imprime os dias normais*/

print '<td class="td">';

print $i;

print '</td>';

$dt++;

 

}

 

if($dt > 7){/*faz a quebra no sabado*/

print '</tr><tr>';

$dt = 1;

 

}

 

}

 

print '</tr>';

print '</table>';

if($qt > 0){/*se tiver evento no mês imprime quantos tem */

print "Temos ".$qt." evento(s) em ".strtolower($mes)."<br>";/*mudar para caixa baixa as letras do mes*/

}

 

if(isset($_GET['d'])){/*link dos dias de eventos*/

 

$idev = $_GET['d'];

$sqlev = mysql_query("SELECT * FROM agenda WHERE dtevento = '$idev' ORDER BY hora ASC") or die(mysql_error());

$numev = mysql_num_rows($sqlev);

for($j = 0; $j < $numev; $j++){/*caso no mesmo dia tenha mais eventos continua imprimindo */

$eve = @mysql_result($sqlev, $j, "evento");/*pegando os valores do banco referente ao evento*/

$dev = @mysql_result($sqlev, $j, "dtevento");

$dsev = @mysql_result($sqlev, $j, "conteudo");

$auev = @mysql_result($sqlev, $j, "autor");

$lev = @mysql_result($sqlev, $j, "local");

$psev = @mysql_result($sqlev, $j, "data");

$nowev = date('d/m/Y - H:i', strtotime($psev));/*transforma a data para data padrão brazil*/

$hev = @mysql_result($sqlev, $j, "hora");

 

print '<table width="300" cellspacing="0" cellpadding="0">';/*monta a tabela de eventos*/

print '<tr><td class="show">'.$dev.' - '.$eve.'</td></tr>';

print '<tr><td class="linha"><b>Hora: </b>'.$hev.'hs</td></tr>';

print '<tr><td class="linha"><b>Local: </b>'.$lev.'</td></tr>';

print '<tr><td class="linha"><b>Descrição: </b>'.nl2br($dsev).'</td></tr>';/*mantem o quebra da linha para dascriçao do evento*/

print '<tr><td class="linha"><b>Postado: </b><small>'.$nowev.'hs por '.$auev.'</small></td></tr>';

print '</table>';

}

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

utilize a tag code para enviar seus códigos...

De uma echo assim

if(empty($_GET['data'])){//navegaçao entre os meses
   echo $dia = date('d');
   echo $month = date('m');
   echo $ano = date('Y');
}else{
   $data = explode('-',$_GET['data']);//nova data
   echo $dia = $data[0];
   echo $month = $data[1];
   echo $ano = $data[2];
}

 

A um tempo tive que fazer um calenário assim também, da uma olhada:

LINK INTERNO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está pegando a data de hoje!! ele printa na tela 19042012

 

utilize a tag code para enviar seus códigos...

De uma echo assim

if(empty($_GET['data'])){//navegaçao entre os meses
   echo $dia = date('d');
   echo $month = date('m');
   echo $ano = date('Y');
}else{
   $data = explode('-',$_GET['data']);//nova data
   echo $dia = $data[0];
   echo $month = $data[1];
   echo $ano = $data[2];
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não rolou nada, alguém tem uma dica ai?!?!?!

 

 

utilize a tag code para enviar seus códigos...

De uma echo assim

if(empty($_GET['data'])){//navegaçao entre os meses
   echo $dia = date('d');
   echo $month = date('m');
   echo $ano = date('Y');
}else{
   $data = explode('-',$_GET['data']);//nova data
   echo $dia = $data[0];
   echo $month = $data[1];
   echo $ano = $data[2];
}

 

A um tempo tive que fazer um calenário assim também, da uma olhada:

LINK INTERNO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara sinceramente não entendi, esse código é meio monstro pois montem com base em outro código, por isso estou perdido

não sei qual critério ele usa para pegar essa data do banco!! Estou bem confuso!!

 

E quando você envia a data pelo method get?

 

não entendi sua pergunta!! desculpe!

 

acho que estou tentando alterar uma parte do código que não tem ligação com essa base que quero, mas tbem não achei mais nada no código que mostre que ele pega essa info do banco eu alterei o código inteiro, vou mandar pra você ver!!

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<meta HTTP-EQUIV="refresh" CONTENT="30" />
<!--atualiza a pagina sozinha, no content são os segundos-->

<title>Agenda</title>

<link href="style_agenda.css" rel="stylesheet" type="text/css" />

</head>



<body>

<?php

include "sql.php";//conexão com o banco de dados

@mysql_select_db($db);//selecione o banco de dados

if(empty($_GET['data'])){//navegaçao entre os meses

   $dia = date('d');

   $month = date('m');

   $ano = date('Y');

}else{

   $data = explode('/',$_GET['data']);//nova data

   $dia = $data[0];

   $month = $data[1];

   $ano = $data[2];

}

if($month==1){//mês anterior se janeiro mudar valor

   $mes_ant = 12;

   $ano_ant = $ano - 1;

}else{

   $mes_ant = $month - 1;

   $ano_ant = $ano;

}
if($month==12){//proximo mês se dezembro tem que mudar

   $mes_prox = 1;

   $ano_prox = $ano + 1;

}else{

   $mes_prox = $month + 1;

   $ano_prox = $ano;

}



$hoje = date('j');//função importante pego o dia corrente

switch($month.@$n){/*notem duas variaveis para o switch para identificar dia e limitar numero de dias*/

   case 1: $mes = "JANEIRO";

           $n = 31;

   break;

   case 2: $mes = "FEVEREIRO";// todo ano bixesto fev tem 29 dias

           $bi = $ano % 4;//anos multiplos de 4 são bixestos

           if($bi == 0){

               $n = 29;

           }else{

               $n = 28;

           }

   break;

   case 3: $mes = "MARÇO";

           $n = 31;

   break;

   case 4: $mes = "ABRIL";

           $n = 30;

   break;

   case 5: $mes = "MAIO";

           $n = 31;

   break;

   case 6: $mes = "JUNHO";

           $n = 30;

   break;

   case 7: $mes = "JULHO";

           $n = 31;

   break;

   case 8: $mes = "AGOSTO";

           $n = 31;

   break;

   case 9: $mes = "SETEMBRO";

           $n = 30;

   break;

   case 10: $mes = "OUTUBRO";

           $n = 31;

   break;

   case 11: $mes = "NOVEMBRO";

           $n = 30;

   break;

   case 12: $mes = "DEZEMBRO";

           $n = 31;

   break;

}



$pdianu = mktime(0,0,0,$month,1,$ano);//primeiros dias do mes

$dialet = date('D', $pdianu);//escolhe pelo dia da semana

switch($dialet){//verifica que dia cai

   case "Sun": $branco = 0; break;

   case "Mon": $branco = 1; break;

   case "Tue": $branco = 2; break;

   case "Wed": $branco = 3; break;

   case "Thu": $branco = 4; break;

   case "Fri": $branco = 5; break;

   case "Sat": $branco = 6; break;

}            



   print '<table class="tabela" >';//construção do calendario

  print '<td class="mes"><a href="?data='.$dia.'/'.$mes_ant.'/'.$ano_ant.'" title="Mês anterior">  « </a></td>';/*mês anterior*/

   print '<td class="mes" colspan="5">'.$mes.' / '.$ano.'</td>';/*mes atual e ano*/

   print '<td class="mes"><a href="?data='.$dia.'/'.$mes_prox.'/'.$ano_prox.'" title="Próximo mês">  » </a></td>';/*Proximo mês*/

   print '</tr><tr>';

   print '<td class="sem">D</td>';//printar os dias da semana

   print '<td class="sem">S</td>';

   print '<td class="sem">T</td>';

   print '<td class="sem">Q</td>';

   print '<td class="sem">Q</td>';

   print '<td class="sem">S</td>';

   print '<td class="sem">S</td>';

   print '</tr><tr>';

   $dt = 1;

   if($branco > 0){

       for($x = 0; $x < $branco; $x++){

            print '<td> </td>';/*preenche os espaços em branco*/

           $dt++;

       }

   }



   for($i = 1; $i <= $n; $i++ ){/*agora vamos no banco de dados verificar os evendos*/

           $dtevento = $i."/".$month."/".$ano;

       $sqlag = mysql_query("SELECT * FROM tb_controle WHERE dtevento = '$dtevento'") or die(mysql_error());

               $num = mysql_num_rows($sqlag);/*quantos eventos tem para o mes*/

               $idev = @mysql_result($sqlag, 0, "dtevento");

               $eve = @mysql_result($sqlag, 0, "cliente");              

               if($num > 0){/*prevalece qualquer dia especial do calendario, por isso está em primeiro*/

          print '<td class="evt">';  

$sqlev = mysql_query("SELECT * FROM tb_controle WHERE dtevento = '$idev' ORDER BY hora_a ASC") or die(mysql_error());


   $numev = mysql_num_rows($sqlev);

   for($j = 0; $j < $numev; $j++){/*caso no mesmo dia tenha mais eventos continua imprimindo */

   $eve = @mysql_result($sqlev, $j, "cliente");/*pegando os valores do banco referente ao evento*/

   $dev = @mysql_result($sqlev, $j, "dtevento");

   $dsev = @mysql_result($sqlev, $j, "produtora");

   $auev = @mysql_result($sqlev, $j, "diretor");

   $lev = @mysql_result($sqlev, $j, "estudio");

   $hev = @mysql_result($sqlev, $j, "hora_a");

$hev_b = @mysql_result($sqlev, $j, "hora_b"); 

print '<table width="190" cellspacing="0" cellpadding="0">';/*monta a tabela de eventos*/

print '<tr><td class="show">'.$i.' - '.nl2br($eve).'</td></tr>';

print '<tr><td class="linha"><b>'.$hev.'hs - '.$hev_b.'hs</b></td></tr>';

print '<tr><td class="linha"><b>Local: </b>'.$lev.'</td></tr>';

print '<tr><td class="linha"><b>Dir.: </b>'.$auev.'<b>  Prod.: </b>'.nl2br($dsev).'</td></tr>';

print '</table>';

   }





          print '</td>';

          $dt++;/*incrementa os dias da semana*/

                  @$qt++;/*quantos eventos tem no mes*/





       }elseif($dt == 1){/*imprime os domingos*/

           print '<td class="dom">';

           print $i;

           print '</td>';

           $dt++;

		}elseif($dt == 7){/*imprime os domingos*/

           print '<td class="dom">';

           print $i;

           print '</td>';

           $dt++;

       }else{/*imprime os dias normais*/

                   print '<td class="td">';

           print $i;

           print '</td>';

           $dt++;

               }

       if($dt > 7){/*faz a quebra no sabado*/

       print '</tr><tr>';

       $dt = 1;

       }

   }

   print '</tr>';

   print '</table>';





?>






</body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vou tentar ajudar.

Essa verificação que você com faz strpos está meio estranha... Porque não verifica a data normalmente, como várias pessoas indicaram, com explode, etc? Eu, geralmente utilizo expressão regular (como mostrado abaixo).

 

Fiz este código tomando como base que você está usando PHP 5.3

Nele, eu monto um calendário com base na data informada.

Se não informar nenhuma data no GET, eu pego a atual.

 

Ao invés de fazer uma consulta para cada dia do mes, faço uma consulta que pega os eventos do mes inteiro.

 

 

 

<?

date_default_timezone_set('America/Sao_Paulo');

/* @var $data DateTime Objeto de data */
$data = null;

// se o usuario informou uma data valida 
if(!empty($_GET['data']) && preg_match('@^(\d{2})/(\d{2})/(\d{4})$@', $_GET['data'], $reg)){
$data = new DateTime("{$reg[3]}-{$reg[2]}-{$reg[1]}");
}

// se ainda nao tem uma data valida, pegamos a de hoje
if(empty($data)){
$data = new DateTime();
}

// pegamos o mes e ano
$mes = $data->format('m');
$ano = $data->format('Y');

// pegamos a quantidade de dias no mes
$data->setDate($ano, $mes+1, 0);
$qtdDias = $data->format('d');

// dia da semana que cai o ultimo dia do mes
$diaSemanaUltimo = $data->format('w');

// movemos o dia para o primeiro do mes selecionado
$data->setDate($ano, $mes, 1);

// dia da semana do primeiro dia do mes
$diaSemanaPrimeiro = $data->format('w');

// lista de meses
$meses = explode(',',',janeiro,fevereiro,março,abril,maio,junho,julho,agosto,setembro,outubro,novembro,dezembro');

// selecionando os eventos do mes. Assim, ao inves de 28 ~ 30 consultas, fazemos uma so
$sql = 'SELECT codevento, nome, data_evento FROM eventos WHERE data_evento BETWEEN ? AND ?';
$stm = $pdo->prepare($sql);
$stm->bindParam(1, "$ano-$mes-01");
$stm->bindParam(2, "$ano-$mes-$qtdDias");
$stm->execute();

// cache dos eventos indexados pela data
$cacheEventos = array();
// para cada evento, colocamos em cache
while($row = $stm->fetch(PDO::FETCH_ASSOC)){
$cacheEventos[ $row['data_evento'] ][] = $row;
}

//////////////////////////////////////////////////////////////////////////////
// agora, que temos tudo o que precisamos, montamos o calendario
//////////////////////////////////////////////////////////////////////////////
echo '<table width="100%">';

// cabecalho dos dias
echo '
<tr><td colspan="7" align="center">', $meses[ (int) $mes ], '/', $ano, '</td></tr>
<tr>
	<th>Dom</th>
	<th>Seg</th>
	<th>Ter</th>
	<th>Qua</th>
	<th>Qui</th>
	<th>Sex</th>
	<th>Sab</th>
</tr>';

// criando os quadros em branco até o primeiro dia da semana
echo '<tr>';
for($dia = 0; $dia < $diaSemanaPrimeiro; $dia++){
echo '<td>-</td>';
}

// escrevemos os dias do calendario
for($dia = 1; $dia<=$qtdDias; $dia++){
// atualizando o objeto de data
$data->setDate($ano, $mes, $dia);
// dia semana
$diaSemana = $data->format('w');
// temos eventos neste dia?
if(!empty($cacheEventos[ $data->format('Y-m-d') ])){
	$cor = '#FFCC00';
} else {
	// cor da celula se for sabado/domingo
	$cor = $diaSemana == 0 || $diaSemana == 6 ? '#EFEFEF'  : '#FFFFFF';
}

// exibindo o dia
echo '<td bgcolor="', $cor, '"><span>', $dia, '</span>';
// listando os eventos (se tiver)
if(!empty($cacheEventos[ $data->format('Y-m-d')] )){
	echo '<div>';
	foreach($cacheEventos[$data->format('Y-m-d')] as $evento){
		echo $evento['nome'], '<br>';
	}
	echo '</div>';
}
echo '</td>';

// é sabado?
if($diaSemana == 6){
	echo '</tr><tr>';
}
}

// escrevendo as celulas remanescentes
for($dia = $diaSemanaUltimo; $dia < 6; $dia++){
echo '<td>-</td>';
}

echo '</tr>';

echo '</table>';

 

 

 

Espero ter ajudado com o exemplo.

 

Ps.: Usem spoiler ao enviar códigos grandes!

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá Hufersil, segui suas dicas e usando seu código de calendário, tive um pequeno problema, ele da um fatal error em relação ao momento da pesquisa. nesse trecho:

 

$sql = 'SELECT * FROM tb_controle WHERE dtevento BETWEEN ? AND ?';
$stm = $pdo->prepare['$sql'];
$stm->bindParam(1, "$ano-$mes-01");
$stm->bindParam(2, "$ano-$mes-$qtdDias");
$stm->execute();

 

da erro no $pdo e nesse blindParam, como resolver??

 

 

 

Bom, vou tentar ajudar.

Essa verificação que você com faz strpos está meio estranha... Porque não verifica a data normalmente, como várias pessoas indicaram, com explode, etc? Eu, geralmente utilizo expressão regular (como mostrado abaixo).

 

Fiz este código tomando como base que você está usando PHP 5.3

Nele, eu monto um calendário com base na data informada.

Se não informar nenhuma data no GET, eu pego a atual.

 

Ao invés de fazer uma consulta para cada dia do mes, faço uma consulta que pega os eventos do mes inteiro.

 

 

 

<?

date_default_timezone_set('America/Sao_Paulo');

/* @var $data DateTime Objeto de data */
$data = null;

// se o usuario informou uma data valida 
if(!empty($_GET['data']) && preg_match('@^(\d{2})/(\d{2})/(\d{4})$@', $_GET['data'], $reg)){
$data = new DateTime("{$reg[3]}-{$reg[2]}-{$reg[1]}");
}

// se ainda nao tem uma data valida, pegamos a de hoje
if(empty($data)){
$data = new DateTime();
}

// pegamos o mes e ano
$mes = $data->format('m');
$ano = $data->format('Y');

// pegamos a quantidade de dias no mes
$data->setDate($ano, $mes+1, 0);
$qtdDias = $data->format('d');

// dia da semana que cai o ultimo dia do mes
$diaSemanaUltimo = $data->format('w');

// movemos o dia para o primeiro do mes selecionado
$data->setDate($ano, $mes, 1);

// dia da semana do primeiro dia do mes
$diaSemanaPrimeiro = $data->format('w');

// lista de meses
$meses = explode(',',',janeiro,fevereiro,março,abril,maio,junho,julho,agosto,setembro,outubro,novembro,dezembro');

// selecionando os eventos do mes. Assim, ao inves de 28 ~ 30 consultas, fazemos uma so
$sql = 'SELECT codevento, nome, data_evento FROM eventos WHERE data_evento BETWEEN ? AND ?';
$stm = $pdo->prepare($sql);
$stm->bindParam(1, "$ano-$mes-01");
$stm->bindParam(2, "$ano-$mes-$qtdDias");
$stm->execute();

// cache dos eventos indexados pela data
$cacheEventos = array();
// para cada evento, colocamos em cache
while($row = $stm->fetch(PDO::FETCH_ASSOC)){
$cacheEventos[ $row['data_evento'] ][] = $row;
}

//////////////////////////////////////////////////////////////////////////////
// agora, que temos tudo o que precisamos, montamos o calendario
//////////////////////////////////////////////////////////////////////////////
echo '<table width="100%">';

// cabecalho dos dias
echo '
<tr><td colspan="7" align="center">', $meses[ (int) $mes ], '/', $ano, '</td></tr>
<tr>
	<th>Dom</th>
	<th>Seg</th>
	<th>Ter</th>
	<th>Qua</th>
	<th>Qui</th>
	<th>Sex</th>
	<th>Sab</th>
</tr>';

// criando os quadros em branco até o primeiro dia da semana
echo '<tr>';
for($dia = 0; $dia < $diaSemanaPrimeiro; $dia++){
echo '<td>-</td>';
}

// escrevemos os dias do calendario
for($dia = 1; $dia<=$qtdDias; $dia++){
// atualizando o objeto de data
$data->setDate($ano, $mes, $dia);
// dia semana
$diaSemana = $data->format('w');
// temos eventos neste dia?
if(!empty($cacheEventos[ $data->format('Y-m-d') ])){
	$cor = '#FFCC00';
} else {
	// cor da celula se for sabado/domingo
	$cor = $diaSemana == 0 || $diaSemana == 6 ? '#EFEFEF'  : '#FFFFFF';
}

// exibindo o dia
echo '<td bgcolor="', $cor, '"><span>', $dia, '</span>';
// listando os eventos (se tiver)
if(!empty($cacheEventos[ $data->format('Y-m-d')] )){
	echo '<div>';
	foreach($cacheEventos[$data->format('Y-m-d')] as $evento){
		echo $evento['nome'], '<br>';
	}
	echo '</div>';
}
echo '</td>';

// é sabado?
if($diaSemana == 6){
	echo '</tr><tr>';
}
}

// escrevendo as celulas remanescentes
for($dia = $diaSemanaUltimo; $dia < 6; $dia++){
echo '<td>-</td>';
}

echo '</tr>';

echo '</table>';

 

 

 

Espero ter ajudado com o exemplo.

 

Ps.: Usem spoiler ao enviar códigos grandes!

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O correto são parenteses, e não colchetes em:

$stm = $pdo->prepare($sql);

 

Note também que ali, onde você passa a variavel, não tem aspas.

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim sim, esse código eu tinha feito um teste mesmo, mas com o seu código do jeito certinho que você mandou!! da o erro!!

 

O correto são parenteses, e não colchetes em:

$stm = $pdo->prepare($sql);

 

Note também que ali, onde você passa a variavel, não tem aspas.

 

@braços

 

esses erros

 

Notice: Undefined variable: pdo in C:\Users\Edicao\Desktop\agenda\agenda_teste.php on line 279

 

Fatal error: Call to a member function prepare() on a non-object in C:\Users\Edicao\Desktop\agenda\agenda_teste.php on line 279

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gregorcs,

 

Você sabe o que é PDO?

 

Dê uma lida nela, e então você vai entender o porque está dando este erro ;)

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.