Setar valor de campo com base em outro campo

Olá,

Dei uma olhada em outras perguntas, mas nenhuma me levou a uma solução.

Tenho a seguinte situação:

  • Tenho um formulário de cadastro de produtos de supermercados
  • A tabela a qual recebe o cadastro possui um relacionamento normalizado com outras tabelas, como familia > Subgrupo > Grupo > Divisao
  • Nessa tabela de produto tenho o familia_id para o relacionamento com a tabela família e por uma questão técnica tenho também nesta tabela o campo divisao_id para o relacionamento coma tabela Divisao
  • Ao selecionar a Familia do produto a ser cadastrado preciso que o campo divisao_id receba o id correto da divisao, porem este campo não é visivel

Minha dúvida é como posso fazer isso?

Obrigado desde já pela ajuda.

Abraço,

Bom dia!!

No evento Ajax onChange do campo familia_id, você faz um select na tabela familia pegando o valor do divisao_id e seta esse valor ao campo escondido.

Att.

Ola Thiago,

E como eu seto o valor para o campo divisão_id.

Valeu

$check_sql = "SELECT division_id"
           . " FROM familia"
           . " WHERE familia_id = " . {familia_id};
sc_lookup(rs, $check_sql);

if (isset({rs[0][0]}))     // Row found
{
    $divisao_id = {rs[0][0]};
}

Olá Thyago, bom dia!

Obrigado pela ajuda.

Não consegui saber o porque de não estar funcionando. Veja abaixo, o que fiz:

Adicionei no Evento Ajax um evento para o campo familia_id e inclui o comando abaixo:

$check_sql = “SELECT a.id”
. " FROM divisao a"
. " INNER JOIN grupo b"
. " on a.id=b.divisao_id"
. " INNER JOIN subgrupo c"
. " on b.id=c.grupo_id"
. " INNER JOIN familia d"
. " on c.id=d.subgrupo_id"
. " WHERE d.id = " . {familia_id};
sc_lookup(rs, $check_sql);

if (isset({rs[0][0]})) // Row found
{

$divisao_id = {rs[0][0]};

}

O problema é que não está me retornando o valor correto da divisao_id. No exemplo que estou fazendo, retorna 0 sendo que o correto seria 1, pois não tenho nenhuma divisao com o divisao_id igual a 0. Veja o erro abaixo:

INSERT INTO produto (nome, descricao, familia_id, marca_id, foto, usuario, preferencia, barras, embalagem_Id, porcao, equivalente, interacao, ativo, divisao_id) VALUES (‘MACARRÃO COM OVOS PENNE DONA BENTA - 500G’, ‘MACARRÃO COM OVOS PENNE DONA BENTA - 500G’, 1, 1, ‘’, 0, 0, ‘’, 1, ‘’, ‘’, ‘2015-08-04 08:24:14’, 1, 0)

Quando executo o SQL acima direto no MySQL o retorno é divisao_id igual a 1, veja:

SELECT a.id
FROM divisao a
INNER JOIN grupo b
on a.id=b.divisao_id
INNER JOIN subgrupo c
on b.id=c.grupo_id
INNER JOIN familia d
on c.id=d.subgrupo_id
WHERE d.id = 1

O que será que estou fazendo de errado ou deixando de fazer?

Mais uma vez obrigado pela ajuda.

Abraço,