Ir para conteúdo

POWERED BY:

Arquivado

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

calcio

Insert cpm Classe

Recommended Posts

Estou desenvolvendo um sistema usando PHP 5 e usando classes.Estou apanhando pra fazer um mísero insert.Alguem pode postar algum exemplo. Mas tem q ter campos de Checkbox e presica usar os Beans (gets e sets)

Compartilhar este post


Link para o post
Compartilhar em outros sites

uhnm, legal, dúvida de classes ! :Dentão ferinha ... como esta essa sua classe !?ela esta mapeada com a tabela ... ja que voce falou de Beans, manja hibernate do JAVA? É assim que esta a sua classe, mapeadenha, bonetenha pans ...posta um preview dela ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

Void :, ñ sei nada de java rs. mas posso te afirmar que os esquemas dos Beans é o que é usado no java. rs.

Tenho várias Classes Se eu postar aki vão me banir! kkkkk.

 

só pra entender 2 classes básicas.

 

Classe 1 essa classe basicamente tem 2 métodos. O Método POPULAR faz um loop para preencher todos os SETs da classe2 e o O Método RECUPERAR faz um loop para recuperar todos os GETs da classe2

...function popular($vetor){		foreach($vetor as $campo => $valor){			eval("\$this->fam->set_$campo('$valor');");		}	}		function recuperar($vetor){		foreach($vetor as $campo => $valor){			if($this->valores == null){				eval("\$this->valores=\$this->fam->get_$campo();");			}else{				eval("\$this->valores=\$this->valores.';'.trim(\$this->fam->get_$campo());");			}		}		return $this->valores;	}...
Classe2 Essa classe é a classe dos Beans

...	function set_campo1($valor){		$this->cd_matric = $valor;	}	 	function get_campo1(){		return $this->cd_matric;	}	 	function set_campo2($valor){		$this->cd_fam = $valor;	}	 	function get_campo2(){		return $this->cd_fam;	}	 	function set_campo3($valor){		$this->dt_fam = $valor;	}	 	function get_campo3(){		return $this->dt_fam;		}...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok ...

bom, ja vi várias formas de criar métodos de insert por ai ...

 

métodos que recebem por parametro um array de campos, e um array de valores, depois utilizam o implode(",",array);

da uma olhada no implode http://br2.php.net/manual/pt_BR/function.implode.php

 

E tambem métodos com array associativos, eu acho o mais correto ...

exemplo, o cara passa por parametro um array assim:

$array = array('campo1'=>'valor1','campo2'=>'valor2');

depois ele da um foreach em cima disso ae ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok ...bom, ja vi várias formas de criar métodos de insert por ai ...métodos que recebem por parametro um array de campos, e um array de valores, depois utilizam o implode(",",array);da uma olhada no implode http://br2.php.net/manual/pt_BR/function.implode.phpE tambem métodos com array associativos, eu acho o mais correto ...exemplo, o cara passa por parametro um array assim:$array = array('campo1'=>'valor1','campo2'=>'valor2');depois ele da um foreach em cima disso ae ...

Void :, até aí tudo quase tudo bem. Concordo q o Arr. associativo seja o melhor. Porem meu problema é como monta o array de Campos e depois Juntar com o resultado dos meus Gets. E tem outro complicador os campos de checkbox

Compartilhar este post


Link para o post
Compartilhar em outros sites

calma ae, vamos la Calcião!Desculpa a intimidade ... hehehehComo é que esta funcionando o seu sistema hoje, voce tem uma classe somente para o banco de dados certo ... então o método insert seria pertinente a classe para abstração com o banco de dados, ou tb poderia ser pertinente aos objetos DAO se voce possuir em seu sistema.Eu não concordo com os dois métodos que voce criou ... recuperar, e popular ... acho que não é viável para a situação ... não sei, só uma conclusão precipitadamas vamos uma dúvida por vez, primeiramente, é o método insert que voce quer criar certo !?É que esta meio complicado o entendimento, pq eu to pensando de uma forma, e voce esta pensando de outra ... com certeza, mas agente se ageita :DFala pra mim, como é que estam as suas classes hoje, como voce esta trabalhando, você tem uma classe para abstração com o banco de dados? você tem classes que acessam diretamente o banco, os objetos DAO ...Da uma especificada nas coisa ae!ps.:sobre o checkbox, é a mesma coisa, não tem diferença nenhuma ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi mal, esqueci de dizer q estou tentando fazer no MODELO MVC. Basicamente tenho 3 "camadas" HTML, Controle e Dados.

 

A camada de controle, tem uma Classe que delega oq a camada irá fazer, uma interface. Essa interface chama as classes que postei lá em cima.

 

A camada de Dadost em uma Classe que delega oq a camada irá fazer, uma interface. Essa interface tem uma classe DAO como você falou. nela tem métodos que invocam Inserts, Updates e Deletes de uma outra classe.

 

O meu problema em si ñ está em fazer o insert propriamente dito, e sim levar os valores para o insert. Em relação ao checkbox tenho um pequeno grave problema. cada checkbox esta com um nome ñ com o mesmo nome como deveria, e na base de dados existe um campo pra cada checkbox.

 

no form imagine um grupo de checkbox pra saber qual o interesse do usuário.

