Solucionado (ver solução)
Solucionado
(ver solução)
13
respostas

Inserção de dados de 1 formulario em 2 tabelas BD

Vou explicar minha dúvida . A minha situação é a seguinte eu adicionei ao projeto um campo de parcelas , cada parcela tem uma DATA e um VALOR . Então no banco de dados eu fiz o que . Eu tenho uma tabela de pagamentos Que possui os seguintes campos

NotaFiscal Total Forma de Pagamento Parcelas ------

Agora minha dúvida pois cada nota fiscal pode ter varias parcelas e cada parcela deve ter seu valor e sua data de vencimento . Criei uma nova tabela no banco de dados que chama ParcelaNotaFiscal que possui Id_Parcela , ValorParcela , DataVencimento , Fk_NotaFiscal pois na minha visão uma Parcela está ligada somente a uma NOTA FISCAL porém uma NOTA FISCAL pode ter várias PARCELAS .

O que eu preciso agora é conseguir inserir no banco de dados os Dados e tambem inserir esses dados das parcelas no mesmo formulário teria jeito ? Por que até agora no curso as nossas funções de inserir dados sempre fizemos na mesma tabela , eu teria como inserir os dados em mais de uma tabela ao mesmo tempo .

Acho que pode ter ficado um pouco confuso , mas acredito que alguem já passou por essa situação .

E além do mais o que estou quebrando a cabeça . Se o rapaz escolher 2 parcelas eu quero que no meu formulario eu vou pegar o valor total e vou dividir esse valor em 2 e colocar em inputs . e tambem vai abrir duas caixas de data de Vencimento . Eu pensei em criar uma função que tivesse CASES . Case 1 - uma parcela eu desenharia aquela tabela . Case 2 - duas parcelas eu desenharia aquela tabela com a logica da divisão . Mas estou achando que vou escrever muito e vai ser difícil a manutenção .

E por ultimo para formatamos o valor para ficar bonitinho os valores de pagamento eu uso a classe Format_number ? Eu posso criar uma função que formata os número para usar toda hora ?

Tem bastante coisa gente , mas é por que estou muito animado com esse curso e por incrivel que parece esse forum daqui oferece resposta e dicas muito mais diretas do que outros por ai . Ainda mais para nós que estamos começando , por que sempre que questiono isso em forum me dizem para usar Classes , Ajax , Jquery e por ai vai mas ninguem me diz no básico para onde devo ir . Muito Obrigado !!

13 respostas
solução!

Hugo, você pode salvar em quantas tabelas quiser, usando a mesma conexão, desde que estejam no mesmo esquema (banco de Dados).

Quanto a escrever muito, isto é relativo. Você tem que escrever tudo o que precisa para implementar o que quer, as suas regras de negócio.

A meu ver você não deve ter a função que distingue 1 parcela de mais de uma.

Em uma função, você já resolve tudo.

Faz um laço de repetição que se repete tantas quantas forem as parcelas.

Dentro de cada repetição do laço você já monta o input da data de vencimento.

Você talvez nem precisasse do input de vencimento, caso estabeleça um dia fixo de vencimento, e assim o seu código já calcula todas as datas.

Bem interessante , mas eu faria o laço e como eu guardaria no meu banco o valor das parcelas e a data de vencimento dentro da mesma Ordem de Serviço ?

Você não havia falado em Ordem de Serviço. Cadê o campo nas tabelas? Você já tem um campo comum que é a foreign key "Fk_NotaFiscal" .

Mas não entendo qual o problema. Basta você criar o campo. Não sei o que você tá pensando, eu imagino que uma OS pode ter várias notas e cada nota pode ter vários itens. Caso contrário, não vejo necessidade de OS. A não ser que você trabalhe com pedidos (cada pedido seria uma OS) e quando vende o pedido vira compra. Ou seja OS se torna venda.

Explica melhor...

Para gravar no banco você faria a inserção dentro do laço de repetição. o algoritmo seria mais ou menos assim:

1) grava a tabela NotaFiscal (numero da nota, valor, forma de pagamento, etc)

2) calcula valor parcela = valor / qtd. parcelas

3) laço de repetição de 0 até qtd parcelas - 1(diminui 1) grava a parcela fim do laço

