Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Joao emilioborges

PHP Comanda Eletronica PHP buscando "Usuario" no" Banco de Dados"

Recommended Posts

Galera estou quebrando a cabeça ..como faço para Fazer um sistema de login que ao invés de usar o input ..eu queria usa uma "Combobox" buscando  o usuario no "Banco de Dados"

<!DOCTYPE html>
<html lang="pt-br">
  <head>
    <meta charset="utf-8">	
	<title>Login na Comanda</title>
	<link rel="stylesheet" href="Css/EstiloLogin.css">	        
	</head>
	<body>
	  <form method="post" action="processa_login.php">

        <div style="width:100%; height:120px; overflow:hidden; margin: 0 auto; background-color:#333; margin-top:0px; border-radius:100px;">
        <div style="width:800px; height:90px; margin: 0 auto ;">   
        <p style="text-align:center; color:#CCC; font-family:'Lucida Sans Unicode'; font-size:40px;">Sistema de Comanda Eletrônica</p>
        </div>
        </div>
		
		
        <fieldset><legend >Mesas</legend>  
	    <input type="text" name="Mesa" placeholder="Nome da Mesa" required autofocus><br>
   		<input type="password" name="SenhaMesa" placeholder="Senha" required><br>
		
		<div>
		<input type="submit" style="background-color:#bfdade; width:200px; height:35px; font-size:15px; font-family:Lucida Sans Unicode; border:0; border-radius:50px;"  value="Entrar no Sistema">		
		</div>		
	
		</fieldset>
		
	</body>
</html>

 

Captura de Tela (3).png

adicionado 2 minutos depois

Tipo Issso

Captura de Tela (4).png

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@Joao emilioborges "Combobox", no caso você diz um campo com elemento select?

 Basicamente basta trocar isto:

<input type="text" name="Mesa" placeholder="Nome da Mesa" required autofocus>

por isto:

<select name="mesa">
  <option value="mesa1">Mesa1</option> 
  <option value="mesa2">Mesa2</option> 
  <option value="mesa3">Mesa3</option> 
</select>  

No lugar do elemento <option>, você põe o PHP, para fazer uma consulta a sua tabela do banco de dados, com um laço de while você preenche o  <option>  com seu devido "value" para emitir ao processa_login.php

 

Este tipo de campo para login não é indicado, a menos que você permita que mais de um usuário use o mesmo login.

É 99.9% de certeza que você não verá um site com sistema de login assim.

Editado por DiF
  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

     

<!DOCTYPE html>
    <html lang="pt-br">
    <head>
    <meta charset="utf-8">	
	<title>Login na Comanda</title>
	<link rel="stylesheet" href="Css/EstiloLogin.css">	        
	</head>
	<body>
	  
        <form name="Mesa" method="post" action="processa_login.php">
        <div style="width:100%; height:120px; overflow:hidden; margin: 0 auto; background-color:#333; margin-top:0px; border-radius:100px;">
        <div style="width:800px; height:90px; margin: 0 auto ;">   
        <p style="text-align:center; color:#CCC; font-family:'Lucida Sans Unicode'; font-size:40px;">Sistema de Comanda Eletrônica</p>
        </div>
        </div>
		
		
        <fieldset><legend >Mesas</legend>          
		<select name="Mesa" style="width:200px; height:35px; font-size:15px; font-family:Lucida Sans Unicode; border:0;" >
		<label style="color:#f2e915;">Selecione uma Mesa</label>
		
		 <?php 
         $Conexao = mysqli_connect("localhost","root","","comanda_eletronica");
		 $Select = "SELECT mesa FROM mesas";
		 $query = mysqli_query($Conexao, $Select); 
		 ?>
		 	 
		 <?php while($Mesas = mysqli_fetch_row($query)) { ?>
         <option value="<?php echo $Mesas['Mesa']; ?>"></option>
         <?php } ?> 
		 
		
		 </select><br><br>
		
		
   		<input type="password" name="SenhaMesa" placeholder="Senha" required><br>
		
		<div>
		<input type="submit" style="background-color:#bfdade; width:200px; height:35px; font-size:15px; font-family:Lucida Sans Unicode; border:0; border-radius:50px;"  value="Entrar no Sistema">		
		</div>		
	
		</fieldset>
		</form>
	</body>
