Jump to content

Insert com foreign keys


Recommended Posts

Posted

Boa tarde!

Eu tenho que fazer um projecto em que consiste fazer um site para compras online.

Eu tenho a tabela encomenda e a tabela linha de encomenda.

A tabela linha encomenda contem: numEncomenda, codProduto e quantidade;

A tabela encomenda contem: numEncomenda, numCliente, dataEncomenda , tipoEncomenda, estadoEncomenda ,dataInicioEntrega dataFimEntrega e codRecorrencia:

Ou seja, a linha de encomenda serve apenas para colocar os produtos e as quantidades referente a uma encomendas.

Mas o problemas é que não consigo inserir o codproduto nem a quantidade na tabela linha de encomenda. EU julgo que seja por caso das chaves estrangeiras.

 if($_GET['botao'] == 'finalizar_encomendas'){
                $codProduto = $_GET['codProduto'];
	$quantidade = $_GET['quantidade']; 
	$numEncomenda = $_GET['numEncomenda'];	

	if(isset($_SESSION['lista'][$codProduto])){
                   
	$query = " INSERT INTO linhaencomenda (numEncomenda, codProduto, quantidade  ". " VALUES ('$numEncomenda', '$codProduto','$quantidade')";
                mysql_query($query) or die('Erro ao ligar à Base de Dados');
         echo "O produto '$codProduto' foi adicionado com sucesso na sua linha de encomenda";
                }
             }

    Obrigado

Posted

Primeiro, devias ler isto: http://www.portugal-a-programar.pt/index.php?showtopic=16541

Depois, falta-te um ) na query:

if($_GET['botao'] == 'finalizar_encomendas') {
    $codProduto = mysql_real_escape_string($_GET['codProduto']);
    $quantidade = mysql_real_escape_string($_GET['quantidade']); 
    $numEncomenda = mysql_real_escape_string($_GET['numEncomenda']);        

    if(isset($_SESSION['lista'][$codProduto])) {
                   
        $query = "INSERT INTO linhaencomenda (numEncomenda, codProduto, quantidade) VALUES ('$numEncomenda', '$codProduto','$quantidade')";
        mysql_query($query) or die('Erro ao ligar à Base de Dados');
        echo "O produto '$codProduto' foi adicionado com sucesso na sua linha de encomenda";
     }
}

❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Posted

Obrigado!  😄

É que estou a utilizar o notepad ++ e não me apercebi que o erro deu se a este tipo de erros.  😄

E pelo que apercebi o meu codigo tem muito risco de vulnerabilidade, vou ter que tratar disso, obrigado por chamar me atenção desse risco.

Agora surgiu me uma nova duvida.

Porque eu criei um carrinho de compras com session.

e eu ja bati varias vezes com a cabeça na parede  :wallbash: e não arranjei uma solução eficiente.

Pois o codigo em cima serve para inserir 1 tipo de  produto e quantidade na linha de encomenda manualmente, ou seja um a um

será que existe uma outra forma de inserir varios produtos e varias quantidades automaticamente, ou seja, apenas com um clique adicionar tudo.

<?php
                         if(count($_SESSION['lista']) == 0){
                            echo '<tr><td>Não há produtos na sua lista</td></tr>';
                         }else{
                            require("../ligacao.php");
                            $total = 0;
                            foreach($_SESSION['lista'] as $codProduto => $quantidade){
                                  $sql   = "SELECT *  FROM produto WHERE codProduto= '$codProduto'";
                                  $qr    = mysql_query($sql) or die(mysql_error());
                                  $dados    = mysql_fetch_assoc($qr);
                                  
                                  $nome  = $dados['designacao'];
                                  $preco = $dados['preco'];
                                  $sub   = $dados['preco'];
                                  
                                  $total += $dados['preco'] * $quantidade;
                               
                               echo '<tr>       
                                     <td>'.$nome.'</td>
                                     <td><input type="text" size="3" name="produto['.$codProduto.']" value="'.$quantidade.'" /></td>
                                     <td>'.$preco.' €</td>
                                     <td>'.$sub.' €</td>
                                     <td><a href="?botao=eliminar&codProduto='.$codProduto.'"> Eliminar</a></td>
			     <td><a href="?botao=finalizar_encomenda&codProduto='.$codProduto.'&quantidade='.$quantidade.'&numEncomenda='.$numEncomenda.'">Finalizar</a></td>
                                  </tr>';
                            }
                               
                               echo '<tr>
                                        <td colspan="4">Total</td>
                                        <td>'.$total.' €</td>
                                  </tr>';
                         }
                   ?>

Mais uma vez obrigado.

Eu so recorri ao forum em ultimo recurso pois para esclarecer duvidas após varias pesquisas, não para me fazrem o codigo  😄

Posted

Usa a função:

http://www.php.net/manual/en/function.session-set-save-handler.php

para tomar conta dos cookies juntamente com as sessions. Grava as sessions na DB (pode ser uma tabela MEMORY) e assim não envias info dessas para o utilizador que pode ser mau.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

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
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.