Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
olá!
estou com uma dúvida:
tenho uma tabela no MySQL de empresas e uma de clientes.
na hora de cadastrar o cliente quero selecionar as empresas que esse cliente compra, utilizando checkboxes.
o problema é: como salvar as empresas que cada cliente compra? pensei em salvar num campo da tabela clientes mesmo, para não precisar criar uma tabela só para colocar cliente e empresa.
Como faço isso?
abraço
O correto seria você criar uma outra tabela mesmo como o Pegasus mencionou, porém uma outra alternativa seria criar um campo (empresas) na tabela clientes e nele você inserir os id das empresas separados por (,) virgula, como você recebe um array com as empresas vindo do formulário você pode tratá-lo antes e inserir no banco, segue abaixo um exemplo.
if(sizeof($_POST["empresas"]) != 0){
foreach($_POST["empresas"] as $empresa){
if($i == (sizeof($_POST["empresas"])-1) ){
$empresas .= $empresa;
}else{
$empresas .= $empresa.",";
}
$i++;
}
}
Qualquer dúvida estamos ai.
>
O Certo é criar uma tabela de relacionamentos mesmo, com o id do cliente e a empresa que ele compra, é o mais correto.
Se você for criar campos na tabela clientes você vai ter campos nulos nos outros clientes ex:
id - nome - empresa1 - empresa2 - empresa3
1 - diego - NOKIA - SONY - (NULL)
2 - Cenoura - NOKIA - MOTOROLLA - LG
3 - Ovo - SONY - (NULL) - (NULL)
Agora imagine que você tivesse apenas 1 cliente que comprasse em 20 empresas:
Você teria que criar mais campos na tabela cliente só por causa desse único cliente.
o correto é criar uma outra tabela e colocar o id do relacionamento, o id do cliente e o id da empresa e na tabela cliente você coloca o id do relacionamento.
eu pensei que criando um campo e jogando todas as empresas selecionadas ali dentro separadas por uma barra ou coisa assim pra depois dar um explode e verificar...
o problema é montar a "lista" pra salvar no banco.
Eu não vejo problemas em criar mais uma tabela...
Além de ser mais simples, mais semântico, você não se limita ao sistema, uma vez que seu sistema mude, a consistência dos dados continuará semântica..
Bom.. essa é minha opinião.
não tem que reinventar a roda
crie uma outra tabela você só ganhará tanto na manutenção como na performance
ghenschel,
Como os amigos aqui em cima falaram, crie uma nova tabela para armazenar os novos dados referente as empresas do cliente.
Ira ser mais facil de armazenar, organizar e reutilizar os dados se voce precisar.
O Certo é criar uma tabela de relacionamentos mesmo, com o id do cliente e a empresa que ele compra, é o mais correto.
Se você for criar campos na tabela clientes você vai ter campos nulos nos outros clientes ex:
id - nome - empresa1 - empresa2 - empresa3
1 - diego - NOKIA - SONY - (NULL)
2 - Cenoura - NOKIA - MOTOROLLA - LG
3 - Ovo - SONY - (NULL) - (NULL)
Agora imagine que você tivesse apenas 1 cliente que comprasse em 20 empresas:
Você teria que criar mais campos na tabela cliente só por causa desse único cliente.
o correto é criar uma outra tabela e colocar o id do relacionamento, o id do cliente e o id da empresa e na tabela cliente você coloca o id do relacionamento.