1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

$_SESSION não está mantendo objeto

To fazendo um projeto onde o usuário coloca dados em uma página HTML, onde através de um $_POST é direcionado pra outra onde apresenta o resultado de um calculo com os dados. Nessa segunda página, assim que é redirecionado, é a onde é feito a lógica com PHP. Nessa página aparece o resultado, e eu coloquei um botão pra gravar no banco de dados, o problema é que quando é usado esse botão da um refresh na página perdendo todo o conteudo do post, a solução que eu achei foi usar a $_SESSION pra guardar os dados colocando o objeto php já pronto e preenchido lá dentro. Só que esse session não ta guardando objetos, eu já testei com string e int e ele guarda. Vou colocar aqui o código da segunda página.


<?php
    session_start();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Resultado e gravacao</title>
</head>
<body>
    <form action="resultado.php" method="post">        
        <input type="submit" value="Gravar" name="btGravar"/><br>

        <?php
            //chama a classe controller
            include_once("controller/avaliacaoProfessorCtr.class.php");
                //ve se foi clicado o botão pra calcular na 1ª página
                if(isset($_POST['btCalcular'])){        
                    try{
                        //ja cria o objeto dentro de um slot na session
                        $_SESSION['avaliProf'] = new AvaliacaoProfessorCtr();

                        //executa o metodo pra calcular que ja retorna o resultado
                        //esse metodo funciona e da o retorno correto
                        echo "Total com bônus é R$".$_SESSION['avaliProf']->executeCalcular()."<br>";
                    }catch(Exception $ex){
                        echo "<h2>".$ex->getMessage()."</h2";
                    }
                }
                //verifica o botao dessa segunda pagina, pra caso o usuario queira gravar os dados no banco de dados
                if(isset($_POST['btGravar'])){
                    try{
                        //o metodo pra gravar no banco de dados com retorno em string
                        echo $_SESSION['avaliProf']->executeGravar();
                    }catch(Exception $ex){
                        echo "<h2>".$ex->getMessage()."</h2";
                    }
                }
        ?>        

    </form>

</body>
</html>

No segundo momento a string não é retornada e não é gravado nada no banco de dados. Sendo que colocando a gravação junto com o calculo ele retorna a string e é gravado os dados no banco de dados.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags session php html ou faça a sua própria pergunta.