Pular para o conteúdo

ajuda com Orientação objetos em PHP

Responder tópico
  • Denunciar
  • Indicar

1. ajuda com Orientação objetos em PHP

Enviado em 30/04/2010 - 09:55h

#oi eu to desenvolvendo um sistema de gerencia de projetos todo orientado a objetos.
#so que preciso de uma ajuda. vo por um exemplo simples ai do que eu tenho e oque eu queria fazer.

Class Projeto
{
private $id = null;
private $nome = null;
private $datainicio = null;
private $datafim = null;
private $tarefas = null; //Array de objetos do tipo Tarefa

public function getId(){ return $id; }
public function setId($id){ $this->id = $id; }

public function getNome(){ return $nome; }
public function setNome($nome){ $this->nome = $nome; }

public function getDatainicio(){ return $datainicio; }
public function setDatainicio($datainicio){ $this->datainicio = $datainicio; }

public function getDatafim(){ return $datafim; }
public function setDatafim($datafim){ $this->datafim = $datafim; }

public function getTarefas(){ return $tarefas; }
public function addTarefas($idTarefa, $tarefa){ $this->tarefas[$idTarefa] = $tarefa; }
public function removeTarefas($idTarefa){ $this->tarefas[$idTarefa] = null; }

public __contruct(){}
}

class Tarefa
{
private $id = null;
private $idprojeto = null;
private $nome = null;
private $datainicio = null;
private $datafim = null;

public function getId(){ return $id; }
public function setId($id){ $this->id = $id; }

public function getIdprojeto(){ return $idprojeto; }
public function setIdprojeto($idprojeto){ $this->idprojeto = $idprojeto; }

public function getNome(){ return $nome; }
public function setNome($nome){ $this->nome = $nome; }

public function getDatainicio(){ return $datainicio; }
public function setDatainicio($datainicio){ $this->datainicio = $datainicio; }

public function getDatafim(){ return $datafim; }
public function setDatafim($datafim){ $this->datafim = $datafim; }
}

#blz duas classes bem simples.
#
#dai vo faze meu select lah e pega todos os projetos e monta um array e então selecionar todas as tarefas e #separalas por projeto. por exemplo:

$idsProjetos = "-1";
$projetos = Array(); # aqui vou guardar meus projetos

$sql = mysql_query('select * from projetos');
while($res = mysql_fetch_assoc($sql))
{
$projeto = new Projeto();
$projeto->setId($res['id']);
$projeto->setNome($res['nome']);
$projeto->setDatainicio($res['datainicio']);
$projeto->setDatafim($res['datafim']);
$projetos[$projeto->getId()] = $projeto;
$idsProjetos .= ','.$projeto->getId();
}

#até acho que ta beleza o meu problema vem agora

$sql = mysql_query('select * from tarefas where idprojeto in ('.$idsProjetos.')');
while($res = mysql_fetch_assoc($sql))
{
$tarefa = new Tarefa();
$tarefa->setId($res['id']);
$tarefa->setIdprojeto($res['idprojeto']);
$tarefa->setNome($res['nome']);
$tarefa->setDatainicio($res['datainicio']);
$tarefa->setDatafim($res['datafim']);

# agora vem meu problema como eu faço algo assim? desse jeito não funciona.
# mais acho que da pra entender oque eu quero fazer.

((Projeto)$projetos[$tarefa->getIdprojeto()])->addTarefa($tarefa->getId(), $tarefa);

# isso que eu não to conseguindo fazer, se eu consegui fazer isso ai resolvo todos os meus problema. ajuda ai =)

}



Responder tópico

2. Monte a string Sql antes de executar

Enviado em 30/04/2010 - 10:24h

E depois de um echo de teste para analizar a string Sql;

Onte está:
$sql = mysql_query('select * from tarefas where idprojeto in ('.$idsProjetos.')');

FAÇA:

.
.
.

$sql = "select * from tarefas where idprojeto in ('.$idsProjetos.')";
echo $sql; exit; // LINHA SÓ PARA TESTE

mysql_query('select * from tarefas where idprojeto in ('.$idsProjetos.')');

.
.
.

capture o resultado do echo da linha de teste e tente o executar no phpmyadmin ou outro front adm do mysql, certamente se evidenciará melhor o erro.

3. eu sei eu sei

Enviado em 30/04/2010 - 11:16h

vlw mais esse sql do jeito que tah ai tah funcionando. meu problema é no final. quero saber como do um cast em um objeto do tipo Projeto que está dentro do array projetos

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder