Ir para conteúdo
Fórum Script Brasil
  • 0

como inserir no banco de dados utilizando list menu?


eberton

Pergunta

bom dia a todos!

sou novo no forum para postagens, mas já acompanho a algum tempo.

Estou desenvolvendo meu TCC em php com Mysql, o tempo esta acabando tenho que entregar dia 16/11/2009 e só esta faltando o pedido online e alguns itens na parte administrativa.

bom, estou mostrando em um list/menu, os valores cadastrado no me banco de dados:

cod_prod, nome_prod, valor_prod, ok tudo beleza!

Quando adiciono no carrinho ai que pega.

arquivo: cart.php

Código: Selecionar tudo

<?
    include "config.php";

    $sabor = @$_POST['sabor'];
    if($_GET['acao'] == "add"){
                                                                                  // assim não insere nada
                    $sql_add = mysql_query(" INSERT INTO carrinho (id_prod, nome_prod, valor_prod) Value ('$sabor') ");
    }
    ?>
    // assim insere só o nome, mas preciso do id e valor.
                    $sql_add = mysql_query("INSERT INTO carrinho ( nome_prod )  Value ('$sabor') ");
Como passar mais parametros pelo $_POST? Ou to querendo demais rsrsrsrs. No meu arquivo fazer_pedido.php esta deste jeito: Código: Selecionar tudo
<?
    if(@$_GET['tipo'] == "salgada"){
    ?>     

          <form id="form1" name="form1" action="cart.php?acao=add&cod=<?=$linha['pro_cod']?> " method="post">
           <p>SELECIONE OS ITENS ABAIXO <br />    DA PIZZA SALGADA:</p>
                 
             <table >
      <tr>
        <td width="299">SABOR 1:  
          <select name="sabor" size="1" id="sabor">
           
    <?
      include "config.php";
      $sql_pesquisar = mysql_query("SELECT * FROM tb_produto WHERE pro_tipo LIKE 'pizza' ORDER BY pro_nome");
                    while($linha = mysql_fetch_array($sql_pesquisar)){
                                   
    ?>
       R$ <? echo $pega_preco ?> -->
            <option>COD = <?=$linha['pro_cod'] . "  ".$linha['pro_nome']. "  ".$linha['preco1']?> </option>
    <?
    }
       ?>
          </select>
          <input type="submit" name="adicionar" value="adicionar" />
         </tr>
    </table>

    </form>
    <?
    }
    ?>

espero que possam me ajudar, já vi varios tutoriais e video aulas de carrinho, mas nehum com list/menu inserindo no banco de dados.

por tabela e colocando um link para adicionar no carrinho consigo fazer normalmente, porem acho que fica meio estranho, a pagina fica muito grande.

obrigado!

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

O que eu sempre digo, vai fazer TCC? Escolha algo que você domina, senão acaba assim, se perde na tentativa de demonstrar um conhecimento que não tem, não encare isso como uma crítica, afinal de contas, pra mim não faz realmente diferença se você vai tomar bomba ou não, mas fica "a dica" para quem algum dia estiver pensando em fazer um TCC baseado em algum assunto onde tem um conhecimento primário, é fria.

Quanto ao seu problema:

Como passar mais parametros pelo $_POST? Ou to querendo demais rsrsrsrs.

Para passar vários parâmetros por POST basta ter vários campos, você só tem um campo, logo...

$sql_add = mysql_query(" INSERT INTO carrinho (id_prod, nome_prod, valor_prod) Value ('$sabor') ");

Troque isso dai por:

$sql_add = mysql_query(" INSERT INTO carrinho (id_prod, nome_prod, valor_prod) Value ('$sabor') ") OR DIE(mysql_error());

Ai você descobre o motivo de não funcionar.

Link para o comentário
Compartilhar em outros sites

  • 0

quanto ao $_POST, eu sei pegar mais parametros pelo post, eu gostaria de saber se tem como fazer isso no POST['$var',$var2','var3'] , etc.

eu não tenho mais campos para passar pelo POST eu tenho 1 select que recebe os valores do banco de dados: vou passar o codigo completo:

então gente, eu estou mostrando o conteudo de uma tabela em um list/menu e quando o usuario escolher um sabor de pizza e clicar no botão adicionar,

tem que ser adiconado no carrinho:

codigo do produto, nome do produto, valor do produto.

depois vou até colocar a quantidade.

codigo da tabela:

CREATE TABLE IF NOT EXISTS `tb_produto` (
      `pro_cod` int(11) NOT NULL AUTO_INCREMENT,
      `pro_nome` varchar(30) DEFAULT NULL,
      `preco1` decimal(6,2) DEFAULT NULL,
       PRIMARY KEY (`pro_cod`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=45;

    **************************************************************************
    CREATE TABLE IF NOT EXISTS `carrinho` (
      `id_produto` int(11) NOT NULL AUTO_INCREMENT,
      `nome_produto` varchar(200) NOT NULL,
      `preco_produto` double(10,2) NOT NULL,
      `qtd_produto` int(11) NOT NULL,
      `sessao` text NOT NULL,
      PRIMARY KEY (`id_produto`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3;
codigo do form:
<!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>Untitled Document</title>
    </head>
    <body>
          <form id="form1" name="form1" action="cart.php?acao=add " method="post">
           <p>SELECIONE OS ITENS ABAIXO <br />&nbsp;&nbsp;&nbsp; DA PIZZA SALGADA:</p>
             <table >
      <tr>
        <td width="299">SABOR 1:&nbsp;&nbsp;
          <select name="sabor">
            <option>Selecione</option>
    <?
    include "config.php";
      $sql_pesquisar = mysql_query("SELECT * FROM tb_produto WHERE pro_tipo LIKE 'pizza' ORDER BY pro_nome ASC");
               while($linha = mysql_fetch_array($sql_pesquisar)){
    ?>

            <option><?=$linha['pro_cod']. "&nbsp;&nbsp;".$linha['pro_nome']. "&nbsp;&nbsp;".$linha['preco1'] ?></option>
       <?
        }
           ?>
          </select>    </tr>
      <tr>
        <td><label>
          <input type="submit" name="adicionar" id="adicionar" value="ADICIONAR" />
        </label>  </tr>
    </table>
    </form>
    </body>
    </html>
codigo do cart.php esta inserindo valores em branco.
<?
    include "config.php";

    $sabor = @$_POST['sabor'];
    $id = $_POST['pro_cod'];
    $nome = $_POST['pro_nome'];
    $valor = $_POST['preco1'];


    if($_GET['acao'] == "add"){

    $sql_add = mysql_query(" INSERT INTO carrinho (id_produto,nome_produto, preco_produto, sessao) Value ('$id','$nome','$valor','$sabor') ") OR DIE(mysql_error());
       
    }
    ?>

Link para o comentário
Compartilhar em outros sites

  • 0

$_POST['$var',$var2','var3'] -> Isso não existe.

No teu caso, seria muito mais coerente você passar apenas o código do produto para inserir no carrinho:

<option value="<?php echo $linha['pro_cod'];?>"><?php echo $linha['pro_nome']. "&nbsp;&nbsp;".$linha['preco1'] ?></option>
Ai no carrinho...
$id = $_POST['pro_cod'];


$sql_busca = mysql_query("SELECT * FROM tb_produto WHERE pro_cod = '$id'");
$dados = mysql_fetch_assoc($sql_busca);

    if($_GET['acao'] == "add"){

    $sql_add = mysql_query(" INSERT INTO carrinho (id_produto,nome_produto, preco_produto, sessao) Value ('$id','".$dados['nome da coluna']."','".$dados['nome da coluna']."','".$dados['nome da coluna']."') ") OR DIE(mysql_error());
      //É claro que você deve substituir nome da coluna pelo nome da coluna que deve ser usada ali... também é coerente verififcar se a query $sql_busca realmente retornou algum resultado...
    }

Pronto, você recebe o código, faz a query com ele, busca os outros dados e insere no carrinho, apesar que, com isso você fica duplicando informações, como se trata de um SGBD relacional, bastaria o código do produto e uma query com joins para unir as duas tabelas, então na verdade, no carrinho bastaria guardar o código do produto e a quantidade o resto você poderia resgatar a informação direto da outro tabela. E lembre-se, um tratamento contra sql injection não faz mal pra ninguém.

Link para o comentário
Compartilhar em outros sites

  • 0
eu gostaria de saber se tem como fazer isso no POST['$var',$var2','var3'] , etc.

Não. Isso não é possível.

Poderia fazer uma gambiarra, enviando um valor concatenado, com uma string 'especial', e depois com um explode nessa string, você separar os valores.. mas isso é muuuita gambiarra.

Você já estudou SQL ?

Que sentido tem guardar valores iguais em 2 tabelas diferentes?

a sua tabela `carrinho`, deveria conter apenas o campo `id_produto`, pois o certo é fazer um JOIN na outra tabela, e ai sim pegar os valores que você quer.

o campo 'qnt_produto', abra um input text para o usuário digitar a quantidade daquele produto que ele deseja.

os campos: `nome_produto`, e `preco_produto`, na tabela `carrinho`, são erros na modelagem. Não faça assim.

Link para o comentário
Compartilhar em outros sites

  • 0

é somente mostrar no carrinho o nome e o valor do produto, a quantidade o usuario digita, somente a forma de enviar para o carrinho que gostaria que fosse o list/menu, quanto ao valor isso vai depender do tamanho da pizza que o suario escolher.

meu banco: primeiro eu faço tudo como teste para depois jogar no meuu projeto ok.

mxmaster:

--
-- Banco de Dados: `pizza`
--

-- --------------------------------------------------------

--
-- Estrutura da tabela `produtos`
--

CREATE TABLE IF NOT EXISTS `produtos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(255) NOT NULL,
  `preço` decimal(10,2) NOT NULL,
  `imagem` varchar(200) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6;

--
-- Extraindo dados da tabela `produtos`
--

INSERT INTO `produtos` (`id`, `nome`, `preço`, `imagem`) VALUES
(1, 'Pizza de Calabreza', '10.90', 'pizza1'),
(2, 'Pizza de Atum', '20.00', 'pizza2'),
(3, 'Pizza Vegetariana', '15.00', 'pizza3'),
(4, 'Pizza Portuguesa', '25.00', 'pizza4'),
(5, 'Pizza Mista', '31.42', 'pizza5');
index.php: "fiz a modificação para o seu código
<!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=iso-8859-1" />
<title>Carrinho TCC</title>
</head>

<body>

<form nome="form1" method="post" action="carrinho.php">
             <input type="hidden" name="IDProd" value="<?=$id?>">
              <p>OPÇÕES DE SABORES: <BR />
                <br />
                <select name="sabor">
                  <option>Selecione</option>
                 
               <?php
                 require("conexao.php");
             
                 $sql = "SELECT * FROM produtos";
                 $qr = mysql_query($sql) or die(mysql_error() );
                    while($ln = mysql_fetch_assoc($qr)){
                       $nome = $ln['nome'];
                       $id = $ln['id'];
               ?>     
                  <option value="<?=$id ?>"><?=$nome?></option>
                 
                 
                    <?   
                 }
                 ?>
                </select>
               
                <label>
                <input type="submit"  value="adicionar" />
                </label>
        </p>
        </form>
</body>
</html>
já no carrinho.php é onde são as maiores duvidas:
<?php
      $sabor = $_POST['sabor']; // coloquei esse echo aqui pra eu ver se 
      echo "$sabor"; //            estava passando o valor do option
        break; //       esta ok, ele ta passando assim: 1, 2 , 3 , 4 , 5 a cada seleçao que é exatamnete a ordem cadastrada no banco
                                // então até aqui esta ok.
      
      session_start();
      
      if(!isset($_SESSION['carrinho'])){   //aqui é o problema não estou conseguindo passar o valor da option para a session
         $_SESSION['carrinho'] = array(); // e depois ainda tenho que clicar em finalizar o pedido e mandar tudo para outra tabela no banco.
      }
      
      //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]);
                  }
               }
            }
         }
      
      }
      
      
?>
<!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=iso-8859-1" />
<title>Carrinho de compras</title>
<link rel="stylesheet" type="text/css" href="css/estilo.css"/>
</head>

<body>

<table align="center">
  <caption>Carrionho de Compras</caption>
    <thead>
            <tr>
                <th width="244" bgcolor="#0066FF">Produto</th>
                <th width="79" bgcolor="#0066FF">Quantidade</th>
                <th width="89" bgcolor="#0066FF">Preço</th>
                <th width="100" bgcolor="#0066FF">subtotal</th>
                <th width="64" bgcolor="#0066FF">Remover</th>
            </tr>
    </thead>
    
    <form action="?acao=up" method="post">
            
    <tfoot>
            <tr>
            <td colspan="5"><input type="submit" value="Atualizar Carrinho" /></td>
            <tr>
            <td colspan="5"><a href="index.php">Continuar Comprando</a></td>
            </tr>
    </tfoot>
    
    <tbody>
                <?php
                        
                        if(count($_SESSION['carrinho']) == 0){
                            echo '<tr><td align="center" colspan="5">Não há produto no carrinho</td></tr>';
                        }else{
                            require("conexao.php");
                            foreach($_SESSION['carrinho'] as $id => $qtd){
                                    $sql   = "SELECT * FROM produtos WHERE id= '$id'";
                                    $qr    = mysql_query($sql) or die(mysql_error());
                                    $ln    = mysql_fetch_assoc($qr);
                                    
                                    $nome  = $ln['nome'];
                                    $preço = number_format($ln['preço'], 2, ',', '.');
                                    $sub   = number_format($ln['preço'] * $qtd,2,',','.');
                                
                                    //@$total += $sub;
                                    @$total += $ln['preço'] * $qtd; 
                                    
                                echo '<tr>
                                        <td>'.$nome.'</td>
                                        <td><input type="text" size="3" name="prod['.$id.']" value="'.$qtd.'" /></td>
                                        <td>R$ '.$preço.'</td>
                                        <td>R$ '.$sub.'</td>
                                        <td><a href="?acao=del&id='.$id.'">Remove</a></td>
                                    </tr>';
                                        
                            }
                                $total = number_format($total,2, ',','.');
                                echo '<tr>
                                            <td align="center" colspan="4">Total</td>
                                            <td>R$ '.$total.'</td>
                                        </tr>';
                        }
                ?>
    
        
    
    </tbody>
  </form>
        
</table>        
</body>
</html>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...