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.
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);
}
?>
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
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.
Após a parte sobre sessões, tentei fazer o desafio que seria uma lista de contatos, com o nome o telefone, só que o array sempre limpa e fica somente o ultimo cadastrado, porém, não consegui achar o erro.
Eu encontrei alguns erros no seu script. O primeiro é que você sempre coloca os dados do contato no mesmo índice do array, assim ele não cria um novo índice.
O outro é no laço foreach que deve usar a variável $contato internamente e não o $listaContatos.
@evaldojuniorbento voltei a ter problemas com o cap. 14.3, onde fala que se testar já é possível visualizar mas não adicionar, porém não mostra a tabela, apenas o nome. Quando você testou meu código, estava mostrando normalmente? Não consigo encontrar o erro, ta foda
Boa tarde, cara não estou conseguindo realizar o exercício 4.7 que seria um cadastro de contato (nome, número e email), o php me retorna um índice ão definido porem eu estou passando o name no input e $_get para jogá-los dentro do array, se puder me ajudar ou enviar algum link explicando o que está faltando no meio do caminho, segue o código:
<?php
session_start();
?>
evaldojuniorbento olhando agora a resposta que deu para o @br.ananias consegui entender como organizou o código e talvez resolver meu problema (ainda não mexi no meu e testei), mas ainda estou confuso sobre a lógica, pode me explicar por favor?
Estou começando meus estudos com PHP usando seu livro e já surgiu uma dúvida: No desafio 6 do capítulo 4 construir um calendário do ano todo eu não estou conseguindo fazer os meserçaes começarem no dia certo, por exemplo: 31 de março cai na terça mas primeiro de abril cai na quinta ao invés de cair na quarta. Segue meu código para você analizar: