Ir ao conteúdo
  • Cadastre-se

Guardar valor de um campo de uma tabela em uma variável


Posts recomendados

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 MER
LJ5BloC.jpg
O 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><?phpini_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

<?phpclass 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!

Link para o comentário
Compartilhar em outros sites

  • Moderador

@lucasgs13

 

Algumas observações sobre seu código:

 

Por que usar orientação a objetos sem ter o total domínio do php?

Não use estrutura html em arquivos que são classes.

 

Você disse que já possui cidades e estados populando seu banco de dados...  então porque fazer o usuário digitar?

Altere para o tipo select que contenha as cidades e estados.

 

Faça  de modo estruturado, ou seja, sem ser em orientada a objetos está confundido você.

 

Em tese isso é bem simples de fazer,  um formulário que no action envia para um arquivo chamado recebeDados.php... neste arquivo você recebe do formulário os dados .. coloca em variáveis...

e insere no banco de dados o nome, o ID da cidade e estado.

 

Pode ser que você não consiga os ids da cidade e estado por ter algum erro no seu SQL também.. reveja  isso.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...