</html>

 

Captura de Tela (5).png

Editado por Joao emilioborges

Compartilhar este post


Link para o post
Compartilhar em outros sites
<html lang="pt-br">
  <head>
    <meta charset="utf-8">
	<title>Comanda</title>
	<link rel="stylesheet" href="css/EstiloLogin.css">
	</head>
</html>

<?php
require_once 'conecta_login.php';
$Mesa= $_POST['Mesa'];
$SenhaMesa = $_POST['SenhaMesa'];

$sql = "select Mesa, SenhaMesa from mesas where Mesa = '$Mesa' and SenhaMesa = '$SenhaMesa'";
$query = mysqli_query($link, $sql);
$linhas = mysqli_affected_rows($link);

 if($linhas > 0){
	 session_start();
	 $_SESSION['Mesa'] = $Mesa;
 while($exibirNome = mysqli_fetch_array($query)){
 $Mesa =      $exibirNome[0];
 $SenhaMesa = $exibirNome[1];
 
 
 }
 $_SESSION['Mesa'] = $Mesa;
 header ("Location:sistema.php");
 }else{
	 print "Dados Incorretos!<br>";
	 print "<a href='index.php'>Voltar</a>"; 
  }
?>

Esse é o script para Processar..

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Joao emilioborges Vejo algumas coisas que podem estar dando o problema.

 

Vamos a código do post #04:

esta parte:

 

 <?php 
         $Conexao = mysqli_connect("localhost","root","","comanda_eletronica");
		 $Select = "SELECT mesa FROM mesas";
		 $query = mysqli_query($Conexao, $Select); 
		 ?>
		 	 
		 <?php while($Mesas = mysqli_fetch_row($query)) { ?>
         <option value="<?php echo $Mesas['Mesa']; ?>"></option>
         <?php } ?> 

Você esqueceu de colocar o valor dos elementos <option>. No caso, colocou somente o value.

 

Não que seja ruim o fetch_row, mas eu aconselho a aprender e se acostumar a usar o fetch_object, para tratar os dados como objetos!

 

Desta forma:

<select name="mesas"> 
<?php 
         $Conexao = mysqli_connect("localhost","root","","comanda_eletronica");
		 $Select = "SELECT mesa FROM mesas";
		 $query = mysqli_query($Conexao, $Select); 
 	 	 
	     while($Mesas = mysqli_fetch_object($query)) : 
           echo "<option value='$Mesas->Mesa'>$Mesas->Mesa</option>";
         endwhile; 
?> 
</select>  

Basicamente, as mudanças que eu fiz foi: retirar os vários blocos de abertura do php, puxar do banco de dados o nome da mesa e mostrar como um objeto.

 

 

Agora, o código do post #05.

Como  o arquivo php é apenas de autenticação, você pode eliminar as tags de marcação do HTML. Além disso, quando se lida com sessions, é necessário que a sessão seja iniciada antes de tudo.  Deve ser a primeira coisa a ser declarada.