<input type="checkbox" name="chk_interrese1" value="TV">TV | <input type="checkbox" name="chk_interrese2" value="Rário">Rádio | etc...

e no banco a tb está esperando interesse1 e interrese2, ou seja, um campo pra cada interesse. O problema é que quando ñ se marca o Checkbox pro PHP ele ñ existe. equando monto os SETs e GETs o array ñ vem com os checkbox e ñ foram marcado.

 

Entendeu o problema agora???

tem alguma ideia pra melhorar isso? Como?

 

Ta brabo meu amigo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

uhnmmmm

vem comigo calcio ...

següinte ....

 

independente da sua modelagem, tem como fazer isso, sem problemas ...

 

Quer ver, faça isso

<?PHP if($sub) print_r($_POST); ?><form name="teste" action="" method="POST">	<Input type="text" name="teste" />	<input type="checkbox" name="chk0" value="TRUE"/>	<input type="checkbox" name="chk1" value=""/>		<input type="submit" name="sub" value="sub" /></form>

vi la quem apareceu mesmo não estando clicado, o checkbox "chk1"

então depois é só tratar no momento do insert, para não dar pau !

sacou !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está igual ao meu, quando eu ñ marco o checkbox ele ñ aparece no array. Preciso que o checkbox que ñ foi marcado vá tb para o array, com um valor mesmo q seja vazio.

 

ele mostra isso Array ( [teste] => => sub ) como ñ marquei nenhuma check ele ignora, quero que ele faça isso Array ( [teste] => [chk0] => [chk1] => => sub ) , ou seja, ele tem o mesmo comportamento de um campo tetxo que está vazio!

Compartilhar este post


Link para o post
Compartilhar em outros sites

oshi ... aqui apareceu o nome dos checkbox's mesmo não selecionados...

 

----edit---

 

uhnm ... calma ae ... falei cagada ... tava testando código errado !

mas existem soluçoes cara .... tu trata o valor antes de inserir ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

meu codigo

<?php if($sub) print_r($_POST); ?><form name="teste" action="" method="POST">	Nome: <Input type="text" name="teste"><br>	<input type="checkbox" name="chk0" value="A">A	<input type="checkbox" name="chk1" value="B">B <br> 	<input type="submit" name="sub" value="sub"></form>
Estou usando documento HTML e Ñ XHTML. beleza? por isso tirei as barras do final dos Tags.

Uma pergunta é if($sub)? pois assim ñ apareceu nada, tive q usar if($_POST["sub"]). Mesmo assim apareceu como postei acima!

 

Estou usando PHP 5 e Apache.

Meu amigo ta complicado. rs Desde ja agradeço a sua ajuda e paciencia. Se essa joça ñ tivesse em OO ja teria terminado, pois farias todos os $_POST[] manualmente e ja estava tudo ok.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não diga isso cálcio :D ... não pra eu ver!!!

 

Programar em OO hj é oque vira cara ...

 

Mas é como eu disse, independente de estar checado ou não, voce trata o valor antes de inserir, algo como

 

if(!isset($var)) $var = "NULL";

 

sacou

 

ps.:foi mal .. eu editei meu post lá, voce viu ... realmente, faltou o $_POST ... é pq eu fiz correndo !

 

meu codigo

<?php if($sub) print_r($_POST); ?><form name="teste" action="" method="POST">	Nome: <Input type="text" name="teste"><br>	<input type="checkbox" name="chk0" value="A">A	<input type="checkbox" name="chk1" value="B">B <br> 	<input type="submit" name="sub" value="sub"></form>
Estou usando documento HTML e Ñ XHTML. beleza? por isso tirei as barras do final dos Tags.

Uma pergunta é if($sub)? pois assim ñ apareceu nada, tive q usar if($_POST["sub"])

 

Estou usando PHP 5 e Apache.

Meu amigo ta complicado. rs Desde ja agradeço a sua ajuda e paciencia. Se essa joça ñ tivesse em OO ja teria terminado, pois farias todos os $_POST[] manualmente e ja estava tudo ok.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja tentei fazer o isset mas ñ consegui pois preciso fazer ele no metodo abaixo

 

function popular($vetor){   foreach($vetor as $campo => $valor){	   eval("\$this->fam->set_$campo('$valor');");   }}

Último apelo...

posso te mandar essa parte do sistema zipado pra você analizar?

 

é só código PHP. To quase 1 mês parado nesse maldito erro!

Compartilhar este post


Link para o post
Compartilhar em outros sites

manda, pode sim ... não sou muito fan da idéiamas quando for fazer pedido assim ... envia uma mp ...ja adianto que eu vou só olhar o script ... mas agente vai continuar trabalhando e resolvendo no forum ...adianto 2 ... eu acho que o erro principal não é com o script, e sim o conceito de OO que voce ainda nao pegou nao é nao !?

Compartilhar este post


Link para o post
Compartilhar em outros sites

arramm!!!gotcha!hehehheeu percebi por esses métodos recuperar e popular ...não é muito comum no conceito de OO que agente ve pela netse esse popular tem a função de atribuir os valores a uma classe, pq você não instancia a classe passando por parametros os atributos !?esse é o comum cara ...ps.: Vi um tutorial na net .... e achei interessante, ele destaca o uso dos getters e setters somente quando necessário, e que o construtor de uma classe deverá receber somente o necessário tb !

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.