4
respostas

Edição de Produto

Olá boa noite, meu código está aparentemente tudo ok. só que quando clico em alterar produto ele me mostra sempre a mesma categoria. ele salva os arquivo no banco de dados com a categoria selecionada, quando alteramos a categoria ele altera também no banco, só que sempre que clico em alterar, a categoria está sempre como periférico ID="1"

Alguém pode me ajudar

4 respostas

Opa, acho que pode ser algum problema no código de montagem do select no html. Posta aqui?

Verifica se seu arquivo produto-altera-formulario.php está exibindo o select de categorias de uma forma parecida com:

<tr>
                <td>Categoria</td>
                <td>
                    <select name="categoria_id" class="form-control">
                    <?php foreach($categorias as $categoria) : 
                        // aqui a gente faz a lógica de verifica qual categoria é a selecionada pelo produto
                        $essaEhACategoria = $produto['categoria_id'] == $categoria['id'];
                        // se for a categoria, a gente imprime selected na option, fazendo com que ela venha selecionada por padrão =)
                        $selecao = $essaEhACategoria ? "selected='selected'" : "";
                        ?>
                        <option value="<?=$categoria['id']?>" <?=$selecao?>>
                                <?=$categoria['nome']?>
                        </option>
                    <?php endforeach ?>
                    </select>
                </td>
            </tr>

Meu código está assim. ja está em POO já revisei todo o código com o do instrutor que disponibiliza o arquivo para download e não vi o erro. O dele funciona legal mais o meu não KKKKKK

<td>Categoria</td>
    <td>
        <select name="categoria_id" class="form-control">
        <?php
            foreach($categorias as $categoria) : 
                $essaEhACategoria = $produto->categoria->id == $categoria->id;
                $selecao = $essaEhACategoria ? "selected='selected'" : "";
        ?>
            <option value="<?=$categoria->id?>" <?=$selecao?>>
                <?=$categoria->nome?>
            </option>
        <?php 
            endforeach
        ?>
        </select>
    </td>

Estranho, o código de exibição parece justo mesmo.

Da uma olhada se o produto esta vindo com categoria mesmo. Algo como:

// verifica o que tem dentro da categoria do produto
var_dump($produto->categoria);
// para a execução do script
die();
<td>Categoria</td>
    <td>
        <select name="categoria_id" class="form-control">
        <?php
            foreach($categorias as $categoria) : 
                $essaEhACategoria = $produto->categoria->id == $categoria->id;
                $selecao = $essaEhACategoria ? "selected='selected'" : "";
        ?>
            <option value="<?=$categoria->id?>" <?=$selecao?>>
                <?=$categoria->nome?>
            </option>
        <?php 
            endforeach
        ?>
        </select>
    </td>