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

Problema com a função buscaProduto

Boa Tarde! Estou quebrando a cabeça com um problema. Na montagem do processo de alteração de formulário, criei a função buscaProduto na página banco-produto.php:

function buscaProduto($conexao, $id){
    $query = "select * from produtos where id= {$id}";
    $resultado = mysqli_query($conexao, $query);
    return mysqli_fetch_assoc($resultado);

Liguei a função à página produto-altera-formulario.php:

<?php include("cabecalho.php");
include("conecta.php");
include("banco-categoria.php");
include("banco-produto.php");

$id=$_GET['id'];
$produto= buscaProduto($conexao, $id);
$categorias=listaCategoria($conexao);
 ?>

Contudo, na execução da alteração na página, aparece o erro: Fatal error: Call to undefined function buscaProduto() in C:\wamp\www\loja\produto-altera-formulario.php on line 8

Agradeço a ajuda com esse problema!!

12 respostas

Não consigo achar o erro q ele acusa na linha: $produto= buscaProduto($conexao, $id);

Prezado Luis:

O erro que é a funcao nao existe. 2 coisas: No codigo apresentado acima, nao esta fechando a chave na declaracao da funcao. No caso o produto altera, faz o include do banco-produto.php, que contem a funcao acima, correto?

Oi Rogério, a função se encontra no banco-produto.php. Esqueci de fechar as chaves aqui, mas no código está fechado.

Luis, é complicado olhar o erro, sem ver o codigo completo. Pelo que postou, realmente nao tem muito sentido. Mas é como se ele entao nao tivesse incluindo o arquivo. Ou esta dando erro em algum dos scripts.php que inclue.

Gostaria de poder ajuda-lo mais, mas fiquei sem conseguir verificar o que esta havendo ai.

Rogério, pra você ver como é um erro estranho, acabei de colocar a função na própria página produto-altera-formulario.php e funcionou. Vou postar o código inteiro aqui

<?php include("cabecalho.php");
include("conecta.php");
include("banco-categoria.php");

function buscaProduto($conexao, $id){
$query = "select * from produtos where id= {$id}";
$resultado = mysqli_query($conexao, $query);
return mysqli_fetch_assoc($resultado);    

}

$id=$_GET['id'];
$produto= buscaProduto($conexao, $id);
$categorias=listaCategoria($conexao);

 ?>

        <h1>Alterando Produto</h1>
        <form action="altera-produto.php" method="post">
            <table class="table">
                <tr>
                    <td>Nome:</td>
                    <td><input class="form-control" type="text" name="nome" value="<?=$produto['nome']?>"></td>
                </tr>
                <tr>
                    <td>Preço:</td>
                    <td><input class="form-control" type="number" name="preco"></td>
                </tr>
                <tr>
                    <td>Descrição</td>
                    <td><textarea name="descricao" class="form-control"></textarea></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="checkbox" name="usado" value="true">Usado</td>
                </tr>
                <tr>
                    <td>Categoria:</td>
                    <td>
                        <select name="categoria_id" class="form-control">
                            <?php foreach($categorias as $categoria):?>
                            <option value="<?=$categoria['id']?>">
                                <?=$categoria['nome']?>
                            </option><br />                        
                            <?php
                            endforeach
                            ?>
                        </select>
                    </td>
                </tr>                
                <tr>
                    <td><input class="btn btn-primary" type="submit" value="Alterar"></td>
                </tr>

            </table>
        </form>

<?php include("rodape.php"); ?>

Luis, como seguro morreu de velho, dá uma olhada no encoding das duas páginas;

Eu tive um problema idêntico, mas com outra função. Quando eu colocava junto funcionava. Se estava em outro arquivo, não.

Aí vi que o encoding era outro e não funcionava.

Sidnei, vou fazer uma pergunta bem tapada: como eu faço isso? hahahahaha

Depende do editor que você usa pra digitar os programas, eu gosto do ultraedit, e nele aparece em baixo de cada arquivo qual o formato.

No eclipse, você clica com o direito sobre o nome do arquivo e vai em propriedades. Aí aparece, em baixo, text encoding com um combo onde você pode escolher.

Luis, realmente estranho isso. Mas interessante que tem outros 2 scripts que inclui tb e estes funcionam ok, certo? Somente este que parece nao ser incluido no codigo principal. Vc esta codificando num ambiente local? Vc esta com o PHP configurado para exibir todos os tipos de erros?

Tente colocar error_reporting(E_ALL) na linha inicial do codigo. Apenas para verificar se algum erro esta sendo gerado e nao esta percebendo. Mas isso so funciona se a diretiva no php.ini display_errors estiver como true. Caso contrario todo o erro é suprimido do codigo.

Oi Luís, tente verificar se o php está realmente conseguindo incluir o arquivo banco-produto.php.

Você pode verificar isso fazendo:

echo "Resultado do include: " . include("banco-produto.php");

Se tiver incluindo, o que você vai ver é => Resultado do include: 1

Se não tiver incluído, verá => Resultado do include:

Outra coisa que pode verificar é se você não possui mais de um arquivo banco-produto.php. As vezes estamos alterando um que está dentro de alguma pasta e o php está adicionando o que está fora de pasta, o que faz com que ele não tenha a função que você procura.

Espero que ajude, abraço.

solução!

Como não obtivemos resposta do criador da pergunta, estou fechando a pergunta. Futuras dúvidas, abrir novas perguntas.

Abraço.

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