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

Após realizar o deploy no hostinger não consigo visualizar as categorias dos produtos

Código do formulário de cadastro de produtos

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

    $categorias = listaCategorias($conexao);
?>
    <h1>Formulário de cadastro</h1>
        <form action = "adiciona-produto.php" method="post">
            <table class="table">
                <tr>
                    <td>Nome:</td> 
                    <td>
                        <input class= "form-control" type="text" name="nome"/>
                    </td>
                </tr>
                <tr>
                    <td>Preco:</td>
                    <td>
                        <input class= "form-control" type="number" name="preco"/>
                    </td>
                </tr>
                <td>Descricao: </td>
                <td>
                    <textarea name="descricao" class="form-control"></textarea>
                </td>
                <tr>
                    <tr>
                        <td></td>
                        <td><input type="checkbox" name="usado" value="true">Usado
                    </tr>
                    <td>Categoria:</td>
                    <td>
                        <select name="categoria_id" class="form-control">
                            <?php foreach ($categorias as $categoria): ?>
                               <option value="<?=$categoria['id']?>"><?=$categoria['nome']?></option>     
                              <?php endforeach ?>                
                        </select>
                    </td>
                </tr>
                <tr>
                    <td>
                        <input class ="btn btn-primary" type="submit" value="Cadastrar"/>
                    </td>
                </tr>
            </table>
        </form>
<?php include ('rodape.php'); ?>
12 respostas

Boa tarde Hugo! Você chegou a criar a tabela de categorias no banco de dados e inserir alguns registros lá?

Boa tarde Jonas, não inseri nada ainda via sql. Vou tentar realizar, mas agora tá aparecendo mais um erro. Vou tentar inserir e ver o que dá e posto o novo erro neste post também

Tentei inserir e dá esse erro:

"Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /storage/ssd2/461/5607461/public_html/banco-produto.php on line 7".

Entretanto, no banco de dados aparece o produto

Bom dia Hugo! Posta o código do arquivo banco-produto.php para eu dar uma olhada!

Bom dia Jonas, já agradeço a ajuda desde já. Segue o código abaixo :D

<?php 

function listaProdutos($conexao){
        $produtos = [];
        $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}')";
    return mysqli_query($conexao, $query);

}


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);

}







?>

Pelo que eu vi, seu código está correto.

Mas observei que você relatou que o erro ocorre quando você adiciona um produto, e o erro reportado pelo PHP é na linha 7:

while ($produto = mysqli_fetch_assoc($resultado)) {

Consultei o manual do PHP:

https://secure.php.net/manual/pt_BR/mysqli-result.fetch-assoc.php

E encontrei uma pista do que pode ser o problema:

A função mysqli_fetch_assoc "Retorna uma matriz associativa que corresponde a linha obtida, ou NULL se não houverem mais linhas."

Esse problema deve estar ocorrendo pois a tabela de categorias ainda não foi populada. Você já inseriu algum registro nela?

Eu inseri sim pelo banco de dados. Esse erro aparece no site todo olha ai https://portfoliohugonaaman.000webhostapp.com/. Só que mesmo inserindo no banco ele fica sem registros na aba produtos. Além do erro que fica dando de não mostrar as categorias naquele parte do select. Para testar eu tentei subir os mesmos arquivos alterando apenas minha conexão('conecta.php') para que fosse local e funcionou normalmente.

Para testar eu fiz o seguinte, baixei os arquivos do projeto no link específico da aula e tal, resultado, continua com o mesmo erro. Agora continua não aparecendo as categorias no select. Pelo php admin do 000webhost.com dá pra ver que foi criado as tabelas no banco de dados com 'categorias' e 'produtos' ambas populadas com um produto adicionado e quatro categorias. Sinceramente, não sei por onde ir tendo em vista que o próprio código disponibilizado pelo curso não funciona.

No momento o erro que estava aparecendo no meu código: "Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /storage/ssd2/461/5607461/public_html/banco-produto.php on line 7" parou de aparecer.

solução!

Fiz um teste tentando adicionar um Produto. As categorias não são exibidas na combobox. Depois de mandar adicionar, mandei exibir o código fonte e apareceu essa mensagem dentro do html gerado:

"O produto teste não foi adicionado: Incorrect database name 'id5607461_loja '"

Verifique se no arquivo conecta.php você apontou o nome correto do banco de dados lá do servidor da 000webhost.

Jonas, vlw mano. Era esse erro mesmo, eu tinha confundido a ordem dos campos no conecta.php. Muito obrigado pela atenção e sucesso para você :D

Não há de quê Hugo! Sucesso para você também! :-)