BrunoBit 82 Denunciar post Postado Janeiro 9, 2018 Mas essa classe turma é outra classe, se você só colocar os métodos dentro dela não vai funcionar não. Testou a classe TurmaDAO? Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Janeiro 9, 2018 sim testei quando coloco a classe TurmaDAO ela não reconhece as outros classes Compartilhar este post Link para o post Compartilhar em outros sites
BrunoBit 82 Denunciar post Postado Janeiro 9, 2018 Testou com esse novo? Nesse aqui eu recoloquei o "Turma" que estava aqui: Cadastrar(Turma $turma), eu tinha tirado e tinha esquecido de recolocar, talvez ele chama algo da Classe Turma, não sei ao certo. Testa esse pra gente ver: require_once("Banco.php"); class TurmaDAO { private $pdo; private $debug; private $lastid; public function __construct() { $this->pdo = new Banco(); $this->debug = true; } public function Cadastrar(Turma $turma) { try { $sql = "INSERT INTO turma (turma, nivel, descricao, cargahoraria,endereco, cidade) VALUES (:turma, :nivel, :descricao, :cargahoraria, :endereco, :cidade)"; $param = array( ":turma" => $turma->getTurma(), ":nivel" => $turma->getNivel(), ":descricao" => $turma->getDescricao(), ":cargahoraria" => $turma->getCarga(), ":endereco" => $turma->getEndereco(), ":cidade" => $turma->getCidade() // ":maxvaga" => $turma->getMaxvaga(), // ":minvaga" => $turma->getMinvaga() ); $res = $this->pdo->ExecuteNonQuery($sql, $param); $this->setLastId($this->pdo->GetLastId()); return $res; } catch (PDOException $ex) { if ($this->debug) { echo "ERRO: {$ex->getMessage()} LINE: {$ex->getLine()}"; } return false; } } public function getLastId(){ return $this->lastid; } public function setLastId($id){ $this->lastid = $id; } } Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Janeiro 10, 2018 Eu retirei todos os codigos php da pagina deixando só os que você me enviou, para ver se dava de resouver isoladamente esse problema sem distração de nenhum outro codigo. Compartilhar este post Link para o post Compartilhar em outros sites
BrunoBit 82 Denunciar post Postado Janeiro 10, 2018 Mas tem que funcionar com os outros também, a alteração que a gente fez foi bem simples, acrescentamos só 2 métodos onde $this->setLastId() seta o último ID cadastrado e disponibiliza ele no método getLastId(), essa parte foi resolvida, o que é preciso ver agora é essa parte aqui: Cadastrar(Turma $turma), é como se na variável $turma fosse passado todos os métodos da classe Turma: function Cadastrar(Turma $turma){ $turma->getTurma(), $turma->getTurma(), $turma->getNivel(), $turma->getDescricao(), $turma->getCarga(), $turma->getEndereco(), $turma->getCidade() } Testou o último código que te passei? Tem que testar ele com todos os códigos. Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Janeiro 11, 2018 Eu colei o código que você me enviou na pasta TurmaDAO.php e depois colei esse código na TurmaView.php: require_once("../Controller/TurmaController.php"); $turma = new TurmaDAO(); //$tur = new Turma(); echo "<pre>"; print_r($turma->Cadastrar()); echo "</pre>"; echo "<pre>"; print_r($turma->getLastId()); echo "</pre>"; ?> Tomei o cuidado de remover todos os outros códigos em php, para que não atrapalhassem. mas mesmo assim apareceu esse erro: Catchable fatal error: Argument 1 passed to TurmaDAO::Cadastrar() must be an instance of Turma, none given, called in C:\xampp\htdocs\IPAE\Admin-bc\View\TurmaView\TurmaView.php on line 9 and defined in C:\xampp\htdocs\IPAE\DAL\TurmaDAO.php on line 16 Compartilhar este post Link para o post Compartilhar em outros sites
BrunoBit 82 Denunciar post Postado Janeiro 11, 2018 Coloca todos os arquivos novamente e faz um novo teste com exatamente esse código aqui: require_once("Banco.php"); class TurmaDAO { private $pdo; private $debug; private $lastid; public function __construct() { $this->pdo = new Banco(); $this->debug = true; } public function Cadastrar(Turma $turma) { try { $sql = "INSERT INTO turma (turma, nivel, descricao, cargahoraria,endereco, cidade) VALUES (:turma, :nivel, :descricao, :cargahoraria, :endereco, :cidade)"; $param = array( ":turma" => $turma->getTurma(), ":nivel" => $turma->getNivel(), ":descricao" => $turma->getDescricao(), ":cargahoraria" => $turma->getCarga(), ":endereco" => $turma->getEndereco(), ":cidade" => $turma->getCidade() // ":maxvaga" => $turma->getMaxvaga(), // ":minvaga" => $turma->getMinvaga() ); $res = $this->pdo->ExecuteNonQuery($sql, $param); $this->setLastId($this->pdo->GetLastId()); return $res; } catch (PDOException $ex) { if ($this->debug) { echo "ERRO: {$ex->getMessage()} LINE: {$ex->getLine()}"; } return false; } } public function getLastId(){ return $this->lastid; } public function setLastId($id){ $this->lastid = $id; } } E me informa se apareceu algum erro. Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Janeiro 11, 2018 Vou mandar a parte da View que eu crio o cadastro. require_once("../Model/Turma.php"); require_once("../Controller/TurmaController.php"); $turmaController = new TurmaController(); $cod = 0; $turma = ""; $nivel = ""; $endereco = ""; $cidade = ""; $descricao = ""; $carga = ""; $resultado = ""; $spResultadoBusca = ""; $listaTurmasBusca = []; if (filter_input(INPUT_POST, "btnGravar", FILTER_SANITIZE_STRING)) { $turma = new Turma(); $turma->setTurma(filter_input(INPUT_POST, "txtTurma", FILTER_SANITIZE_STRING)); $turma->setNivel(filter_input(INPUT_POST, "slNivel", FILTER_SANITIZE_STRING)); $turma->setDescricao(filter_input(INPUT_POST, "txtDescricao", FILTER_SANITIZE_STRING)); $turma->setCarga(filter_input(INPUT_POST, "txtCarga", FILTER_SANITIZE_STRING)); $turma->setEndereco(filter_input(INPUT_POST, "txtEndereco", FILTER_SANITIZE_STRING)); $turma->setCidade(filter_input(INPUT_POST, "txtCidade", FILTER_SANITIZE_STRING)); if (!filter_input(INPUT_GET, "cod", FILTER_SANITIZE_NUMBER_INT)) { //Cadastrar if ($turmaController->Cadastrar($turma)) { ?> <script> document.cookie = "msg=1"; document.location.href = "?pagina=turma"; </script> <?php } else { $resultado = "<div class=\"alert alert-danger\" role=\"alert\">Houve um erro ao tentar cadastrar a turma.</div>"; } } else { //Editar $turma->setCod(filter_input(INPUT_GET, "cod", FILTER_SANITIZE_NUMBER_INT)); if ($turmaController->Alterar($turma)) { ?> <script> document.cookie = "msg=2"; document.location.href = "?pagina=turma"; </script> <?php } else { $resultado = "<div class=\"alert alert-danger\" role=\"alert\">Houve um erro ao tentar alterar a turma.</div>"; } } } Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Janeiro 11, 2018 Coloquei esse código abaixo $turma = new TurmaDAO(); //$tur = new Turma(); echo "<pre>"; print_r($turma->Cadastrar($turma)); echo "</pre>"; echo "<pre>"; print_r($turma->getLastId()); echo "</pre>"; e retornou esse erro Catchable fatal error: Argument 1 passed to TurmaDAO::Cadastrar() must be an instance of Turma, instance of TurmaDAO given, called in C:\xampp\htdocs\IPAE\Admin-bc\View\TurmaView\TurmaView.php on line 62 and defined in C:\xampp\htdocs\IPAE\DAL\TurmaDAO.php on line 16 Compartilhar este post Link para o post Compartilhar em outros sites
BrunoBit 82 Denunciar post Postado Janeiro 11, 2018 $turma = new TurmaDAO(); $tur = new Turma(); echo "<pre>"; print_r($turma->Cadastrar($tur)); echo "</pre>"; echo "<pre>"; print_r($turma->getLastId()); echo "</pre>"; Tenta assim agora pra gente ver, se der erro me manda aí o erro. Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Janeiro 11, 2018 parece que agora o erro está somente da DAO; Error on ExecuteNonQuery(): SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'turma' cannot be null SQL: INSERT INTO turma (turma, nivel, descricao, cargahoraria,endereco, cidade) VALUES (:turma, :nivel, :descricao, :cargahoraria, :endereco, :cidade) Parameters: Array ( [:turma] => [:nivel] => [:descricao] => [:cargahoraria] => [:endereco] => [:cidade] => ) Compartilhar este post Link para o post Compartilhar em outros sites
BrunoBit 82 Denunciar post Postado Janeiro 11, 2018 Isso aconteceu pq toda essa galerinha aqui debaixo ta retornando null, eles não foram setados: public function Cadastrar(Turma $turma){ [code...] $turma->getTurma(), // null $turma->getNivel(), // null $turma->getDescricao(), // null $turma->getCarga(), // null $turma->getEndereco(), // null $turma->getCidade() // null [...code] } Agora tenta fazer o seguinte: $turma = new TurmaDAO(); $tur = new Turma(); $tur->setTurma("informe a turma"); $tur->setNivel("informe o nível"); $tur->setDescricao("informe a descrição"); $tur->setCarga("informe a carga"); $tur->setEndereco("informe o endereço"); $tur->setCidade("informe a cidade"); echo "<pre>"; print_r($turma->Cadastrar($tur)); echo "</pre>"; echo "<pre>"; print_r($turma->getLastId()); echo "</pre>"; Testa aí agora pra gente ver. Compartilhar este post Link para o post Compartilhar em outros sites
gedmilson 5 Denunciar post Postado Janeiro 11, 2018 Finalmente parece que funcionou. Muito obrigado pela a sua ajuda. Compartilhar este post Link para o post Compartilhar em outros sites