eloclacs 0 Denunciar post Postado Março 31, 2015 Bom dia, esse é meu primeiro sistema em PHP e estou tentando desenvolver um sistema de comentários com login e cadastro de comentario. No caso, preciso cadastrar o comentário com o id_usuario na tabela Comentario. Por ser um sistema o.o. gostaria de saber como acesso esse id_usuario para o cadastro. Seguem as seguintes classes: <?php class Usuario { protected $idUsuario; protected $nome; protected $email; protected $senha; protected $foto; public function getIdUsuario(){ return $this->idUsuario; } public function setIdUsuario($idUsuario){ $this->idUsuario = $idUsuario; } public function getNome(){ return $this->nome; } public function setNome($nome){ $this->nome = $nome; } public function getEmail(){ return $this->email; } public function setEmail($email){ $this->email = $email; } public function getSenha(){ return $this->senha; } public function setSenha($senha){ $this->senha = $senha; } public function getFoto(){ return $this->foto; } public function setFoto($foto){ $this->foto = $foto; } }//fecha a classe ?> =============================================================================================== <?php require_once("classes/Conexao.class.php"); class UsuarioDAO{ function __construct(){ $this->con = new Conexao(); $this->pdo = $this->con->Connect(); } public function existeUsuario($email){ $query = $this->pdo->prepare("SELECT * FROM 'usuario' WHERE email = '$email'"); var_dump($query); $query->execute(); if ($query->rowCount() >= 1){ return true; }else{ return false; } }//fecha metodo existe public function logar($usuario){ try{ $param = array( ":email" => $usuario->getEmail(), ":senha" => $usuario->getSenha() ); $query = $this->pdo->prepare("SELECT * FROM usuario WHERE email = :email AND senha = :senha"); $query->execute($param); $senha = $usuario->getSenha(); if ($query->rowCount()>=1) { while ($row = $query->fetch(PDO::FETCH_ASSOC)) { if ($row['senha'] == $senha) { $_SESSION['idUsuario'] = $row['id_usuario']; } } } return $usuario; } catch(PDOException $ex){ //caso haja erro echo "ERRO:"+ $ex->getMessage(); } } public getIdUsuario(){ return $_SSESION['idUsuario']; } public function cadastrar($usuario){ try { $param = array( ":nome" =>$usuario->getNome(), ":email" => $usuario->getEmail(), ":senha" => $usuario->getSenha() ); $email = $usuario->getEmail(); if ($this->existeUsuario($email)) { echo "Usuário ja cadastrado!"; return false; }else{ $query = $this->pdo->prepare("INSERT INTO usuario(nome, email, senha) VALUES (:nome, :email, :senha)"); $query->execute($param); return true; } } catch (PDOException $ex) { echo "ERRO:"+ $ex->getMessage(); } }//fecha a funcao }//fecha classe ?> ================================================================================================ <?php require_once("/classes/Conexao.class.php"); //Incluimos o arquivo de conexão. require_once("classes/entidade/Usuario.class.php"); require_once("classes/dao/UsuarioDAO.class.php"); class comentarioDAO { //Criamos uma classe chamada cometarioDAO function __construct() { //Método contruct inicia automáricamente quando a classe é instanciada. $this->con = new Conexao(); $this->pdo = $this->con->Connect(); } public function cadatrarComentario(comentario $entComentario) { try { $query1 = $this->pdo->prepare("SELECT id_usuario FROM usuario WHERE email = $email"); $resultId = $query1->execute(array(':email'=>email)); while ($row = $resultId->fetch(PDO::FETCH_ASSOC)) { $usuario->setIdUsuario($row['id_usuario']); } $stmt = $this->pdo->prepare("INSERT INTO comentario (comentario, data, hora, id_usuario) VALUES ( :comentario, :data, :hora, :idUsuario)"); $param = array(/ ":comentario" => $entComentario->getComentario(), ":data" => date("Y/m/d"), ":hora" => date("h:i:s"), ":idUsuario" => $usuario->getIdUsuario() ); return $stmt->execute($param); } catch (PDOException $ex) { echo "ERRO: " + $ex->getMessage(); } } } ?> Quando instancio uma nova classe Usuario(); os atributos ficam zerados certo? Então como posso acessar o Id dele, eu andei pesquisando sobre Sessions mas nao sei como aplica-la na classe. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Março 31, 2015 No link abaixo você vai encontrar um exemplo parecido (o vínculo de uma pessoa com o seu endereço). http://forum.imasters.com.br/topic/523524-multiplos-insertsrollback-com-pdo/?p=2083720 Basicamente, você deve passar a referência do usuário que está sendo cadastrado. Compartilhar este post Link para o post Compartilhar em outros sites