2
respostas

Botão alterar produto com Modal

Gostaria de colocar chamar o altera produto através de um modal no entanto estou ao tentar ele não carrega todos os itens do lista produto e gera um erro "Cannot redeclare listaprodutos()" . Alguém poderia me dar uma luz?

Estou chamando o modal da seguinte forma:

<?php
                         $produtos = listaprodutos($conect);
                         foreach ($produtos as $produto) { 
                             ?>   
                             <!--align=center funciona somente com o td-->            
                             <tr>
                                 <td ><?=$produto['nome']?></td>
                                 <td ><?=$produto['preco']?></td>
                                 <td ><?=$produto['descricao']?></td>
                                 <td><?=$produto['categoria_nome']?></td>
                                 <td><form action="remover_produto.php" method="POST">
                                       <input type="hidden" name="id" value="
                                           <?=$produto['id']?>">
                                       <button type="submit" class="btn btn-outline-danger">Excluir</button>                      
                                     </form>
                                </td>
                                 <td>
                                    <button type="button" class="btn btn-outline-success" data-toggle="modal" data-target=".bd-example-modal-sm<?php echo $produto['id']; ?>">Alterar</button>
                                    <?php
                                    include 'editar_produto.php';
                                    ?>
                                </td>

                             </tr>
                             <?php
                         }
                         ?>

Esse é o cabeçalho do modal em questão

<?php  
include ("conexao.php");
include ("functions_produto.php");
$categorias = listacategorias($conect);
?>
<div class="modal fade bd-example-modal-sm<?=$produto['id']?>" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
  <div class="modal-dialog modal-sm">
        <div class="modal-content">
            <div class="container">

E aqui está a function

<?php
function listaprodutos($conect){
    $produtos = array();
    $resultado = mysqli_query($conect, "select p.*,c.nome as categoria_nome from produtos as p join categorias as c on c.id=p.categoria_id");

    while ($produto=mysqli_fetch_assoc($resultado)) {
        array_push($produtos, $produto);
    }
    return $produtos;
}
2 respostas

Oi Roberval, tudo bom?

O erro:

Cannot redeclare listaprodutos()

Costuma indicar que estamos incluindo duas vezes o mesmo arquivo e ele está tentando declarar a função duas vezes. A função listaprodutos está dentro do arquivo functions_produto.php.

Uma possivel solução é verificar onde você está duplicando essa inclusão. Outra, e mais concreta, é você trocar os includes por include_once, assim esse problema não vai acontecer pois o arquivo será incluido uma vez só.

Abraço

O estranho é que quando chamo uma pagina com href no lugar do modal ele não retorna esse erro.