//Inicia a sessão
session_start();
	
    //Recebe os dados vindo do formulário
	$Mesa      = $_POST['Mesa'];
	$SenhaMesa = $_POST['SenhaMesa'];
	
	//Testa se nenhum campo ficou vazio
	if (empty($Mesa) or empty($SenhaMesa)) :
       echo "<script>
          alert('Preencha todos os campos');
          history.go(-1);
          </script>";
       exit;    
    endif;
	
	//inclui a conexão. Repare que no seu código usa $link, mas no outro de cima você usa $conecta
	include 'conexao.php';
	
    //Instrução SQL que consulta a Mesa, senha e compara com os campos no banco de dados
	$sql = "SELECT Mesa, SenhaMesa FROM mesas WHERE Mesa ='$Mesa' AND SenhaMesa = '$SenhaMesa' ";
	
    //Armazena em uma variável com a função mysqli_query(), que leva como parâmetro o $sql
    $dados = mysqli_query($conecta, $sql);

    //Pega o número de linhas encontradas
	$num = mysqli_num_rows($dados);
	
    //Se igual a zero, ou seja, não encontrou nada, mostra mensagem de erro e volta para tela anterior 
	if ($num == 0):
		echo "<script>
		         alert('Mesa ou senha Incorreta');
			 history.go(-1);
		      </script>";
		exit;
	else :
 
        //Recebe o fetch_object()  
		$linha = mysqli_fetch_object($dados);

        //Armazena o nome/ numero da mesa
		$codMesa = $linha->Mesa;
		
        //Coloca na Sessão o valor do campo Mesa 
		$_SESSION["Mesa"] = $codMesa;
	
        //Redireciona para o arquivo sistema.php
		header ("Location: sistema.php");
		
	endif;
	//Fecha a conexão
 	mysqli_close($conecta);

 

Agora para tudo funcionar, o macete é colocar um código php no inicio do arquivo sistema.php que testa a sessão, se não faz o usuário voltar para a tela de login.

 

O código é este:

<?php
//Abre a sessão
session_start();

//Define um cookie de autenticação
setcookie("ck_authorized", "true", 0, "/");

//testa se a sessão NÃO está vazia com !isset(), lembre que "null" é um valor. por isso testar com isset
if(!isset($_SESSION["Mesa"])):

    //Redireiona para a página de login 
    header("location: index.php");
else:
    //armazena a sessão.
    $Mesa = $_SESSION["Mesa"];
endif;    
?>

Sim, só esse fragmento de código no inicio testa a sessão!

Com isso você por exemplo exibir na tela de sistema.php o nome da mesa com  

 

<div class="identificacao">
  <p>Você está logado na <?php echo $Mesa; ?></p>
  <a href="logout.php">Sair</a>
</div>  

O arquivo logout.php seria assim:

<?php
    //inicia a sessão
	session_start();

	if(isset($_SESSION['Mesa'])):
        // Como você possui um cookie relacionado com o login deve ser removido
        session_destroy();
    
        //Redireciona para a página de login
        header("location: index.php");
 
        //para a execução do script php
        exit;
    endif;
?>	

Basicamente aí está o sistema de login e logout.

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 06/04/2018 às 01:40, DiF disse:

@Joao emilioborges Vejo algumas coisas que podem estar dando o problema.

 

Vamos a código do post #04:

esta parte:

 


 <?php 
         $Conexao = mysqli_connect("localhost","root","","comanda_eletronica");
		 $Select = "SELECT mesa FROM mesas";
		 $query = mysqli_query($Conexao, $Select); 
		 ?>
		 	 
		 <?php while($Mesas = mysqli_fetch_row($query)) { ?>
         <option value="<?php echo $Mesas['Mesa']; ?>"></option>
         <?php } ?> 

Você esqueceu de colocar o valor dos elementos <option>. No caso, colocou somente o value.

 

Não que seja ruim o fetch_row, mas eu aconselho a aprender e se acostumar a usar o fetch_object, para tratar os dados como objetos!

 

Desta forma:


<select name="mesas"> 
<?php 
         $Conexao = mysqli_connect("localhost","root","","comanda_eletronica");
		 $Select = "SELECT mesa FROM mesas";
		 $query = mysqli_query($Conexao, $Select); 
 	 	 
	     while($Mesas = mysqli_fetch_object($query)) : 
           echo "<option value='$Mesas->Mesa'>$Mesas->Mesa</option>";
         endwhile; 
?> 
</select>  

