Edição de select multiple com php MySql

2 respostas Resolvido
programaçãophp
J

Olá galera, estou com uma seguinte duvida.
tenho um campo multiple select que ao cadastrar as informações multiplas envia com sucesso.
Porem meu problema é quando vou editar, ao buscar os dados na consulta aparecem certinho sem problema algum, só que ao clicar no select mostra o que já foi selecionado e repete para ser selecionado novamente.

segue o codigo

<?php
//busca do relacionamento referente ao vidro com acabamento           
        while($rows_relacaoVidro = mysqli_fetch_assoc($resultado_relacaoVidro)){ 
                echo '<option selected value="'.$rows_relacaoVidro['idvidrosfabrica'].'">'.$rows_relacaoVidro['descricao_vidro'].'</option>';        
        }
        //termino do relacionamento busca
         
         while($rows_vidro = mysqli_fetch_assoc($resultado_vidrosAtivo)){ 
                echo '<option value="'.$rows_vidro['idvidrosfabrica'].'">'.$rows_vidro['descricao_vidro'].'</option>';   
            } ?>            
      </select>

2 Respostas

rodevops
Solucao aceita

Na verdade você mesmo está duplicando os options…

Se o primeiro laço pertence ao que o usuário marcou e salvou, pode fazê-lo assim…

$escolhidos = [];
while ($row = mysqli_fetch_assoc($resultado_relacaoVidro)) {
    $id = $row['idvidrosfabrica'];
    $escolhidos[$id] = $id;
}

Depois no laço “original” faça…

<select ...>
<?php while($vidro = mysqli_fetch_assoc($resultado_vidrosAtivo)): ?>
    <option <?=isset($escolhidos[$vidro['idvidrosfabrica']]) ? 'selected' : ''?> value="<?=$vidro['idvidrosfabrica']?>"><?=$vidro['descricao_vidro']?></option>
<?php endwhile; ?>
</select>

Aproveito para te mostrar outra forma de “misturar” php com html usando while/endwhile etc e o operador de saida <?=?> que está habilitado no php desde a versão 5.4, veja como facilita a leitura, evita usar echos para imprimir html na tela…

J

Muito obrigado pela ajuda Rodevops, deu certinho aqui, agradeço a ajuda.

Criado 21 de março de 2018
Ultima resposta 21 de mar. de 2018
Respostas 2
Participantes 2