Jump to content
1stVieira

Guardar ID de um SELECT para realizar o cadastramento no Banco de Dados.

Recommended Posts

Olá a todos! Estou com uma dúvida em relação a realizar um cadastro no banco de dados (SQL) a partir de um formulário de um projeto.

 

Possuo duas tabelas, Categoria e Itens, na qual a tabela Itens possui uma FOREIGN KEY com a tabela Categorias.

 

Na página de Categorias consigo realizar os cadastro das mesmas sem problemas e elas estão sendo aplicadas em um SELECT na página de Cadastro dos Itens. O problema está sendo cadastrar os Itens no Banco de Dados. Estou utilizando PHP Orientado à Objetos

 

Página de Adição de Pedidos

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Adição de Item</title>
	</head>
	<body>
		<div>
			<a href="modificarCardapio.php" class="link_home"><i class="fa fa-home"></i></a>
		</div>
		<div>
			<div>
				<h1>Adicionar Itens ao Cardápio</h1>
			</div>	
			<div>
				<form action="#" method="POST">
					<label>Categoria:</label>
					<select name="selecionarcat">
						<option selected>Selecione a Categoria</option>
						<?php
								require_once"../models/conexao.class.php";
								require_once"../models/categoriaDAO.class.php";

								$catDAO = new categoriaDAO();
								$ret = $catDAO->buscarTodasCategorias();
								if(count($ret) > 0){
									foreach ($ret as $dado){
									 echo "<option value='".$dado->idcategoria."'>".$dado->descritivo."</option>";
									}
								}
							?>	
					</select>
					<br><br>
					<a href="addcategoria.php"><input type="button" value="Adicionar nova Categoria"></a>
					<p>
						<label>Nome do Item: </label>
						<input type="text" name="nomeproduto">
					</p>
					<p>
						<label>Descrição: </label>
						<input type="text" name="descricao">
					</p>
					<p>
						<label>Preço: </label>
						<input type="text" name="preco">
					</p>
					<br>
					<input type="submit" value="Adicionar">
				</form>
			</div>
		</div>
	</body>
</html>
<?php
	if($_POST){
		require_once "../models/conexao.class.php";
		require_once "../models/item.class.php";
		require_once "../models/itemDAO.class.php";
		$item = new item(null, $_POST["nomeproduto"], $_POST["descricao"], null, $_POST["preco"]);
		$itemDAO = new itemDAO();
		$itemDAO->adicionar($item);
		header("Location:modificarCardapio.php");
	}
?>

ItemDAO.php