Basicamente, as mudanças que eu fiz foi: retirar os vários blocos de abertura do php, puxar do banco de dados o nome da mesa e mostrar como um objeto.

 

 

Agora, o código do post #05.

Como  o arquivo php é apenas de autenticação, você pode eliminar as tags de marcação do HTML. Além disso, quando se lida com sessions, é necessário que a sessão seja iniciada antes de tudo.  Deve ser a primeira coisa a ser declarada.


//Inicia a sessão
session_start();
	
    //Recebe os dados vindo do formulário
	$Mesa      = $_POST['Mesa'];
	$SenhaMesa = $_POST['SenhaMesa'];
	
	//Testa se nenhum campo ficou vazio
	if (empty($Mesa) or empty($SenhaMesa)) :
       echo "<script>
          alert('Preencha todos os campos');
          history.go(-1);
          </script>";
       exit;    
    endif;
	
	//inclui a conexão. Repare que no seu código usa $link, mas no outro de cima você usa $conecta
	include 'conexao.php';
	
    //Instrução SQL que consulta a Mesa, senha e compara com os campos no banco de dados
	$sql = "SELECT Mesa, SenhaMesa FROM mesas WHERE Mesa ='$Mesa' AND SenhaMesa = '$SenhaMesa' ";
	
    //Armazena em uma variável com a função mysqli_query(), que leva como parâmetro o $sql
    $dados = mysqli_query($conecta, $sql);

    //Pega o número de linhas encontradas
	$num = mysqli_num_rows($dados);
	
    //Se igual a zero, ou seja, não encontrou nada, mostra mensagem de erro e volta para tela anterior 
	if ($num == 0):
		echo "<script>
		         alert('Mesa ou senha Incorreta');
			 history.go(-1);
		      </script>";
		exit;
	else :
 
        //Recebe o fetch_object()  
		$linha = mysqli_fetch_object($dados);

        //Armazena o nome/ numero da mesa
		$codMesa = $linha->Mesa;
		
        //Coloca na Sessão o valor do campo Mesa 
		$_SESSION["Mesa"] = $codMesa;
	
        //Redireciona para o arquivo sistema.php
		header ("Location: sistema.php");
		
	endif;
	//Fecha a conexão
 	mysqli_close($conecta);

 

Agora para tudo funcionar, o macete é colocar um código php no inicio do arquivo sistema.php que testa a sessão, se não faz o usuário voltar para a tela de login.

 

O código é este:


<?php
//Abre a sessão
session_start();

//Define um cookie de autenticação
setcookie("ck_authorized", "true", 0, "/");

//testa se a sessão NÃO está vazia com !isset(), lembre que "null" é um valor. por isso testar com isset
if(!isset($_SESSION["Mesa"])):

    //Redireiona para a página de login 
    header("location: index.php");
else:
    //armazena a sessão.
    $Mesa = $_SESSION["Mesa"];
endif;    
?>

Sim, só esse fragmento de código no inicio testa a sessão!

Com isso você por exemplo exibir na tela de sistema.php o nome da mesa com  

 


<div class="identificacao">
  <p>Você está logado na <?php echo $Mesa; ?></p>
  <a href="logout.php">Sair</a>
</div>  

O arquivo logout.php seria assim:


<?php
    //inicia a sessão
	session_start();

	if(isset($_SESSION['Mesa'])):
        // Como você possui um cookie relacionado com o login deve ser removido
        session_destroy();
    
        //Redireciona para a página de login
        header("location: index.php");
 
        //para a execução do script php
        exit;
    endif;
?>	

Basicamente aí está o sistema de login e logout.

 

 

Deu super certo aqui Dif ..a unica coisa que tive que alterar foi a variavel $conecta por $link prque no meu arquivo de conexao eu usei ela..muito obrigado pelas dicas 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera mais uma duvida !!

