Gelado 0 Denunciar post Postado Março 19, 2010 Estou com problemas com duas variaveis que no navegador diz que não foi declarada. Não tenho a menhor ideia de como resolvel, isso é um calendario/agenda que estou editando para o que eu preciso mas ja analizei o código original e eu não estraguei nada (acho) Por favor.. ajuda! variavel 'n' $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; } note: a linha que está com problema é: switch($month.$n){/*notem duas variaveis para o switch para identificar dia e limitar numero de dias*/ variavel 'qt' $sqlag = mysql_query("SELECT * FROM calendario 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*/ } nota: a linha que está com problema no segundo codigo é: if($qt > 0){/*se tiver evento no mês imprime quantos tem */ Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Março 19, 2010 daonde voce pega as variaveis $month e $n e onde voce monta a $dtevento? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Março 19, 2010 Olá, Conforme o aviso existente no fórum de origem deste post, não é permitida a postagem de dúvidas nesta área, motivo pelo qual este tópico será movido para o fórum principal deste assunto. Tópico Movido Origem: Laboratório de scripts (PHP) http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Destino: PHP - Patrocínio: TreinaWeb Compartilhar este post Link para o post Compartilhar em outros sites
Gelado 0 Denunciar post Postado Março 19, 2010 a variavel $month não é o problema, pois ela ja está declarada if(empty($_GET['data'])){//navegaçao entre os meses $dia = date('d'); $month =ltrim(date('m'),"0"); $ano = date('Y'); }else{ $data = explode('/',$_GET['data']);//nova data $dia = $data[0]; $month = $data[1]; $ano = $data[2]; } o problema é a $n que não é... isso é possivel? segue código completo original <?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 = ltrim(date('m'),"0"); $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>'; } } ?> modificado... <?php if(file_exists("config/init.php")) { require "config/init.php"; } else { echo "Arquivo init.php não foi encontrado"; exit; } if(!function_exists("Abre_Conexao")) { echo "Erro o arquivo config/init.php foi auterado, não existe a função Abre_Conexao"; exit; } if(empty($_GET['data'])){//navegaçao entre os meses $dia = date('d'); $month =ltrim(date('m'),"0"); $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; Abre_Conexao(); $sqlag = mysql_query("SELECT * FROM calendario 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']; Abre_Conexao(); $sqlev = mysql_query("SELECT * FROM calendario 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 ="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>'; } } ?> reparem que eu não mudei nada em relação as variaveis que estão com problema.. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Março 19, 2010 Mas então, você não precisa passar ela no switch, ne?! switch( $month ){ Qnto à outra variável, como ela é uma contadora, inicialize ela com 0, antes de tentar fazer o incremento. Compartilhar este post Link para o post Compartilhar em outros sites
Gelado 0 Denunciar post Postado Março 19, 2010 certo, fiz o que voce disse, tirei a variavel $n do swtch e na linha if($qt > 0){/*se tiver evento no mês imprime quantos tem */mudei para if($qt = 0){/*se tiver evento no mês imprime quantos tem */ e resolvel o problema! Uhuu! Agora vou terminar as outras páginas aí se der problemas na hora de listar os eventos eu posto aqui. Obrigado, cara! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Gelado 0 Denunciar post Postado Março 19, 2010 o problema continua, quando é cadastrado um evendo o mesmo é mostrado no calendario e se ficasse if($qt = 0){/*se tiver evento no mês imprime quantos tem */dava erro, não mostrava o resultado, então tive que trocar "=" por ">" ai deu certo.. p problema que ele ainda fala que a variavel $qt não está definida.. mostra o resultado tudo certinho mas com a frase e, independente de usar "=" ou ">" vem a frase. Notice: Undefined variable: qt in C:\apache2triad\htdocs\agenda\calendario\calendario.php on line 222 como resolvo isso? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Março 19, 2010 Voce alterou no lugar errado. deixe: if($qt > 0){/*se tiver evento no mês imprime quantos tem */ e: $qt=0;/* aqui você está inicializando a variavel antes de tentar usar ela */ 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*/ Compartilhar este post Link para o post Compartilhar em outros sites
Gelado 0 Denunciar post Postado Março 19, 2010 eu fiz oq você disse, mas quando tem um evendo registrado ele mostra "temos 'x' eventos em março" e se eu coloco que $qt = 0 isso some. tem algun jeito de manter isso sem dar problema ou vou ter que abandonar essa opção =/ Compartilhar este post Link para o post Compartilhar em outros sites
Gelado 0 Denunciar post Postado Março 19, 2010 descobrir que se eu por na url "?qt" não dá problema nenhum.. agora, existe alguma forma de redirecionar automaticamente - no caso da index.php - para "index.php?qt" isso, verificando a url e redirecionando. Ex. se eu entrar http://127.0.0.1/ ir automaticamente para http://127.0.0.1/index.php?qt. é possivel? Compartilhar este post Link para o post Compartilhar em outros sites
Gelado 0 Denunciar post Postado Março 19, 2010 esquece isso... tem alguma outra forma de declarar essa variável? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Março 19, 2010 Releia o meu post em: http://forum.imasters.com.br/index.php?/topic/387692-erro-com-variaveis-php/page__view__findpost__p__1508153 Se ainda tiver dúvidas, reposte o teu código, já com essa alteração que sugeri. Compartilhar este post Link para o post Compartilhar em outros sites