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

Erros depois das alterações dessa aula!

Depois das alterações propostas nessa aula meu programa parou de funcionar completamente! Na hora de adicionar um produto tenho como retorno a seguinte mensagem de erro: "Fatal error: Cannot redeclare ListaProdutos() (previously declared in C:\xampp\htdocs\Loja\produto-banco.php:4) in C:\xampp\htdocs\Loja\produto-banco.php on line 8".

Já quando tento remover: informa que o produto foi deletado com sucesso, mas o mesmo permanece sendo listado e, inclusive, presente no banco de dados!

???

6 respostas

Allan, dá uma olhada no teu código e verificar se a função

ListaProdutos()

foi declarada 2 vezes. Se tiver, remove uma.

Oi, boa tarde...

não há duplicidade de funções no meu código, veja:

/*
<php include("cabecalho.php");?>
<?php include("conecta.php");?>
<?php 
 function ListaProdutos($conexao){
         $produtos=array();
         $resultado=mysqli_query($conexao, "select * from produtos");
         while($produto=mysqli_fetch_assoc($resultado)){array_push($produtos, $produto);}
         return $produtos;}
?>

<?php
function insereProduto($conexao,$nome,$preco,$descricao){
    $query= "insert into produtos(nome,preco,descricao) values('{$nome}', '{$preco}', '{$descricao}')";
    $Resultado=mysqli_query($conexao,$query);
    return $Resultado;}
?>

<?php
 function removeProduto($conexao, $id){
    $query="delete from produtos where id={$id}";
    return mysqli_query($conexao,$query);}
?>
*/
solução!

Olá Allan,

Bem, o que eu aconselharia você a fazer é retirar todas as tags de abertura e fechamento do PHP. Como esse é um arquivo que será consumido pelas outras páginas, não precisa ter em cada função, abrir e fechar a tag, apenas no início e no final.

Outra coisa: No seu codigo você inseriu o include e nesse arquivo "produto-banco.php". Nesse caso não precisa, pode retirar esse código, pois pode estar havendo conflito.

Repare que, quando você precisa inserir o código do "conecta.php" você insere ele antes do "produto-banco.php". Segue um exemplo do meu código abaixo do arquivo "produto-lista.php": (o nome do meu está "banco-produto.php")

<?php 
    include('cabecalho.php');
    include('conecta.php');
    include('banco-produto.php');
?>

Se nesse caso, eu usasse o seu código, estaria usando o arquivo "conecta.php" 2 vezes e geraria conflito.

Espero ter ajudado ;)!

Abs

/* hoje, depois de muitos dias sem ter tempo pra dar continuidade as aulas aqui na Alura, retomei os estudos e tentei implementar as correções sugeridas:

<?php 

 function ListaProdutos($conexao){
         $produtos=array();
         $resultado=mysqli_query($conexao, "select p.*, c.nome as categoria_nome from produtos as p join categorias as c on p.categoria_id = c.id");
         while($produto=mysqli_fetch_assoc($resultado)){array_push($produtos, $produto);
         return $produtos;
 }

function insereProduto($conexao,$nome,$preco,$descricao,$categoria_id, $usado){
    $query= "insert into produtos(nome,preco,descricao, categoria_id, usado) values('{$nome}', {$preco}, '{$descricao}', '{$categoria_id}',{$usado})";
    $Resultado=mysqli_query($conexao,$query);
    return $Resultado;
}

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

function alteraProduto($conexao, $id, $nome, $preco, $descricao, $categoria_id, $usado){
 $query="update produtos set nome='{$nome}', preco='{$preco}',descricao='{$descricao}',categoria_id='{$categoria_id}',usado='{$usado}' where id= '{$id}'";
 return mysqli_query($conexao, $query);
} 

?>

Mesmo assim, estou tento a seguinte mensagem de erro: "erro de sintaxe, fim de arquivo inesperado em C: \ xampp \ htdocs \ Loja \ PRODUTO-banco.php na linha 33"

Não consigo ver este erro no arquivo supracitado! Acho que seria mais pratico se vocês da Alura me fornecessem o código fonte de toda aplicação para que eu pudesse comparar com o meu e assim detectar o erro mais rapidamente! Estou travado nesses bugs, rs...

*/

Allan, qual é o código do arquivo produto-banco.php?

Dá destaque pra gente nas linhas 4 e 8, que estão sendo apontadas na mensagem de erro original.

O arquivo quem contém a função ListaProdutos() (provavelmente) está sendo importado duas vezes.

Oi...o código do arquivo "produto-banco.php" é o que o que foi postado acima! Olha ele aqui novamente:

/* <?php

function ListaProdutos($conexao){ $produtos=array(); $resultado=mysqli_query($conexao, "select p.*, c.nome as categoria_nome from produtos as p join categorias as c on p.categoria_id = c.id"); while($produto=mysqli_fetch_assoc($resultado)){array_push($produtos, $produto); return $produtos; }

function insereProduto($conexao,$nome,$preco,$descricao,$categoria_id, $usado){ $query= "insert into produtos(nome,preco,descricao, categoria_id, usado) values('{$nome}', {$preco}, '{$descricao}', '{$categoria_id}',{$usado})"; $Resultado=mysqli_query($conexao,$query); return $Resultado; }

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

function alteraProduto($conexao, $id, $nome, $preco, $descricao, $categoria_id, $usado){ $query="update produtos set nome='{$nome}', preco='{$preco}',descricao='{$descricao}',categoria_id='{$categoria_id}',usado='{$usado}' where id= '{$id}'"; return mysqli_query($conexao, $query); }

?> */