não estou conseguindo fazer o meu projeto linkar na pagina inicial(index.php) ja criei um botao no Carrinho.php linkando mais devido no meu sistema eu por meus links dentro dessa DIV ..tudo que eu linko fica dentro dela ..alguem pode me ajudar??

 

Segue abaixo a imagem do Projeto..

<!--buttons-->
<div style="width:750px; height:450px; overflow:hidden; margin: 0 auto; position:relative; margin-top:50px;">

	<a href="pizza.php" target="main"><div id="btn1" style="float:left"> <p>Pizzas </p> </div> </a>
    <a href="lanche.php" target="main"><div id="btn2" style="float:left"> <p> Lanches</p> </div> </a>
    <a href="porcao.php" target="main"><div id="btn3" style="float:left"> <p>Porções </p> </div> </a>
    <a href="sobremesa.php" target="main"><div id="btn4" style="float:left"> <p> Sobremesas</p> </div> </a>
    <a href="bebidas.php" target="main"><div id="btn5" style="float:left"> <p> Refrigerantes e Sucos </p> </div> </a>
    <a href="alcoolicas.php" target="main"><div id="btn6" style="float:left"> <p> Bebidas Alcoólicas</p> </div> </a>
    <div id="content" style="position:absolute"> <iframe name="main" frameborder=0 height=450 width=750></iframe>  </div>    
</div>

 

sistema.php.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Joao emilioborges Não sei bem como você está fazendo isso.. em cada página.. seria interessante postar pelo menos o código de um dos links.

Por exemplo o pizza.php

 

Além disso, você definiu o target..  que desconheço.  

Para o carrinho.php, lembre de usar sessions para ter um vetor de produtos.

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php  
    require_once "Funcoes/product.php";
	$pdoConnection = require_once "conecta_carrinho.php";
	$products = getProducts($pdoConnection);
?>

<!DOCTYPE html>
<html lang="pt-br">
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<meta name="viewport" content="width=device-width, initial-scale=1">
	    <title>Pizzas</title>
		<link href="Css/bootstrap.min.css" rel="stylesheet">
		<style type="text/css">

         #content{
	     overflow:auto;
	     padding:10px;
	     text-align:justify;
	     color:#FFF;
         }

        </style>
         	</head>
	
	                   <body>                	 		 
			           <div id="content" style="width: 730px; height: 430px !important;">
                       <table width="100%" border="0" cellpadding="0">
                                	 		 
			           <br>
					   
					   
					  <?php foreach($products as $product):?> 
				        <?php if ($product['categoria'] == 'Pizzas'):?>
						  
			            <div class="col-sm-6 col-md-4">
							<div class="thumbnail">							    
							    <div class="caption text-center">						
								
								    <img src="imagens/<?php echo $product['imagens']; ?>" alt="<?php echo $product['nome']; ?>">								
								   						   
								    <h3><?php echo $product['nome']?></h3>
							        <h4>
							  	    R$ <?php echo number_format($product['preco'], 2, ',', '.')?>
							        </h4>
									
							<p><a href="carrinho.php?acao=add&id=<?php echo $product['id']?>" class="btn btn-primary" role="button">Comprar</a> </p>
							 						  
							</div>
						</div>						
					</div>	
				         
						 <?php endif; ?>
					     <?php endforeach;?>			
        	
	</table>
   </div>
</body>
</html>

O código do pizza.php 

Editado por Joao emilioborges

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo aqui ..no botao que finaliza o pedido coloquei o target="_top" e encerrou meu projeto direitinho ..obrigado pela compreensao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera tenho mais uma dúvida ..gostaria da ajuda de vcs 

Estou Enviando esses produtos ao carrinho mais queria enviar esses produtos ao mesmo tempo ao carrinho e ao Banco de Dados ..tem como ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Joao emilioborges

Em 20/04/2018 às 20:50, Joao emilioborges disse:

queria enviar esses produtos ao mesmo tempo ao carrinho e ao Banco de Dados ..tem como ?

