problemas na inserção de dados em php | ZWAME Fórum
problemas na inserção de dados em php
Discussão em 'Web Development' iniciada por pibxis, 11 de Outubro de 2006. (Respostas: 4; Visualizações: 949)
Boas! Tenho uma base de dados com uma tabela pessoas e mais tres tabelas ligadas á chave primária da tabela pessoas (idpessoa). Estou a fazer o meu site em Dreamweaver. Tenho no mesmo form entradas de registos para tabelas diferentes sendo o idpessoa um hiddenfield , e que está a dar conflitos (digo eu) por ligar nos restantes insert records os idpessoas das outras tabelas ao mesmo hidden field. Se assim não der vou experimentar ligar a informação através do method post mas como é a primeira vez que estou a fazer algo deste tipo não faço ideia se resultará... Se alguém me poder ajudar dando um exemplo de formulários que ligam dados a tabelas diferentes fico imensamente agradecido. desde já um obrigado!
Da forma como apresentaste o problema fiquei um pouco confuso, no entanto julgo que o teu problema está mesmo no SQL.
De notar que quando estás a fazer um insert NÃO inseres valores nas colunas de númeração automática, tendo em conta que é bastante vulgar (e é a melhor opção) as chaves primárias que servem de identificador serem campos deste estilo tu não podes inserir valores nestas colunas pois a própria BD trata disso!
De qualquer das formas, poderias colocar aqui qual o código SQL que estás a executar e qual a estrutura das tuas tabelas (falo nos tipos dos campos).
Poix....é lixado quando somos nabos! Eu tenho andado ás voltas. basicamente o meu problema é: Como inserir dados em tabelas diferentes (isto já no browser) salvaguardando as relações entre os dados?
tenho as tabelas processo,pessoa,imovel e documentos. 1 processo pode levar até 4 pessoas e vários imóveis. os documentos são sempre referentes a 1a pessoa. As pessoas não tem que estar em nenhum processo mas 1 processo tem que levar no minimo 1a pessoa. Como é que eu insiro um novo processo, inserindo tbm várias pessoas (referentes ao processo é claro) ,respectivos documentos e imóveis sem precisar de inserir á mão os valores que os relacionam?
Sff, alguém que já tenha feito isto que me ilucide.
obrigado heckel pela tua atenção. Se achas que depois desta descrição, o código sql gerado pelo dreamweaver ainda é relevante para e como estou a fazer isto, faz um pkn reply keu posto. Mais uma vez obrigado. Abraços
O código SQL não é relevante, mas os campos que tens em cada tabela sim.
A forma de manteres a integridade das relações é simples, tens de ter duas chaves primárias na tabela dos processos, que seria o id_processo e o id_pessoa, desta forma garantes que tem de haver PELO MENOS uma pessoa. Limitar o número de pessoas até 4 não sei fazer...
Nas definições das relações, tens de configurar a BD de forma a que o id_pessoa da tabela de processos está ligado ao id_pessoa da tabela pessoas, isto é, garantir que existe a pessoa existe. Desta forma além de garantires que um processo tem pelo menos uma pessoa, também garantes que essa pessoa exista.
A forma mais fácil de inserires processos, seria uma nova linha por cada pessoa..., mas isto tornava a tua tabela de processos demasiado redundante. O que seria desperdicio de espaço na BD, então a solução seria criar uma nova tabela Pessoas/Processos com apenas 2 campos, sendo eles o id_pessoa e o id_processo em que nesta tabela terias a associação entre pessoas e processos. Na tabela dos processos deixarias de ter o id_pessoa.
Depois faço um desenho do esquema de tabelas para te tentar exemplificar melhor, com texto acaba por se tornar confuso...
eu penso que as relações da minha base de dados estão bem feitas mas o meu problema é a estrutura de inserção. Quero construir os inserts por passos, em páginas diferentes para as diferentes tabelas mas tenho de arranjar uma forma que os ligue de forma inequivoca visto que o formulário de cada inserção apenas envia os dados para uma tabela de cada vez.
Metaforicamente, como é que eu faço voar os ids de página para página para depois os inserir ao mesmo tempo na tabela processo, pois só posso fazer um insert d cada e de uma só vez?
Acho que só alguém que já tenha feito alguma vez isto é que me pode dar mesmo uma ajuda...
Heckel tás a ser altamente, agradeço-te, mas ainda não tenho solução. Se precisares de alguma coisa, manifesta-te.