frente.
67
7.3. Buscando dados no banco
Casa do Código
Sempre ouvi falar de mysql_connect()
Talvez você já tenha visto algum texto sobre PHP e MySQL em que a
função de conexão era a mysql_connect(). Esta função existe, assim
como várias outras funções que começam com mysql_, mas elas serão
removidas do PHP em breve. Por isso, o ideal é usar sempre a nova e me-
lhorada versão da biblioteca MySQL do PHP, a MySQLi. No geral, basta
adicionar a letra i nos nomes de função MySQL e um parâmetro aqui
ou ali, que tudo funciona bem, mas existem algumas diferenças entre
as bibliotecas. Então, a dica é: sempre use a versão nova da biblioteca
MySQL para PHP. Sempre.
Vamos fazer uma pequena experiência com a conexão ao banco. Acesse o ar-
quivo banco.php diretamente pelo navegador, no endereço: http://localhost/tarefas/
banco.php. Você deverá ver apenas uma página em branco, o que é bom, significa
que a conexão funcionou. Agora, experimente mudar o campo de senha da conexão
para uma senha incorreta e acesse o arquivo novamente. Você verá a frase Problemas
para conectar no banco. Verifique os dados! . Ou seja, nosso código de conexão está
funcional e também exibe erros caso não consiga conectar.
O erro de conexão aparece sempre, mesmo com os dados
corretos
Você poderá passar pelo problema do erro de conexão de vez em
quando. Caso isso aconteça, verifique se o servidor do MySQL está ativo
no painel de controle do XAMPP, ou em outra ferramenta que você use
para gerenciar o MySQL. Uma outra forma de verificar se o banco está
funcionando normalmente é acessando o PHPMyAdmin. Se ele também
não conseguir conectar, o banco poderá estar mesmo desligado.
7.3
Buscando dados no banco
A próxima alteração que faremos em nosso programa é fazer com que ele busque as
tarefas cadastradas no banco de dados e não mais na sessão. Para isso, abra o arquivo
tarefas.php e ache o trecho que verifica se a sessão existe para colocar na lista de
tarefas, ou cria uma lista vazia, caso a sessão não exista. O trecho é este:
68
Casa do Código
Capítulo 7. Integrando PHP com MySQL
<?php
...
if (isset($_SESSION['lista_tarefas'])) {
$lista_tarefas = $_SESSION['lista_tarefas'];
} else {
$lista_tarefas = array();
}
...
Este trecho será eliminado! No lugar dele, ficará apenas uma nova linha que
chama uma função que retornará as tarefas cadastradas no banco:
<?php
...
$lista_tarefas = buscar_tarefas($conexao);
É claro que a função buscar_tarefas() ainda não existe, por isso iremos
criá-la dentro do arquivo banco.php. Então, abriremos novamente o arquivo
banco.php e no final dele vamos colocar a nova função. Mas antes de escrevê-la,
precisamos planejar um pouco o seu funcionamento.
A função buscar_tarefas() deverá usar uma conexão com o banco para
executar comandos SQL que busquem a lista de tarefas. Após buscar as tarefas, ela
deverá criar um array com os dados das tarefas e então deverá retornar esses dados.
Certo, planejando assim fica mais simples alcançar nosso objetivo. Como já te-
mos uma variável com a conexão com o MySQL, poderemos usá-la. Vamos ao código
da função:
<?php
...
function buscar_tarefas($conexao)
{
$sqlBusca = 'SELECT * FROM tarefas';
$resultado = mysqli_query($conexao, $sqlBusca);
$tarefas = array();
69
7.3. Buscando dados
no banco
Casa do Código
while ($tarefa = mysqli_fetch_assoc($resultado)) {
$tarefas[] = $tarefa;
}
return $tarefas;
}
Nesta função foi criada uma variável com o comando SQL que irá buscar os
dados no banco, no caso o comando SELECT * FROM tarefas. Logo depois, a
função mysqli_query() usa a variável com a conexão e a variável com o comando
para ir ao banco, executar o comando e trazer o resultado. Este resultado fica arma-
zenado na variável $resultado. Na sequência, é criada a variável $tarefas, que
é apenas um array vazio. O próximo bloco é o while, que é executado até que a
função mysqli_fetch_assoc() tenha passado por todas as linhas do resultado,
sendo que cada linha do resultado é armazenada na variável $tarefa, no singular,
para diferenciar do array $tarefas. E então temos, finalmente, o return que
devolve os dados para quem chamou a função.
Agora podemos atualizar a página tarefas.php e ver o resultado. Acesse o
endereço http://localhost/tarefas/tarefas.php e veja o que acontece. Um erro! Ele diz
que a função buscar_tarefas() não existe! Mas nós acabamos de escrevê-la.
Analisando o problema é fácil identificar que o arquivo tarefas.php tem um
include apenas no final para o arquivo template.php. Como ele não sabe da exis-
tência do arquivo banco.php, ele gera o erro. Vamos corrigir o problema adicio-
nando um include para o arquivo banco.php. Este novo include será adicionado
no começo do arquivo, logo após a função session_start():
<?php
session_start();
include "banco.php";
...
Agora sim, atualize a página e você verá que ela exibe os dados cadastrados no
banco! Veja como ficou a minha:
70
Casa do Código
Capítulo 7. Integrando PHP com MySQL