Uma pergunta, porque você iria inserir em um banco de dados toda vez que incluir no carrinho?

Você só insere no banco o que for efetivado como compra. isso sim.

 

Agora imagina centenas de milhares de pessoas adicionando produtos no carrinho e ao mesmo tempo inserir no banco de dados..  Você teria é uma bela queda de desempenho...

 

Por isso que o recomendado é usar sessions no carrinho de compras, assim fica armazenada na sessão daquele usuário.. e só vai se perder, somente se ele finalizar a sessão.. enquanto ele não finalizar a sessão os dados ficam armazenados.

Editado por DiF

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, DiF disse:

@Joao emilioborges

Uma pergunta, porque você iria inserir em um banco de dados toda vez que incluir no carrinho?

Você só insere no banco o que for efetivado como compra. isso sim.

 

Agora imagina centenas de milhares de pessoas adicionando produtos no carrinho e ao mesmo tempo inserir no banco de dados..  Você teria é uma bela queda de desempenho...

 

Por isso que o recomendado é usar sessions no carrinho de compras, assim fica armazenada na sessão daquele usuário.. e só vai se perder, somente se ele finalizar a sessão.. enquanto ele não finalizar a sessão os dados ficam armazenados.

Na verdade Dif meu sistema eh de cardapio Digital para restaurantes.etc..

então eu preciso que a cada pedido que o cliente fizer nas mesas caia no banco ..porque esses itens vão ser exibidos tanto no BAR quanto na COZINHA E assim os funcionarios preparam e entregam o pedido ..você me entende?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Joao emilioborges Sim.  Então nesse caso, basta você criar uma tabela chamada "pedidos.

 

 Dentro dela, você armazena:

  • ID do usuário que pediu
  • ID do item que ele pediu 

 

Ao fazer o pedido, quando clicar no botão de confirmar,  você emite todos os pedidos feitos por aquele usuário e insere na tabela pedidos.

 

Lembrando que, para funcionar isso é imprescindível que você tenha feito os relacionamentos  de forma correta, onde na tabela mandante, tenha um índice que referencia a chave estrangeira.

 

Se tudo for feito corretamente, você só precisa fazer um select na tabela "pedidos" usando as clausulas INNER JOIN para cada tabela que foi relacionada.

Vamos um exemplo hipotético:

 

 

Legenda:  AI  =  Auto increment

                 PK = Primary Key  (chave primária)

                 FK = Foreign Key   (chave estrangeira)

 

 

Tabela usuario

  • ID  - AI PK
  • Nome
  • email
  • senha

 

Tabela cardapio

  • ID  - AI PK
  • item_cardapio
  • preco

Tabela pedidos

  • ID - AI PK
  • ID_usuario FK (referencia usuario.ID)
  • ID_item_pedido FK  (referencia cardapio.ID)
  • valor

 

A tabela mandante é pedidos, Então é nela que você deve criar os índices( index) para o campo ID_usuario e ID_item_pedido.

 

Com isso a consulta será:

 

SELECT usuario.Nome, cardapio.item_cardapio FROM pedidos
INNER JOIN usuario ON usuario.ID = pedidos.ID_usuario
INNER JOIN cardapio ON cardapio.ID = pedidos.ID_item_pedido

 

 

 

Editado por DiF
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, DiF disse:

@Joao emilioborges Sim.  Então nesse caso, basta você criar uma tabela chamada "pedidos.

 

 Dentro dela, você armazena:

  • ID do usuário que pediu
  • ID do item que ele pediu 

 

Ao fazer o pedido, quando clicar no botão de confirmar,  você emite todos os pedidos feitos por aquele usuário e insere na tabela pedidos.

 

Lembrando que, para funcionar isso é imprescindível que você tenha feito os relacionamentos  de forma correta, onde na tabela mandante, tenha um índice que referencia a chave estrangeira.

 

Se tudo for feito corretamente, você só precisa fazer um select na tabela "pedidos" usando as clausulas INNER JOIN para cada tabela que foi relacionada.

