Ir ao conteúdo

Posts recomendados

Postado

Gente me da um help, tenho um formulário para editar os dados da tabela, está funcionando normalmente. Porém ao carregar a pagina está buscando o último nome da tabela.

Gostaria de saber um jeito de quando carregar a página, já venha selecionado o valor correspondente ao dado daquela tabela.

 

Por exemplo, cadastrei 3 cargos: Auxiliar, Adm e Técnico. Dai cadastrei um funcionário com o cargo de Adm, quando carrega a pagina de editar ele já vem selecionado o ultimo valor, no caso Técnico e não o de Adm...

<label class="badge badge-secondary">Cargo:</label><br>
  <select class="form-control" name="cargo_id">
    <?php 
    while($linha = mysqli_fetch_array($consulta_cargo)){
      echo '<option value="'.$linha['id_cargo'].'" selected>'.$linha['nome_cargo'].'</option>';
    }
    ?>
</select><br><br>

 

  • Moderador
Postado

@gramosiri Isso só será feito se você tiver feito os relacionamento das tabelas corretamente.

 

Basicamente você vai ter isto na sua tabela:

 

Tabela funcionario

ID nome    cargo
1  fulano    1

No caso, o campo cargo, vai ser uma chave estrangeira da chave primária tabela cargo.

 

Se tudo tiver correto, a consulta será:

SELECT funcionario.nome, cargo.nomeCargo FROM funcionario 
INNER JOIN cargo ON cargo.ID = funcionario.cargo
WHERE ID = 1

Ali estamos dizendo para selecionar o campo nome da tabela funcionário, o campo nomeCargo da tabela cargo.

Onde o campo ID da tabela cargo é relacionada com o campo cargo da tabela funcionário.

do registro de ID 1.

 

Com isso você pega os dados e insere no elemento destinado.

Mas como eu disse. isso só funciona se você tiver feito o relacionamento certo,  criado o índice certo na tabela de funcionários...

 

Recomendo ver estes dois vídeos que mostro como fazer isso:

 

 

Parte 2

 

Postado

@DiF Olá, o relacionamento do banco está certo, como eu disse, a inserção, o delete está funcionando beleza, até mesmo o update, porém no update gostaria de quando buscasse os dados da tabela daquele id correspondente, buscasse a informação certa no select. Por exemplo:

 

Cadastro

2064423987_Semttulo.png.befdbf2767db124f7b9158b11652c920.png

 

Edição

188978845_Semttulo2.thumb.png.fb07e94a7cdbe4a8211aa88a8e7039f5.png

 

No cargo, está pegando o ultimo cargo e não o cargo correspondente...

  • Moderador
Postado

@gramosiri Posta seu código atual.

Mas basicamente é isso, que o colega mencionou.  Trazendo dado do banco de dados o valor ID do cargo você pode compará-lo em uma condição para que selecione o option certo.   

Lembrem estamos dando o norte e não o código todo... O seu trabalho é pensar na solução, o nosso é ajudar você a corrigir o que estiver de errado.

  • Curtir 1
Postado

@DiF @Public2004 Certo, estou tentando fazer o if mas parece que não deu muito certo...

 

Adicionei ao codigo a condição, se o cargo_id (Tabela Funcionario) for  igual a id_cargo (Tabela Cargo)

<?php if( $linha['cargo_id'] == $lista['id_cargo']){?>selected<?php } ?>

 

Fiz assim:

  <select class="form-control" name="cargo_id">
    <?php 
    while($linha = mysqli_fetch_array($consulta_cargo,$consulta_func)){
      ?>
    <option value="<?php echo $lista['id_cargo']?>" <?php if( $linha['cargo_id'] == $lista['id_cargo']){?>selected<?php } ?>> <?php echo $lista['nome_cargo']?></option>
        <?php
    }
        ?>
</select>

 

Postado

@gramosiri Boas. Como você listou os dados do funcionário antes de popular o "select", guarde o valor ref ao cargo/função em uma variável tipo: $occupation

No "select" dos cargos/funções, faça o loop no "option" e compare o valor com a variável armazenada anteriormente, quando for igual ativa o "selected", seria algo mais ou menos assim:

 

echo '<option value="id_cargo"';
if(campo_tabela_nome_cargo == $occupation){
	echo " selected";
};
echo '>campo_tabela_nome_cargo</option>';

Att.

Postado

@Public2004 Boa tarde, adicionei ao select o id de cada cargo, porém não consigo fazer o que estou querendo... Apenas o select que não está vindo corretamente quando busca do banco

Tentei assim, seguindo sua orientação

 

<select class="form-control" name="cargo_id">
    <?php 
    $occupation = mysqli_fetch_array($consulta_func);

    while($linha = mysqli_fetch_array($consulta_cargo)){
      ?>
    <?php echo '<option value="id_cargo"';
if(["nome_cargo"] == $occupation){
	echo " selected";
};
echo '>'.$linha['id_cargo'].' - '.$linha['nome_cargo'].'</option>';?>
        <?php
    }
        ?>
</select>

Agora está pegando o primeiro valor sempre e não o último como estava rsrs

Postado

@gramosiri Boas, defina a variável do "cargo/função" junto a sua primeira consulta quando traz os dados do funcionário. Algo como : $variavel_cargo = $dados['campo_tabela']; (só exemplo, altere de acordo com sua consulta/tabela).

Dentro do "select" faça o loop no "option" como já havia sugerido, mas observe que no exemplo utilizo valores descritivos só para exemplificar os campos, deve-se alterar de acordo com os dados da sua consulta/tabela.

echo '<option value="'.$dados['campo_id'].'"';
if($dados['campo_cargo'] == $variavel_cargo){
	echo " selected";
};
echo '>"'.$dados['campo_cargo'].'"</option>';

A lógica é simples, uma condição dentro do loop que compara valores (tabela cargo e variável) e que quando iguais, setam o "option" como "selected".

 

Att.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!