Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

.Tigas.

Encomenda com vários produtos5

Mensagens Recomendadas

.Tigas.

Ora bem, estou a realizar a minha PAP e tenho uma dúvida numa tabela associativa chamada encomenda. Esta tabela tem 3 campos, 2 dos quais são chaves estrangeiras.

Encomenda:

n_encomenda (chave primária)

email (chave estrangeira, chave primária na tabela clientes)

nproduto (chave estrangeira, chave primária na tabela produtos)

A minha dúvida é a seguinte, querendo eu encomendar vários produtos de uma vez, imaginemos, querer encomendar 3 produtos. Como é que eu faço para registar uma encomenda e nessa mesma encomenda ter os 3 produtos? O campo nproduto supostamente só irá registar um produto. Eu não queria fazer uma encomenda diferente para cada produto.

Até agora achei uma solução mas não é bem a que quero. Envolve registar os nomes dos produtos num só campo e depois usar funções de strings para separar os nomes de cada produto de forma a lista-los no modo gráfico quando o cliente proceder à compra.

Obrigado desde já.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NunoDinis

Podes na tabela xpto, guardar o n_encomenda e o nproduto. Quando fores fazer a listagem, listas os produtos daquele n_encomenda.

(Obs: email a chave primária ? Podes estar a correr um grande risco..)


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
veaoum

Porque nao crias mais um campo para teres uma chave primaria unica para cada produto e geres tu a tua n_enconenda de modo a puderes ter valires iguais desde que seja na mesma encomenda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
.Tigas.

Podes na tabela xpto, guardar o n_encomenda e o nproduto. Quando fores fazer a listagem, listas os produtos daquele n_encomenda.

(Obs: email a chave primária ? Podes estar a correr um grande risco..)

E qual seria a tabela xpto? Uma nova? De qualquer forma não estou a perceber. Esta tabela já é associativa, é suposto criar uma associativa por cima desta?

Quanto ao email, fiz assim porque eu que vejo mais em websites/lojas online para se registarem clientes. É sempre email/password e também porque quero que o email seja único e que não haja vários registos com o mesmo email. Talvez deva meter o código_cliente como chave primária sim (mas assim não sei como meter o email como único e não me apetece fazer uma chave composta porque depois lixa-me as associativas).

Porque nao crias mais um campo para teres uma chave primaria unica para cada produto e geres tu a tua n_enconenda de modo a puderes ter valires iguais desde que seja na mesma encomenda

Desculpa, também não percebi esta proposta. x)

Se calhar sou eu que não tenho algum conhecimento que vocês têm mas o que eu sei actualmente é que:

Nº encomenda 1

Nº produto 1

E fica assim. Não é possível adicionar mais items a essa encomenda. Se quiser um novo produto já é a encomenda 2. :s

Portanto, como já devem ter percebido (mas eu prefiro frisar isto para ficar claro o objectivo) eu pretendo fazer uma espécie de carrinho de compras. Visualmente o cliente irá checkar checkboxes de cada produto que irão ser listados numa só encomenda para ele confirmar.

Editado por .Tigas.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
veaoum

Deduzo que tenhas mais que uma Tabela por isso guarda a integridade do e-mail para a tabela de clientes. Para esta tabela Sugiro-te os seguintes campos.

  • cod (numeração automatica, chave primaria da tabela)
  • e-mail (se for este o dado que é unico na tabela cliente)
  • Nome produto
  • Quantidade
  • data finalizado (colocas este campo a null até ele finalizar as compras)

Tens mais campos que podes juntar mas que na minha opinião não serão fundamentais tipo (nº encomenda ou data_acrescent_carrinho)

vamos fazer uma simulação...... queres adicionar dois produtos chamados A1 e B2 o e-mail é @.com, nesta altura ficas com duas entradas nessa tabela:

  • 123
  • @.com
  • A1
  • 1
  • string.empty

  • 124
  • @.com
  • B1
  • 1
  • string.empty

Neste momento o @.com pode adicionar produtos, alterar quantidades ou até eliminar produtos isto enquanto o campo data finalizado estiver vazio. Quando o @.com fechar a encomenda colocas a data desse dia em todos os dados que sejam do @.com e que tenham a data finalizado vazia, bloqueando assim qualquer tipo de alteração por parte do @.com

Não sei se é o que procuras mas é o que eu faria no teu lugar.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
.Tigas.

Já tinha pensado nisso mas isso assim são duas encomendas diferentes. É verdade que se quero pesquisar a encomenda de um utilizador posso simplesmente procurar pela data e se for a mesma data posso supor que é a mesma encomenda. Mas até pode acontecer o caso em que o cliente faz uma encomenda num dia e mais tarde, nesse mais dia faz outra encomenda.

Mas sim, parece que é o melhor a fazer e é melhor não perder mais tempo nisto. Obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.