Vamos um exemplo hipotético:

 

 

Legenda:  AI  =  Auto increment

                 PK = Primary Key  (chave primária)

                 FK = Foreign Key   (chave estrangeira)

 

 

Tabela usuario

  • ID  - AI PK
  • Nome
  • email
  • senha

 

Tabela cardapio

  • ID  - AI PK
  • item_cardapio
  • preco

Tabela pedidos

  • ID - AI PK
  • ID_usuario FK (referencia usuario.ID)
  • ID_item_pedido FK  (referencia cardapio.ID)
  • valor

 

A tabela mandante é pedidos, Então é nela que você deve criar os índices( index) para o campo ID_usuario e ID_item_pedido.

 

Com isso a consulta será:

 


SELECT usuario.Nome, cardapio.item_cardapio FROM pedidos
INNER JOIN usuario ON usuario.ID = pedidos.ID_usuario
INNER JOIN cardapio ON cardapio.ID = pedidos.ID_item_pedido

 

 

 

So mais uma duvida ..como faço pra ao mesmo tempo q mandar pro carrinho mandar pro banco?um link pode ter mais de um paramentro ?

adicionado 4 minutos depois
<p><a href="carrinho.php?acao=add&id=<?php echo $product['id']?>" class="btn btn-primary" role="button">Comprar</a> </p>

 

Editado por DiF
Inserir código com o botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites
23 horas atrás, Joao emilioborges disse:

So mais uma duvida ..como faço pra ao mesmo tempo q mandar pro carrinho mandar pro banco?um link pode ter mais de um paramentro ?

adicionado 4 minutos depois

<p><a href="carrinho.php?acao=add&id=<?php echo $product['id']?>" class="btn btn-primary" role="button">Comprar</a> </p>

 

<?php 
    session_start(); 
    if(!isset($_SESSION['carrinho'])){ 
        $_SESSION['carrinho'] = array(); 
    } //adiciona produto 
     
    if(isset($_GET['acao'])){ 
        //ADICIONAR CARRINHO 
        if($_GET['acao'] == 'add'){ 
            $id = intval($_GET['id']); 
            if(!isset($_SESSION['carrinho'][$id])){ 
                $_SESSION['carrinho'][$id] = 1; 
            } else { 
                $_SESSION['carrinho'][$id] += 1; 
            } 
        } //REMOVER CARRINHO 
     
        if($_GET['acao'] == 'del'){ 
            $id = intval($_GET['id']); 
            if(isset($_SESSION['carrinho'][$id])){ 
                unset($_SESSION['carrinho'][$id]); 
            } 
        } //ALTERAR QUANTIDADE 
        if($_GET['acao'] == 'up'){ 
            if(is_array($_POST['prod'])){ 
                foreach($_POST['prod'] as $id => $qtd){
                        $id  = intval($id);
                        $qtd = intval($qtd);
                        if(!empty($qtd) || $qtd <> 0){
                            $_SESSION['carrinho'][$id] = $qtd;
                        }else{
                            unset($_SESSION['carrinho'][$id]);
                        }
                      }
                   }
                 }	           
               } 
                   
          
   
   
?>

sera que tem jeito?

Compartilhar este post


Link para o post
Compartilhar em outros sites

DIF Desculpa lhe incomodar novamente mais consegui mandar meus pedidos para o banco com o seguinte código ..só tem uma coisa que não estou conseguindo que é ADD no carrinho o mesmo produto o tanto de vezes que eu clicar .Poderia me ajudar  com isso?Já tierei os código que altera a quantidade e nada acontece ..

