Gregorcs 1 Denunciar post Postado Abril 19, 2012 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
Rafael Impacto 15 Denunciar post Postado Abril 19, 2012 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
Gregorcs 1 Denunciar post Postado Abril 19, 2012 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
Eduardo Villa 2 Denunciar post Postado Abril 19, 2012 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
leonardo_S 1 Denunciar post Postado Abril 19, 2012 $data = substr('04/04/12',0,2); $value = strpos($data,'0'); if($value === 0 || $value === 1) echo 'Ok'; else echo 'Error'; Compartilhar este post Link para o post Compartilhar em outros sites
Gregorcs 1 Denunciar post Postado Abril 19, 2012 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
Eduardo Villa 2 Denunciar post Postado Abril 19, 2012 Como você esta passando a data via $_GET? Da um echo em $_GET['data'] e manda ai pra gente ver... Compartilhar este post Link para o post Compartilhar em outros sites
Gregorcs 1 Denunciar post Postado Abril 19, 2012 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
Eduardo Villa 2 Denunciar post Postado Abril 19, 2012 mande o código deste trecho... Compartilhar este post Link para o post Compartilhar em outros sites
Gregorcs 1 Denunciar post Postado Abril 19, 2012 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
Eduardo Villa 2 Denunciar post Postado Abril 19, 2012 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
Gregorcs 1 Denunciar post Postado Abril 19, 2012 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
Gregorcs 1 Denunciar post Postado Abril 19, 2012 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
Eduardo Villa 2 Denunciar post Postado Abril 19, 2012 Ainda não rolou nada, alguém tem uma dica ai?!?!?! E quando você envia a data pelo method get? Compartilhar este post Link para o post Compartilhar em outros sites
Gregorcs 1 Denunciar post Postado Abril 19, 2012 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
hufersil 145 Denunciar post Postado Abril 19, 2012 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
Gregorcs 1 Denunciar post Postado Abril 20, 2012 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
hufersil 145 Denunciar post Postado Abril 20, 2012 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
Gregorcs 1 Denunciar post Postado Abril 20, 2012 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
hufersil 145 Denunciar post Postado Abril 20, 2012 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