Olá, pessoal! Embora haja muitas postagens aqui no Stack com relação a este problema, nenhuma delas foi suficiente para que eu pudesse resolver o meu.
Estou criando um painel admin de um site cuja página inicial é basicamente um calendário, em cujas datas que contêm eventos é possível clicar e abrir páginas com conteúdos de aula.
No admin.php, criei um formulário para cadastrar novas datas ao mesmo tempo em que é criada automaticamente uma página com alguns recursos para que o professor ponha nela conteúdo. O formulário possui 3 campos: Título, Data e Encontro.
Então, eu estava editando o arquivo cadastrando.php e resolvi fazer com que no último campo do formulário (chamado “encontro”) fosse incluído no banco de dados, automaticamente, o mesmo nome escrito pelo professor no campo título, acrescido de “.php” (que se tornaria o nome do arquivo da nova página criada). Depois eu apagaria o campo “encontro”, para ninguém escrever nada dentro. Mas nem cheguei a fazer isso, já que o erro descrito no título desta postagem ocorreu e toda a página do admin ficou desconfigurada, desaparecendo inclusive o calendário.
Ocorre que, embora eu estivesse mexendo no arquivo cadastrando.php, o erro descreve um problema em calendario.php, que estava funcionando normalmente até então e não foi mexido.
Enfim, se alguém puder dar uma luz, agradeço muitíssimo. Eis os códigos:
no admin.php (na parte que interessa):
<!--cadastrar evento--> <div class="item-main-admin"> <p2><center> <form name="cadastrarevento" method="post" action="cadastrando.php"> Título: <input type="text" name="titulo" value="encontro-"/> </br> Data: <input type="text" name="data" placeholder="aaaa/mm/dd" /> </br> Encontro: <input type="text" name="encontro" /> </br> <input type="submit" value="Cadastrar evento" /> </form> </p2></center> </div> <!--calendario--> <div class="item-main-admin"> <?php $ eventos = montaEventos($ info); montaCalendario($ eventos); ?> </div> <script type="text/javascript" src="/administrador/calendario/jquery.js"></script> <script type="text/javascript" src="/administrador/calendario/functions.js"></script>
No cadastrando.php:
<?php error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED); $ host = "localhost"; $ user = "root"; $ pass = ""; $ banco = "calendario"; $ conexao = mysql_connect($ host, $ user, $ pass) or die(mysql_error()); mysql_select_db($ banco) or die(mysql_error()); ?> <?php mysql_query("SET NAMES 'utf8'"); mysql_query('SET character_set_connection=utf8'); mysql_query('SET character_set_client=utf8'); mysql_query('SET character_set_results=utf8'); ?> <?php $ titulo=$ _POST['titulo']; $ data=$ _POST['data']; $ encontro=$ _POST['encontro']; $ myFile = "$ titulo.php"; $ result = mysql_query("SELECT titulo FROM eventos WHERE titulo = '$ titulo'"); if (mysql_num_rows($ result)>0) { echo "O título $ titulo já existe. Crie um diferente."; } else { $ sql = mysql_query("INSERT INTO eventos(titulo, data, encontro) VALUES('$ titulo', '$ data', '$ encontro')"); $ fh = fopen($ myFile, 'w'); $ stringData = "<html><?php include 'template.php';?></html>"; fwrite($ fh, $ stringData); //header('Location: ' . $ myFile); fclose($ fh); ?> <div class="cadastro_ok"> <div id="item-cadastro_ok"> <img src="imagens/ok.png" /> </div> <div id="item-cadastro_ok"> <?php echo "Cadastro efetuado com sucesso!"; ?> </div> </div> <?php } ?> <?php echo '<meta http-equiv="refresh" content="3;URL=admin.php" />'; ?> </div> </body> </html>
****OBS.: eu havia colocado assim ($ myFile no lugar de $ encontro), e em seguida tive o erro, embora não pareça vir daí:
$ sql = mysql_query("INSERT INTO eventos(titulo, data, encontro) VALUES('$ titulo', '$ data', '$ myFile')");
E no calendario.php:
<?php function num($ num){ return ($ num < 10) ? '0'.$ num : $ num; } function montaEventos($ info){ global $ pdo; //tabela, data, titulo, encontro $ tabela = $ info['tabela']; $ data = $ info['data']; $ titulo = $ info['titulo']; $ encontro = $ info['encontro']; $ eventos = $ pdo->prepare("SELECT * FROM `".$ tabela."` "); $ eventos->execute(); $ retorno = array(); while($ row = $ eventos->fetchObject()){ $ dataArr = date('Y-m-d', strtotime($ row->{$ data})); $ retorno[$ dataArr] = array( 'titulo' => $ row->{$ titulo}, 'encontro' => $ row->{$ encontro} ); } return $ retorno; } function diasMeses(){ $ retorno = array(); for($ i = 1; $ i<=12;$ i++){ $ retorno[$ i] = cal_days_in_month(CAL_GREGORIAN, $ i, date('Y')); } return $ retorno; } function montaCalendario($ eventos = array()){ $ daysWeek = array( 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ); $ diasSemana = array( 'Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab' ); $ arrayMes = array( 1 => 'Janeiro', 2 => 'Fevereiro', 3 => 'Março', 4 => 'Abril', 5 => 'Maio', 6 => 'Junho', 7 => 'Julho', 8 => 'Agosto', 9 => 'Setembro', 10 => 'Outubro', 11 => 'Novembro', 12 => 'Dezembro' ); $ diasMeses = diasMeses(); $ arrayRetorno = array(); for($ i =1; $ i <= 12; $ i++){ $ arrayRetorno[$ i] = array(); for($ n=1; $ n<= $ diasMeses[$ i]; $ n++){ $ dayMonth = gregoriantojd($ i, $ n, date('Y')); $ weekMonth = substr(jddayofweek($ dayMonth, 1),0,3); if($ weekMonth == 'Mun') $ weekMonth = 'Mon'; $ arrayRetorno[$ i][$ n] = $ weekMonth; } } echo '<a href="#" id="volta">«</a><a href="#" id="vai">»</a>'; echo '<table border="0" width="100%">'; foreach($ arrayMes as $ num => $ mes){ echo '<tbody id="mes_'.$ num.'" class="mes">'; echo '<tr class="mes_title"><td colspan="7">'.$ mes.'</td></tr>'; echo '<tr class="dias_title">'; foreach($ diasSemana as $ i => $ day){ echo '<td>'.$ day.'</td>'; } echo '</tr><tr>'; $ y = 0; foreach($ arrayRetorno[$ num] as $ numero => $ dia){ $ y++; if($ numero == 1){ $ qtd = array_search($ dia, $ daysWeek); for($ i=1; $ i<=$ qtd; $ i++){ echo '<td></td>'; $ y+=1; } } if(count($ eventos) > 0){ $ month = num($ num); $ dayNow = num($ numero); $ date = date('Y').'-'.$ month.'-'.$ dayNow; if(in_array($ date, array_keys($ eventos))){ $ evento = $ eventos[$ date]; echo '<td class="evento"><a href="'.$ evento['encontro'].'" title="'.$ evento['titulo'].'">'.$ numero.'</a></td>'; }else{ echo '<td class="dia_'.$ numero.'">'.$ numero.'</td>'; } }else{ echo '<td class="dia_'.$ numero.'">'.$ numero.'</td>'; } if($ y == 7){ $ y=0; echo '</tr><tr>'; } } echo '</tr></tbody>'; } echo '</table>'; } ?>