Bento Evaldo Junior - Desenvolvimento web com PHP e MySQL стр 11.

Шрифт
Фон

Agora é necessário exibir a lista de tarefas. Ainda no mesmo arquivo, antes da

tag </body> vamos adicionar uma tabela HTML para listar as atividades. Dentro

desta tabela usaremos o foreach para pegar cada uma das tarefas que está no array

$lista_tarefas e exibir como linhas da tabela:

...

<table>

<tr>

<th>Tarefas</th>

</tr>

<?php foreach ($lista_tarefas as $tarefa) : ?>

<tr>

<td><?php echo $tarefa; ?> </td>

</tr>

<?php endforeach; ?>

</table>

36

Casa do Código

Capítulo 4. Entrada de dados com formulário

</body>

...

Repassando o código, foi criada uma tabela com apenas uma coluna, na qual o

cabeçalho é a palavra Tarefas e as linhas serão os nomes das tarefas.

Aqui existe um laço novo do PHP. Já vimos o while agora apresento o

foreach. Este laço serve para passar por todos os índices de um array, atribuindo

cada índice a uma variável que escolhemos, no caso, a variável $tarefa.

Uma outra novidade aqui é que não foram usadas as chaves para criar o bloco do

foreach, assim como foram usadas chaves para o bloco do while. Na verdade, o

foreach também pode ser usado com as chaves, sem problemas, mas esta forma,

usando dois pontos para abrir o bloco e a palavra endforeach fica mais legível em

templates HTML. Lembre-se que o nosso código com while estava apenas dentro

de um grande código PHP, neste caso estamos colocando pequenos pedaços de PHP

dentro do HTML. Sendo assim, fica mais legível fazer o uso desta sintaxe. Como

exemplo, veja como fica o mesmo bloco usando as chaves:

<?php foreach ($lista_tarefas as $tarefa) { ?>

<tr>

<td><?php echo $tarefa; ?> </td>

</tr>

<?php } ?>

Não parece ter muita diferença em um trecho pequeno desses, mas perceba

que <?php } ?> é uma linha bem genérica, que pode estar fechando um if, um

while, um foreach ou mesmo uma função e outros blocos PHP, enquanto <?php

endforeach; ?> é mais expressivo. Por isso, recomendo usar esta forma. Alias,

você pode experimentar outros blocos com esta sintaxe, como o if e endif, while

e endwhile e for e endfor. Mas prefira esta sintaxe para os templates HTML,

deixando a sintaxe de chaves para os arquivos e blocos que contenham apenas PHP.

Bem, voltando ao assunto da lista de tarefas, ao enviar um nome de tarefa, a sua

página deverá ficar assim:

37

4.4. Pegando os dados da URL

Casa do Código

Figura 4.3: Lista de tarefas com uma tarefa

Como estamos deixando tudo na mesma página, fica fácil adicionar uma nova

tarefa, então vamos adicionar uma nova tarefa usando o formulário que está antes

da tabela, no endereço http://localhost/tarefas/tarefas.php. Aqui eu digitei Estudar

HTML e usei o botão cadastrar e o resultado foi este:

Figura 4.4: Lista de tarefas com uma tarefa

Apenas a tarefa nova é listada! Onde está a tarefa antiga?

Por que a primeira tarefa sumiu?

PHP trabalha principalmente com web e neste caso o que acontece

a cada nova requisição que fazemos, seja pedindo uma página, seja en-

viando dados, é que o PHP interpreta tudo de novo e devolve apenas

HTML para o navegador. Ou seja, ele não lembra do que aconteceu na

última requisição feita!

A cada nova requisição o PHP processa tudo de novo e não guarda as variáveis

para outros acessos. Isso é um problema para a nossa aplicação, já que precisamos

38

Casa do Código

Capítulo 4. Entrada de dados com formulário

manter a lista das nossas tarefas. Mas calma, nem tudo está perdido! O PHP tem um

recurso que nos auxiliará a solucionar isso.

4.5

Sessões no PHP

O recurso que nos auxiliará a manter os dados entre as requisições são as sessões.

Uma sessão serve para mantermos uma variável especial que irá existir em todas as

nossas requisições. Lembra da super global $_GET? As sessões são tão fáceis de usar

quanto a $_GET, basta usar a super global $_SESSION. A grande

diferença é que

usamos a $_GET mais para ler informações e usaremos a $_SESSION para escrever

e ler informações.

O uso da $_SESSION exige só um esforço adicional, que é chamar a função

session_start() no começo do nosso programa. Para isso, vamos adicionar a

função antes da abertura do HTML:

<?php session_start(); ?>

<html>

...

Depois disso, precisamos alterar o uso da lista $lista_tarefas para pegar

os dados de $_SESSION, caso esses dados existam. Vamos mudar o if que veri-

fica se existem dados em $_GET e vamos adicionar um novo if após a criação do

array $lista_tarefas para preenchê-lo com os dados da $_SESSION, quando

necessário:

<?php

...

if (isset($_GET['nome'])) {

$_SESSION['lista_tarefas'][] = $_GET['nome'];

}

$lista_tarefas = array();

if (isset($_SESSION['lista_tarefas'])) {

$lista_tarefas = $_SESSION['lista_tarefas'];

}

...

?>

Agora, ao cadastrar algumas tarefas, o PHP irá manter os dados entre as requi-

sições! Veja como a sua lista deve ficar:

39

4.5. Sessões no PHP

Casa do Código

Figura 4.5: A lista de tarefas usando $_SESSION para manter os dados

Legal! Temos uma lista de tarefas já bem funcional! Claro que agora precisamos

de mais funcionalidades, como editar e excluir uma tarefa, mas já conseguimos pegar

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке