Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eloclacs

Como acessar atributos de outra classe

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.