Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problema com comparação de objetos

Bom dia pessoal , estou fazendo o curso de PHP Orientados a objetos e agora que estou chegando no final me deparei com um problema no meu código, vou alterar um produto na categoria ela não vem selecionada a real categoria do produto , vem sempre selecionada a categoria do esporte que a categoria default. Se algué, puder me ajudar ficarei muito grato.

    <tr>
                <td>Nome:</td>
                <td><input type="text" name = "nome" class = "form-control" value = "<?=$produto->getNome();?>"></td>
            </tr>
            <tr>
                <td>Preco:</td>
                <td><input type = "number" name = "preco" class = "form-control" value = "<?=$produto->getPreco();?>"></td>
            </tr>
                <tr>
                <td>Descrição:</td>
                <td><textarea name = "descricao" class = "form-control"><?=$produto->getDesc();?></textarea></td>
            </tr>
            <tr>
                <td></td>
                <td><input type = "checkbox" name = "usado" <?=$usado?> value = "true">Usado
                </td>
            </tr>
            <tr>
                <td>Categoria</td>
                <td>
                    <select name = "categoria_id" class = "form-control">
                    <?php foreach ($categorias as $categoria) : 
                        $categoriax = $produto->getCategoria()->getId() == $categoria->getId();
                        $selecao = $categoriax ? "selected = 'selected'": "";
                    ?>
                        <option name = "categoria_id" value = "<?=$categoria->getId();?>" <?=$selecao?>>
                        <?=$categoria->getNome()?>
                    <?php endforeach?>
                <select>
                </td>
            </tr>
2 respostas

Oi Lucas, tudo bem? Tenta remover o atributo name da tag option do seu select.

Acontece que em selects somente a tag select precisa deste atributo, caso você tenha outro elemento com o mesmo name, o valor submetido será o primeiro a ser encontrado. Talvez por isso, a categoria enviada para atualização seja sempre a primeira.

Testa e depois me diz se deu certo? Fico no aguardo!

Bons estudos

solução!

Obrigado pela dica Wanderson , mas infelizmente não era isso não , consegui descobrir e que na minha função de busca produto eu estava sem utilizar um elemento setter da categoria por isso ele sempre usava a categoria default que no caso e esporte. Mas muito obrigado mesmo pela disposição em me ajudar.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software