Ir para conteúdo

POWERED BY:

Arquivado

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

Gelado

Erro com variaveis PHP

Recommended Posts

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

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

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

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

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

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

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

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

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

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

×

Informação importante

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