<?php
	class itemDAO extends conexao{
		function __construct(){
			parent:: __construct();
		}
		function adicionar($item){
			$sql="INSERT INTO itens (nomeprod, descricao, preco, id_categoria) VALUES(?, ?, ?, ?)";
			try{
				$stm = $this->db->prepare($sql);
				$stm->bindValue(1, $item->getNomeproduto());
				$stm->bindValue(2, $item->getDescricao());
				$stm->bindValue(3, $item->getPreco());
				$stm->bindValue(4, $item->getCategoria());

				$stm->execute();
				$this->db = null;
			}
			catch(Exception $e){
				die($e->getMessage());
			}
		}
?>

Item.class.php

<?php
	class item{
		private $iditem;
		private $nomeproduto;
		private $descricao;
		private $categoria;
		private $preco;

		function __construct($iditem, $nomeproduto, $descricao, $categoria, $preco){
			$this->iditem=$iditem;
			$this->nomeproduto=$nomeproduto;
			$this->descricao=$descricao;
			$this->categoria=$categoria;
			$this->preco=$preco;
		}

		function getIditem(){
			return $this->iditem;
		}

		function getNomeproduto(){
			return $this->nomeproduto;
		}

		function getDescricao(){
			return $this->descricao;
		}
		
		function getCategoria(){
		    return $this->categoria;
		}

		function getPreco(){
			return $this->preco;
		}

		function setIditem($iditem){
			$this->iditem=$iditem;
		}

		function setNomeproduto($nomeproduto){
			$this->nomeproduto=$nomeproduto;
		}

		function setDescricao($descricao){
			$this->descricao=$descricao;
		}
		
		function setCategoria($categoria){
		    $this->categoria=$categoria;
		}

		function setPreco($preco){
			$this->preco=$preco;
		}
	}
?>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By granderodeo
      Estou tentando pegar dados de duas tabelas logo no inicio da sessão quando o usuário realiza o login, quando utilizo o 
      SELECT * FROM usuarios, orders WHERE email = '$login' and senha= '$senha' Consigo realizar o login tranquilamente, até ai de boa, mais quando modifico o código para
       
      $comando="SELECT * FROM usuarios INNER JOIN orders ON usuarios.id_usuario = orders.id_usuario WHERE email.usuarios='$login' and senha.usuarios='$senha'"; Ele só me deixa fazer login se o usuário já tiver algum orders (pedido). O que estou tentando fazer é assim que o usuário loga, mostre também os pedidos que ele já fez etc, que são dados que estão em outra tabela. Alguém consegue ver meu erro?
    • By Fernando Rafael
      Estou tendo problemas com a leitura de porta serial com PHP, consigo facilmente escrever na mesma, mas sempre que no comando de abertura da porta eu coloco que haverá permissão de leitura o PHP trava e fica carregando infinitamente, e a porta fica bloqueada e só libera quando reiniciado o computador.
       
      Segue o cod:
      exec('MODE COM1:9600,n,8,1'); //seta configuração na porta COM $fp=fopen("COM1","r+b"); if(!$fp) {     echo("Erro ao abrir a porta com1");     exit; } else {         echo("COM1 aberta <br>"); } fwrite($fp,Chr(5));  //escrevendo valor na porta sleep(1); //pausa para retorno dos dados echo (fgets($fp)); fclose($fp); já tentei  colocar:
      fopen("COM1", "r+b");
      fopen("COM1", "r+t");
      fopen("COM1", "r");
      fopen("COM1", "w+");
      fopen("COM1", "r+");
       
      para escrever consigo normal, com o fopen("COM1", "w");.  mas já para ler.....
       
      Notei que na internet tem muito sobre esse problema, inclusive falaram em permissões de usuário, sendo que nos casos em que conseguiram, estavam usando o Linux.
      Eu estou usando o W7 e W10 com PHP 5.2, se for o caso de permissões, como resolvo isso? preciso configurar mais alguma coisa no php.ini?
       
      Também já tentei usar uma classe: phpSerial
       
      Mas retorna o seguinte erro:
      Warning: Reading serial port is not implemented for Windows in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\balanca\php_serial.class.php on line 503
       
       
    • By rogerblower
      Pessoal tenho a seguinte tabela
      id | id_etapa | id_evento | posicao | nome | pontos
      1  |  1             |        2         |   1           | joao      |  10
      2  |  1             |        2         |   2           | pedro    |  9
      3  |  1             |        2         |   3           | maria    |  8
      4  |  1             |       2          |   4           | jose       |  7
      5  |  2             |      2          |   3           | joao       |  8
      6  |  2             |  2              |   1           | pedro    | 10
      7  |  2             |   2             |  2            | maria    |  9
      8  |  2             |  2              |   4          | jose        |  7
       
      O resultado da consulta pretendido é este
      Pos  |  nome |   pontos
      1      |  pedro   | 19
      2      |   joao   | 18
      3      |  maria  |  17
      4      |  jose  |  14
       
      Com esta consulta não ordenando a coluna posicao como esperado, ela repete a posicao e não faz a soma, ex:
       1     joao     10
       1     pedro     10
      $pontuacaoa = $pdo->prepare("SELECT * FROM contador WHERE id_evento = '$id_evento' GROUP BY nome, posicao ORDER BY pontos DESC posicao ASC"); Com esta outra consulta a soma esta correta o agrupamento nome esta correto, não se repetem, mas a coluna posicao fica fora de ordem;
       
      $pontuacaoa = $pdo->prepare("SELECT * FROM contador WHERE id_evento = '$id_evento' GROUP BY nome ORDER BY pontos DESC posicao ASC"); Não estou conseguindo acertar a consulta, alguém me ajuda?
    • By rjlfurtado
      Segue abaixo o exemplo de como seria feito em SQL:
      CREATE TABLE tabela ( campo1 DOUBLE, campo2 DOUBLE, divisao DOUBLE AS (campo1/campo2) ); Agora eu preciso criar uma migração no Laravel 6, segue exemplo abaixo:
      $table->integer('qtd_saida'); $table->decimal('valor_uni', 8, 2); $table->double('valor_total')->as(qtd_saida * valor_uni);  
    • By Marxrj
      Olá a todos!,
      Queria aqui uma dica se alguém sabe como alinhar fotos no centro pelo bootstrap.
      Usando o padrão fotos retratos fica como abaixo
      __________  __________
      __________
       
      Mas eu queria que quando tivesse um número impar, a foto não ficasse alinhada na esquerda e sim centralizada como abaixo
      __________  __________
                __________
       
      Estou usando este padrão abaixo aonde ele alinha duas fotos ao lado, mas quando tem somente um ou em número impar, essa não centraliza e sim fica a esquerda.
      <div class="col-xs-12 col-sm-10 col-lg-6 col-md-3">
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.