Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Não consigo mostrar a mensagem de Erro

Olá pessoal! Tenho alguns formulários e preciso dar um feedback ao usuário se a ação foi realizada com sucesso ou não, tTenho um aquivo chamado 'mostra-alerta.php' que tem o seguinte código:

session_start();

function mostraAlerta($tipo) {
    if(isset($_SESSION[$tipo])) {
?>
        <p class="<?= $tipo ?>"><?= $_SESSION[$tipo]?></p>
<?php
        unset($_SESSION[$tipo]);
    }
}

O formulário:

<?php
error_reporting(E_ALL ^ E_NOTICE); 
require_once("componentes/cabecalho-logica.php"); 
require_once("usuario/banco-usuario.php");
require_once("usuario/mostra-alerta.php");
require_once("usuario/logica-usuario.php");
$id = $_GET['id'];
$tipo =$_GET['type'];
$id_projeto = $_GET['pro'];
$projeto = mostraProjeto($conexao, $id_projeto);

$area = $projeto['area'];
?>
<br>
<br>
<br>
<br>
<br>
<br>
<?php if(usuarioEstaLogado()){ ?>
<div class="container">
    <h3>Atribuir avaliador ao projeto </h3>

        <div class="row">
        <form class="col s12" method="post" action="atribui-avaliador.php?id=<?=$id;?>&type=<?=$tipo;?>&pro=<?=$id_projeto;?>" enctype="multipart/form-data">
            <?php  mostraAlerta("success");
                       mostraAlerta("danger"); ?>
          <div class="row">
            <div class="input-field col s12">
              <i class="material-icons prefix">description</i>
          <input id="first_name" disabled type="text" name="nome" class="validate" value="<?=$projeto['nome_projeto'];?>" >
            </div>

          </div>

          <div class="row">
            <div class="input-field col s12">
                <i class="material-icons prefix">group</i>
              <input id="telefone" type="text" name="autores" class="validate" value="<?=$projeto['autores'];?>" disabled>

              <label for="telefone"></label>
            </div>
          </div>

          <div class="row">
              <div class="input-field col s12">
                  <i class="material-icons prefix">group_add</i>
                  <select name="avaliadores">
                      <?php $avaliadores = mostraTodosAvaliadoresDaArea($conexao, $area);
                          foreach($avaliadores as $avaliador):{?>
                          <option value="<?=$avaliador['id'];?>"><?=$avaliador['nome_avaliadores'];?></option>
                      <?php }endforeach; ?>    
                  </select>    

              </div>

          </div>
          <div class="row">
             <div class="file-field input-field">
                  <div class="btn blue">
                    <span><i class="material-icons">attach_file</i></span>
                    <input type="file" name="arquivo2" multiple>
                  </div>
                  <div class="file-path-wrapper">
                    <input class="file-path validate" type="text"  placeholder="Selecione seu trabalho">
                  </div>
                </div>
        </div>




          <button type="submit" class="waves-effect waves-light btn green">Atribuir avaliador<i class="material-icons right">check</i></button>
          <button type="reset" class="waves-effect waves-light btn red">Limpar Campos<i class="material-icons right">clear</i></button>
          <a href="dashboard-administrador.php?id=<?=$id;?>&type=<?=$tipo;?>" class="waves-effect waves-light btn yellow">Voltar<i class="material-icons right">keyboard_return</i></a>


         </form>
         </div> 
     </div>

?>

<?php }else{
    header("location:index.php");
} ?>
<?php
3 respostas

E o arquivo 'atribui-avaliador.php':

<?php 
require_once("usuario/banco-usuario.php");


$arquivo2 = $_FILES['arquivo2'];
$id_avaliador =  $_POST['avaliadores'];
$id = $_GET['id'];
$tipo = $_GET['type'];
$uploaddir = 'upload2/';
$nome_real = $_FILES['arquivo2']['name'];
$uploadfile = $uploaddir . $_FILES['arquivo2']['name'];
$id_projeto =  $_GET['pro'];



        if(empty($arquivo2)) 
        {

            $_SESSION["danger"] = "Selecione um arquivo para upload";
            header("location:formulario-atribuicao.php?id=$id&type=$tipo&pro=$id_projeto");
        }
        else
        {
            $projeto = verificaProjetoAvaliador($conexao, $id_projeto);
            if($projeto['id_avaliador']==null)
            {
                $resultado = atribuiAvaliador($conexao, $id, $id_avaliador,$nome_real,$id_projeto);


                if ($resultado)
                {    

                    if(move_uploaded_file($_FILES['arquivo2']['tmp_name'], $uploadfile))
                    {
                        $_SESSION["success"] = "Avaliador atribuido com sucesso";
                        header("location:formulario-atribuicao.php?id=$id&type=$tipo&pro=$id_projeto");
                    }

                    else
                    {
                        $_SESSION["danger"] = "Não foi possível atribuir avaliador ao trabalho. Tente mais tarde ou entre em contato com o conselho.";
                        header("location:formulario-atribuicao.phpid=$id&type=tipo&pro=$id_projeto");
                    }
                }

                else
                {
                    $_SESSION["danger"] = "Erro ao fazer upload do arquivo. Por favor verifique o nome do seu arquivo.";
                    header("location:formulario-atribuicao.php?id=$id&type=$tipo&pro=$id_projeto");

                }
            }
            else
            {
                $_SESSION["danger"] = "Esse projeto já foi atribuido a um avaliador.";
                    header("location:formulario-atribuicao.php?id=$id&type=$tipo&pro=$id_projeto");

            }    
        }


 ?>

No entanto, não consigo mostrar a mensagem. Alguém sabe onde pode estar o erro ?

solução!

Oi Thiago, acho que o problema está no seu atribui-avaliador.php, como você não está inicializando a sessão, você não tem acesso ao $_SESSION, lembre-se, toda vez que precisar alterar algo nesse global, você precisa usar o session_start

Funcionou! Muito obrigado, Wanderson!