Muito boa essa ideia , e exatamente isso cada OS é um pedido . Vou tentar aqui lhe retorno. Muito Obrigado . Não tinha pensado em fazer um laço de repetiçao para inserir no banco

Olha aqui Sidnei essa situação e um exemplo do que vou precisar fazer bem simples , resolvendo esta eu corro atras do resto .

Um exemplo . Tenho uma tabela de compras com varios produtos e quero relacionar com o comprador . Na compra tenho o campo comprador_id ok ? Como consigo na minha função adicionar o produto e o comprador pois na hora que vou inserir os dados dentro do PHP , (lembrando que o comprador não existe vou colocar os dados dele tudo ao mesmo tempo na compra , situação hipotética ) o campo comprador_id ainda não vai existir pois estou inserindo os dados tambem do comprador naquele mesmo form de cadastro . Acho que isso é simples mas por incrivel que parece estou quebrando a cabeça com essa ideia . Essa seria uma situação acredito bem simples que a partir dela posso conseguir resolver o resto .

Novamente , muito obrigado pelo tempo !

Não sei se compreendi.

Você tem uma única tabela com dados de comprador produto e compra. É isto? Não existe tabela de produtos, ou existe? (pois você diz que tem uma, tabela de compras produtos). Em suma você tem um tabelão com todos os dados desde os dados do cliente, passando pelos dados do produto e tendo também os dados da compra.

Eu acho que isto não é legal. Se amanhã o mesmo comprador quiser comprar outro produto? Vai ter que digitar novamente todos seus dados, embora já tenho feito anteriormente uma compra.

E os produtos?? Também não tem tabela própria?

Bom se eu entendi, apesar de discordar (com todas minhas forças, rs), você não precisa do id do comprador, nem do produto. Apenas da compra que é a única entidade que você resolveu implementar no banco.

Isto vai contra tudo que sei que se refere a normalização de banco de dados, mas estamos na era de big data, nosql, nem vou discutir muito.

Pense bem e me manda os campos de todas as tabelas envolvidas.

Se não existe tabela de produtos, como o comprador vai escolher os produtos, de onde eles vem?

Não sei se esta última pergunta ainda tem a ver com os assuntos anteriores, mas eu faria assim:

  1. tabela de clientes (cliente_id, nome, cpf, etc)
    1. tabela de produtos (produto_id, produto nome, produto preço, etc)
    2. tabela de pedidos
    3. tabela itensPedido

(pedido_id - que é o número da sua OS- , pedido_cliente_id uma chave estrangeira(FK) com o id do cliente, pedido_situação que pode ser 0 ou 1.

No momento que a OS virar compra, muda a situação para 1 (apenas uma sugestão)

Tabela itensPedido itensPedido_id - id do registro de um item itensPedido_pedido_id - corresponde ao código do pedido - chave estrangeira) pedido produto_id - que é chave estrangeira para produtos. Cada item do pedido vai ser gravado aqui) itensPedido_quantidade

Este ainda não é o modelo ideal, mas isto é outra conversa.

Exemplo:

Clientes

id nome1 Claudio

2 Jose

Produtos

id nome preço

1 lápis 4

2 caneta 6

3 estojo 17

tabela pedido (OS)

id cliente_id situação

1 2 0

tabela pedidos Itens

id iddoPedido quantidade

1....1.............3

3....1.............5

Assim temos que o cliente 2 (jose) tem um pedido. este pedido tem 2 itens:

1 lápis e 3 estojos.

A formatação vai ficar ruim, mas acho que dá pra compreender.

qqr coisa diz

corrigindo 3 lápis e cinco estojos

Beleza excelente isso mesmo !!!!

bom, hugo, agora coloca a mão na massa.

Manda teu código implementando isto.

Até lá, no douts anymore, ok, guy?

Antes disto, responde as questões que perguntei ali em cima sobre suas tabelas...

Beleza sem problemas !!!

Opa Hugo, tudo bem?

Vou marcar a resposta do Sidnei como resolução para fechar essa dúvida, que por sinal foi muito boa.

Se você sentir que precisa de uma ajuda rápida em algo até mesmo extra curricular, lembra também do GUJ - http://www.guj.com.br, lá temos uma parte específica para PHP e como nós, diversos outros instrutores e moderadores que ajudam. Lá fica mais fácil ajudar em casos mais complexos como o seu.

Abraços.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software