lucasgs13 0 Denunciar post Postado Maio 15, 2015 Boa tarde! Estou fazendo um sistema de cadastro de usuários utilizando PHP e Mysql, para um projeto de conclusão de curso e estou com dificuldades, já pesquisei em vários lugares mas não achei nada.Segue o MERO formulário de cadastro possui apenas os campos nome, ---o, estado e cidade. O código que eu fiz está cadastrando os campos nome e ---o na tabela tb_usuario e as tabelas tb_estados e tb_cidades estão povoadas com todos os estados e cidades do Brasil.Segue o código cadastro.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Cadastro de Usuario</title> </head> <body> <?php ini_set( 'display_errors', true ); error_reporting( E_ALL ); include "classes/Conexao.class.php"; include "classes/Usuario.class.php"; if (isset($_POST["btnInserir"])) { //echo "Foi clicado no botão inserir" //Instanciando objeto do tipo usuário $u = new Usuario (); $cod_cidade=0; $u -> setId (0); $u -> setNome ($_POST["txtNome"]); $u -> set---o ($_POST["rdb---o"]); //Instanciando um objeto do tipo conexão $c = new Conexao (); //verificando a cidade e o estado para o cod_cidade $comandoSql="select id_cidade from tb_cidades where nome='".$_POST["txtCidade"]."' && uf='".$_POST["txtEstado"]."'"; $cod_cidade=$c -> criarConsulta($comandoSql); $u -> setCidadeEstado ($cod_cidade); //Criando o comando SQL $comandoSql="insert into tb_usuario(nome, ---o, cod_cidade) values('".$u -> getNome()."','".$u -> get---o()."','".$u -> getCidadeEstado()."');"; //Realizando a inclusão $c -> criarConsulta($comandoSql); } ?> <h2>Cadastrar</h2> Digite os seus dados pessoais abaixo:<br /><br /> <form name="form1" id="form1" method="post" action=""> Nome: <input type="text" name="txtNome" id="txtNome" required><br /><br /> ---o: <input type="radio" value="Masculino" name="rdb---o" id="rdb---o_1">Masculino <input type="radio" value="Feminino" name="rdb---o" id="rdb---o_2">Feminino<br /><br /> Estado: <input type="text" name="txtEstado"><br /><br /> Cidade: <input type="text" name="txtCidade"><br /><br /> <input type="submit" value="Cadastrar-se" name="btnInserir"><br /><br /> </form> </body> </html> Segue o código Conexao.class.php [inline][/inline] <?php class Conexao { //atributos privados da classe que terao set e get private $local, $user, $pass, $banco; //atributos publicos da classe que nao precisam de set e get public $con, $result, $comandoSql; //metodo construtor que determina valores para os atributos privados function __construct() { $this->local="localhost"; $this->user="root"; $this->pass=""; $this->banco="bd_sistema"; } //metodos set e get para os atributos privados public function setLocal($novoLocal) { $this->local= $novoLocal; } public function getLocal() { return $this->local; } public function setUser($novoUser) { $this->user= $novoUser; } public function getUser() { return $this->user; } public function setPass($novaPass) { $this->pass= $novaPass; } public function getPass() { return $this->pass; } public function setBanco($novoBanco) { $this->banco= $novoBanco; } public function getBanco() { return $this->banco; } //funcao conectarBd() public function conectarBd() { $this->con=@mysql_pconnect($this->getLocal(), $this->getUser(), $this->getPass()); if(!$this->con) { echo "Problemas ao conectar o banco de dados"; die(); } else { if(!mysql_select_db($this->getBanco(), $this->con)) { echo "Problemas ao selecionar o banco de dados"; die(); } } } //fim da function conectarBd() // funcao criarConsulta() - responsavel por executar um comando sql passado como parametro public function criarConsulta($sql) { $this->conectarBd(); $this->comandoSql=$sql; //$result= mysql_query($comandoSql,$con) if($this->result= mysql_query($this->comandoSql, $this->con)) { return $this-> result; $this->desconectarBd(); } else { echo "Não foi possivel realizar comando sql! Erro: "; die(mysql_error()); $this->desconectarBd(); } } //fim da function criarConsulta() //funcao desconectarBd() - responsavel por finalizar uma conexao public function desconectarBd() { //mysql_close ($con) return mysql_close($this->con); echo "Desconexao ok"; } //fim da function desconectarBd() } ?> Segue o codigo Usuario.class.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Classe Usuario</title> </head> <body> <?php class Usuario { //atributos da classe usuario private $id, $nome, $---o, $cidade_estado; //metodos ou funcoes public function setId($novoId) { $this-> id = $novoId; } public function getId() { return $this-> id; } public function setNome($novoNome) { $this-> nome = $novoNome; } public function getNome() { return $this-> nome; } public function set---o($novo---o) { $this-> ---o = $novo---o; } public function get---o() { return $this-> ---o; } public function setCidadeEstado($novoCidadeEstado) { $this-> cidade_estado = $novoCidadeEstado; } public function getCidadeEstado() { return $this-> cidade_estado; } }//fim da classe Usuario ?> </body> </html> O problema é que eu não estou conseguindo obter o id_cidade para preencher o cod_cidade. Não sei se a lógica está correta, mas na hora de inserir no campo cod_cidade da conflito de chave estrangeira, então a variável cod_cidade não deve estar pegando o id_cidade e é isso que estou tentando fazer. Conto com vocês! Compartilhar este post Link para o post Compartilhar em outros sites
Jucaduca 1 Denunciar post Postado Maio 16, 2015 rsrs... amigo, não acha que teu código ta um pouco complexo pra algo tão simples? é como querer matar um rato com uma bazuca, deixa pra usar os objetos e classes quando realmente precisar se não vc vai ficar batendo cabeça sem necessidade... pelo que eu entendi do teu problema dava pra tu fazer tudo direto no sql tipo INSERT INTO `tabelas` (`nome`,`id_relacionado`) VALUES ('nome-do-individo',(SELECT `id` FROM `tabela-relacionada` WHEREsrsrsrs)), ou faz uma consulta simples joga em uma variável simples e depois passa ela no sql... mais é só minha opinião, se vc prefere assim... confere direitinho as instancias da tua classe que da certo tb.. Compartilhar este post Link para o post Compartilhar em outros sites