[Livro PHP e MySQL] Dúvidas em geral

php-mysql

#106

Você pode tentar analisar o conteúdo da variável $mysqli antes de passá-la para o construtor da classe RepositorioTarefas. Faça isso usando um print_r(), por exemplo.

require_once "banco.php";

print_r($mysqli); die();

Se o resultado for uma página em branco significa que a conexão com o banco não está funcionando.


#107

Fiz isso antes de criar o construtor e está dando a mesma coisa.

Notice : Undefined variable: mysqli in C:\xampp\htdocs\www\livro1CC\tarefas\classes\RepositorioTarefas.php on line 2

E também depois que a função mysqli_connect é usada no banco.php:

Notice : Undefined variable: mysqli in C:\xampp\htdocs\www\livro1CC\tarefas\banco.php on line 11


#108

Aí está a resposta. A variável $mysqli não foi definida. Verifique se o arquivo banco.php está definindo a variável corretamente.


#109

Revi o capitulo 12.2 para ver se faltou algo, inclui algumas declarações e agora está dizendo que as funções buscar já estão sendo declaradas: Conflito com as novas funções do cap. 14?

Fatal error : Cannot redeclare buscar_tarefas() (previously declared in C:\xampp\htdocs\www\livro1CC\tarefas\banco.php:11) in C:\xampp\htdocs\www\livro1CC\tarefas\banco.php on line 21

<?php

$conexao = mysqli_connect(BD_SERVIDOR, BD_USUARIO, BD_SENHA, BD_BANCO);

if(mysqli_connect_errno($conexao)){
        echo "Problemas ao conectar no banco. Erro: ";
        echo mysqli_connect_error();
        die();
}

function buscar_tarefas($conexao){
        $sqlBusca = 'SELECT * FROM tarefas ORDER BY `tarefas`.`prioridade` DESC'; $resultado = mysqli_query($conexao, $sqlBusca);

        $tarefas = [];

        while($tarefa = mysqli_fetch_assoc($resultado)){
                $tarefas[] = $tarefa;
        }

        return $tarefas;
}

function buscar_tarefa_byId($conexao, $id) {
        $sqlBusca = 'SELECT * FROM tarefas WHERE id = ' . $id;
        $resultado = mysqli_query($conexao, $sqlBusca);
        return mysqli_fetch_assoc($resultado);
        }

function gravar_tarefa($conexao, $tarefa)
        {
                $sqlGravar = "
                        INSERT INTO tarefas
                        (nome, descricao, prioridade, prazo, concluida)
                        VALUES
                        (
                        '{$tarefa['nome']}',
                        '{$tarefa['descricao']}',
                         {$tarefa['prioridade']},
                        '{$tarefa['prazo']}',
                         {$tarefa['concluida']}
                 )";

        mysqli_query($conexao, $sqlGravar);
}

function editar_tarefa($conexao, $tarefa){
        $sqlEditar = "
                UPDATE tarefas SET
                nome = '{$tarefa['nome']}',
                descricao = '{$tarefa['descricao']}',
                prioridade = {$tarefa['prioridade']},
                prazo = '{$tarefa['prazo']}',
                concluida = {$tarefa['concluida']}
                WHERE id = {$tarefa['id']}
        ";

        mysqli_query($conexao, $sqlEditar);
}

function remover_tarefa($conexao, $id){
        $sqlRemover = "DELETE from tarefas WHERE id = ".$id;

        mysqli_query($conexao, $sqlRemover);
}

function gravar_anexo($conexao, $anexo){
        $sqlGravar = "INSERT INTO anexos
                (tarefa_id, nome, arquivo)
                VALUES
                (
                        {$anexo['tarefa_id']},
                        '{$anexo['nome']}',
                        '{$anexo['arquivo']}'
                )
        ";

        mysqli_query($conexao, $sqlGravar);
}

function buscar_anexos($conexao, $tarefa_id){
        $sqlBusca = "SELECT * FROM anexos WHERE tarefa_id = {$tarefa_id}";
        $resultado = mysqli_query($conexao, $sqlBusca);

        $anexos = [];

        while ($anexo = mysqli_fetch_assoc($resultado)){
                $anexos[] = $anexo;
        }
        return $anexos;
}

function buscar_anexo($conexao, $id){
        $sqlBusca = "SELECT * FROM anexos WHERE id = ".$id;
        $resultado = mysqli_query($conexao, $sqlBusca);

        return mysqli_fetch_assoc($resultado);
}

function remover_anexo($conexao, $id){
        $sqlRemover = "DELETE FROM anexos WHERE id = ".$id;
        mysqli_query($conexao, $sqlRemover);
}
?>

#110

Você está incluindo o arquivo duas vezes?


#111

Resolvi isso e voltou o de novo o problema hauahuah sad

Notice : Undefined variable: mysqli in C:\xampp\htdocs\www\livro1CC\tarefas\tarefas.php on line 10

Fatal error : Uncaught ArgumentCountError: Too few arguments to function RepositorioTarefas::buscar(), 0 passed in C:\xampp\htdocs\www\livro1CC\tarefas\tarefas.php on line 68 and exactly 1 expected in C:\xampp\htdocs\www\livro1CC\tarefas\classes\RepositorioTarefas.php:58 Stack trace: #0 C:\xampp\htdocs\www\livro1CC\tarefas\tarefas.php(68): RepositorioTarefas->buscar() #1 {main} thrown in C:\xampp\htdocs\www\livro1CC\tarefas\classes\RepositorioTarefas.php on line 58


#112

Você pode criar um zip do seu código e me mandar tudo?


#114

Encontrou o problema? Eu ia te mandar privado mas não sei onde fazer isso.


#115

Oi @coder só agora eu consegui olhar o código.

No arquivo banco.php você define uma variável chamada $conexao, mas no arquivo tarefas.php você tenta iniciar o objeto da classe RepositorioTarefas passando uma variável chamada $mysqli.

Duas soluções são possíveis aqui: Renomear a variável $conexao para $mysqli ou usar a variável $conexao quando for iniciar o objeto da classe RepositorioTarefas.