<?php 
    session_start(); 
    if(!isset($_SESSION['carrinho'])){ 
        $_SESSION['carrinho'] = array(); 
    } //adiciona produto 
     
    if(isset($_GET['acao'])){ 
        //ADICIONAR CARRINHO 
        if($_GET['acao'] == 'add'){ 
            $id = intval($_GET['id']); 
            if(!isset($_SESSION['carrinho'][$id])){ 
                $_SESSION['carrinho'][$id] = +1;                 
		   } 
        } //REMOVER CARRINHO 
     
        if($_GET['acao'] == 'del'){ 
            $id = intval($_GET['id']); 
            if(isset($_SESSION['carrinho'][$id])){ 
                unset($_SESSION['carrinho'][$id]); 
            } 
           } 
		 }         		
         ?>	
   
   

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Carrinho</title>
	<link rel="stylesheet" href="Css/estilo_carrinho.css" />
	<style type="text/css">
         #content{
	     overflow:auto;
	     padding:10px;
	     text-align:justify;	   
         }
        </style>
</head>
	
	<body>                	 		
	<div id="content" style="width: 730px; height: 430px !important;">
    <table width="100%" border="0" cellpadding="0" class="table table-strip" > 			
	<div class="container">  
                	
    <div class="card-body">	 
	<h3 class="card-title" align="center">Carrinho de Compras</h3>    
    </div>			
				<thead>
					<tr style="font-size:20px;">
						<th>Produto</th>
						<th>Quantidade</th>						
						<th>Preço</th>
						<th>Subtotal</th>
						<th>Ação</th>                        
					</tr>				
				</thead>
				<form method="post">
				<tbody>
				 
     <?php
        if(count($_SESSION['carrinho']) == 0){
          echo '
                <tr>
                    <td colspan="5">Não há produto no carrinho</td>
                </tr>
            ';
          } else {
                require("conecta_carrinho.php");
                $total = 0;
                foreach($_SESSION['carrinho'] as $id => $qtd){
					    $Conexao = mysqli_connect("localhost","root","","comanda_eletronica"); 
						$sql   = "SELECT *  FROM produtos WHERE id= '$id'";			                    	
						
					    $query = mysqli_query($Conexao, $sql); 
                        $ln  = mysqli_fetch_assoc($query);
 
                        $nome  = $ln['nome'];
                        $preco = number_format($ln['preco'], 2, ',', '.');
                        $sub   = number_format($ln['preco'] * $qtd, 2, ',', '.');
                        $total += $ln['preco'] * $qtd;
                         echo '
                            <tr>       
                                <td style="font-size:17px;">'.$nome.'</td>                                
								<td style="font-size:15px;"><input type="text" size="1" name="prod['.$id.']" value="'.$qtd.'" /></td>								
                                <td style="font-size:17px;">R$ '.$preco.'</td>
                                <td style="font-size:17px;">R$ '.$sub.'</td>
                                <td><a href="?acao=del&id='.$id.'"" class="btn btn-danger">Remover</a></td>
                            </tr>';	
							
                    if($_GET['acao'] == 'add'){		
					$ValorTotal = $preco * $qtd;
		            $InserirVenda = "insert into venda (ValorTotal) values ('$ValorTotal')";
		            $query = mysqli_query($Conexao,$InserirVenda);		 
		            		 
		           foreach($_SESSION['carrinho'] as $ProdInsert => $qtd): 
		           $InserirItens = "Insert into itensvenda(idProduto, NomeProduto, Quantidade) VALUES ('$ProdInsert', '$nome', '$qtd')";
		           $salvar = mysqli_query($Conexao,$InserirItens);		 
		           endforeach;
				   }
							
                }				
                $total = number_format($total, 2, ',', '.');
                echo '<tr>                         
                            <td colspan="3" class="text-right" style="font-size:20px;"><b>Total:</b></td>
                            <td style="font-size:20px;">R$ '.$total.'</td>
                            <td></td>
				   </tr>';	
                    }				
                   ?>
        
             </tbody>
		   </form>
		 </div>		   	
	   </table>
     </div> 
   </body>
</html>

 

Captura de Tela (9).png

Captura de Tela (10).png

Captura de Tela (11).png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×