PI S1 DSW III DouglasARS
Apresentação
Olá Estudante,
Nessa nossa primeira semana de estudos vamos discutir algumas atividades previstas para nossa unidade. A intenção é aproveitar o sistema que começou a ser desenvolvido pelas equipes, incorporando outras técnicas e complementando o desenvolvimento. Ainda nessa primeira semana, vou apresentar como trabalhar com sessões, de modo que se possa fazer um tratamento individual de cada usuário que acessa um site desenvolvido em PHP. Também vou mostrar como alterar dados do formulário e falar um pouco sobre recursividade de páginas.
Bons Estudos!
Fiquem atentos as postagens no Fórum e participem dos nossos encontros virtuais.
Prof. Douglas A.
Objetivos
- Apresentar a unidade curricular.
- Trabalhando com sessões.
- Alterando dados com HTML/PHP/MySQL.
Trabalhando com sessões
Sessão é um recurso do PHP que permite que você salve variáveis com seus valores para serem usados ao longo da visita do usuário. Valores salvos na sessão podem ser usados em qualquer parte do script, mesmo em outras páginas do site. São variáveis que permanecem setadas até o visitante fechar o browser ou a sessão ser destruída.
Um visitante acessando a sua homepage ganha um identificador único, chamado id de sessão. Este id é salvo em um cookie do lado do usuário ou propagado via URL. Desta forma, é possível registrar um número arbitrário de variáveis que serão preservadas entre as requisições. Quando
um visitante acessar o seu site, o PHP irá conferir quando um id de sessão específico for enviado com a requisição. Existem algumas formas de criar variáveis de sessão, a seguir é mostrado um exemplo simples de atribuição e recuperação dos dados.
O PHP usa uma variável global, denominada $_SESSION para armazenar os dados de sessão. Para atribuir um valor de uma variável de sessão podemos usar a seguinte sintaxe:
<?php session_start(); $_SESSION['variavel']='Valor a armazenar'; ?>
A função session_start() inicia o uso de sessão da página. Este comando é obrigatório para todas as páginas que forem utilizar sessões;
- $_SESSION é o identificador global para sessões; variavel é o índice sob o qual será armazenado um valor e "Valor a armazenar" é o valor atribuído a variável de sessão. Este valor armazenado pode ser usado em qualquer página do seu website.
<?php session_start(); echo $_SESSION['variavel']; ?>
Exemplo
Depois de iniciada a sessão você pode definir valores para ela da seguinte forma:
<?php $_SESSION['usuario'] = 'Douglas'; $_SESSION['acessos'] +=1; ?>
Quando você precisar exibir o valor salvo na sessão, provavelmente em outras páginas, é só fazer assim:
<?php echo $_SESSION['usuario']; // Resultado: Douglas echo $_SESSION['acessos']; // Resultado: 1 (experimente dar <F5> na página) ?>
Você pode salvar quantos valores quiser, pode redefinir os valores e usa-los nos comandos echo, argumentos de funções ou da forma que preferir.
Para deletar uma variável específica da sessão você usa a função unset().
<?php unset($_SESSION['acessos']); // Deleta uma variável da sessão ?>
Pode também destruir toda a sessão de uma só vez, eliminando todas as variáveis salvas nela.
<?php session_destroy(); // Destrói toda sessão ?>
Com isso você tem total controle das sessões no seu site e pode salvar, por exemplo, o nome de usuário depois que ele fez o login e salvar outra variável informando que o usuário está logado. Esta é uma prática muito comum em sistemas de autenticação de usuário.
Teste a página
http://douglasars.esy.es/teste1.php
- Código da página de teste
<?php
//Iniciando a sessão
session_start();
//Verifica se a variável nome foi passada. Na primeira vez nunca é passada pelo GET.
if (!isset($_GET["nome"])){
$_SESSION['usuario']='visistante';} // Cria a variável usuário é coloca a informação de visitante.
else{
$_SESSION['usuario']=$_GET["nome"]; // Recupera o nome que foi passado com GET.
}
$_SESSION['acessos']+=1; // Conta cada vez que entrou na sessão.
?>
<html>
<head><title>Pagina de Teste 1</title></head>
<body>
<P><b>Informações</b>
<form name="teste1" method="get" action="teste1.php">
<p>Nome: <input type="text" name="nome" id="nome" size="20" autofocus />
<input type="submit" value="OK">
</form>
<?
echo "<p>Olá visitante: ".$_SESSION['usuario']." você acessou a página: ".$_SESSION['acessos']." vezes(s)."
?>
<p>Tecle F5 para atualizar a página.</p>
</body>
</html>
Mas, atenção! Os dados de sessão não ficam armazenados para consultas futuras. Quando o usuário deixa de interagir com a homepage por um longo período, os dados que estavam armazenados na sessão serão perdidos. Por isso, devemos tomar cuidado com a utilização do recurso de sessão.
Resumo
O uso de sessões permite criar aplicações personalizadas a nível de usuário, pelo simples fato de podermos identificar cada usuário. Também é possível armazenar variáveis no servidor web de cada usuário que está acessando a página ou a aplicação. É importante lembrar que os dados armazenados durante uma sessão serão perdidos em caso da sessão expirar, ou a sessão ter sido propositalmente destruída (session_destroy()), ou ainda se o usuário abandonar o site. [1][2]
Alteração de Dados
Vou mostrar uma sequência de instruções do PHP que possibilita fazer alterações nos dados já cadastrados, ou seja, que já estão no banco de dados MySQL. Como foi visto na unidade anterior, criamos uma página para inserção de dados no banco, uma página para listar os dados inseridos no banco e uma página para excluir os registro. Vou mostrar como atualizar um registro em uma de nossas tabelas. A Figura 1 mostrar a página de Consulta Clientes com a ação de excluir.
Figura 1 - Consulta clientes com filtro.
Para atualizarmos um registro, precisamos inicialmente listar os registros da tabela. Neste caso já temos isso pronto no nosso sistema exemplo. Lembram??? Tínhamos uma ação para excluir o registro. Vamos colocar agora uma ação para editar o registro. A Figura 2 mostra onde fica o botão que chama a página que vai Editar o registo. Em seguido eu coloco o código dessa página.
Figura 2 - Consulta clientes com botão editar.
O código fonte será disponibilizado na íntegra. Vamos atentar somente aos trechos de código que foram modificados para realizar a edição do registro.
Primeiramente, para colocar o botão Editar precisamos alterar o arquivo listaclientes.php.
[...]
echo '<td><input name="editar" type="button" onClick="window.open(\'editarclientes.php?id='.$exibe['id_cliente'].'\',\'_self\')" value="Editar"> ';
[...]
Olhando só linha de código, percebemos que é chamada a página editarclientes.php e é passado o parâmetro id_cliente que corresponde o registro do cliente que se deseja alterar. A Figura 3 mostra a página de editar clientes.
Figura 3 - Página editar clientes.
Como você podem perceber, a tela é a mesma do cadastro, só que traz as informações do cliente cuja identidade id é recuperada a partir do GET. Abaixo temos o código completo da página editarclientes.php'.
<?php
include("seguranca.php"); // Inclui o arquivo com o sistema de segurança
protegePagina(); // Chama a função que protege a página
$user=$_SESSION['usuarioNome'];
include("funcoes.php");
?>
<html>
<head>
<title>Sistema Exemplo</title>
<meta name="author" content="Douglas ARS">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta http-equiv="content-language" content="Portugues">
<link rel="stylesheet" href="estilos/estilos.css" type="text/css" />
</head>
<script type="text/javascript" src="scripts/jquery.js"></script>
<script type="text/javascript" src="scripts/jquery.maskedinput.js"></script>
</head>
<script type="text/javascript">
//Máscaras para os campos
$(document).ready(function(){
$("input.data").mask("99/99/9999");
$("input.cpf").mask("999999999-99");
$("input.cep").mask("99999-999");
$("input.telefone").mask("(99)9999-9999");
$("input.celular").mask("(99)9999-9999");
});
</script>
<body>
<div id="topo" style="position:relative; margin:0 0 30px 0;">
<div id="topo-imagem" style="float: left;">
Sistema Exemplo </div>
</div>
<?php
$id = $_GET['id'];
$sql = mysqli_query($_SG['link'],'SELECT * FROM clientes a, cidades b WHERE a.id_cidade = b.id_cidade AND id_cliente = "'.$id.'"') or print (mysql_error());
while($res = mysqli_fetch_assoc($sql)){
$_nm_cliente=$res['nm_cliente'];
$_endereco=$res['endereco'];
$_numero=$res['numero'];
$_complemento=$res['complemento'];
$_cep=$res['cep'];
$_id_cidade=$res['id_cidade'];
$_nm_cidade=$res['nm_cidade'].' - '.$res['uf'];
$_uf=$res['uf'];
$_email=$res['email'];
$_telefone=$res['telefone'];
$_celular=$res['celular'];
}
$sql2 = mysqli_query($_SG['link'],"SELECT * FROM cidades ORDER BY nm_cidade") or print (mysql_error());
?>
<div class="box-modulo">
<center>
<div class="box-modulo-interno">
<div class="box-modulo-txt-float">Cadastro de Clientes</div>
<div class="box-modulo-txt-b">Editando o cadastro de clientes</div>
<div class="box-modulo-interno-b">
<table>
<form name="cadclientes" id="cadclientes" method="post" onsubmit="validaForm(); return false;" action="editando.php" />
<input name="formulario" type="hidden" value="1" />
<input name="id_cliente" type="hidden" value="<?php echo $id ?>" />
<tr><td>Nome:</td><td><input type="text" name="nm_cliente" id="nm_cliente" size="50" autofocus value="<?php echo $_nm_cliente ?>" /></td></tr>
<tr><td>Endereço:</td><td><input type="text" name="endereco" size="50" value="<?php echo $_endereco ?>" /></td></tr>
<tr><td>Número:</td><td><input type="text" name="numero" size="5" value="<?php echo $_numero ?>" />
Complemento: <input type="text" name="complemento" size="25" value="<?php echo $_complemento ?>" /></td></tr>
<tr><td>CEP:</td><td><input type="text" class="cep" name="cep" size="9" value="<?php echo $_cep ?>" /></td></tr>
<tr><td>Cidade:</td></td><td>
<select name="id_cidade" style="width: 100%" value="<?php echo $id ?>">
<option><?php echo $_nm_cidade ?></option>
<?php while($exibe = mysqli_fetch_array($sql2)) { ?>
<option value="<?php echo $exibe['id_cidade'] ?>"><?php echo $exibe['nm_cidade'].' - '.$exibe['uf'] ?></option>
<?php } ?>
</select></td></tr>
<tr><td>E-mal:</td><td><input type="text" name="email" id="email" size="50" value="<?php echo $_email ?>" /></td></tr>
<tr><td>Telefone:</td><td><input type="text" class="telefone" name="telefone" id="telefone" size="18" value="<?php echo $_telefone ?>" />
Celular: <input type="text" class="telefone" name="celular" size="18" value="<?php echo $_celular ?>" /></td></tr>
<tr><td colspan="2">
<input type="submit" value="Salvar" width="10" />
<input name="voltar" type="button" onClick="window.open('listaclientes.php','_self')" value="Voltar">
</form>
</td></tr>
</table>
</div>
</div>
</center>
</div>
</body>
</html>
Basicamente, o código pega as informações da tabela clientes através da execução de uma consulta SQL e coloca as informações recuperadas a partir do id_cliente em variáveis para serem utilizadas como value dos campos de formulário. Logo abaixo do formulário, o botão salvar agora chama a página editando.php ao invés de cadastrando.php utilizada para inserir novos registros. Vamos mostrar agora o código da página editando.php.
<html>
<head>
<title>Editando...</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>
Aguarde... <br>
<?php
include("seguranca.php");
$id_cliente=$_POST['id_cliente'];
$nm_cliente=$_POST['nm_cliente'];
$endereco=$_POST['endereco'];
$numero=$_POST['numero'];
$complemento=$_POST['complemento'];
$cep=$_POST['cep'];
$id_cidade=$_POST['id_cidade'];
$email=$_POST['email'];
$telefone=$_POST['telefone'];
$celular=$_POST['celular'];
$sql = mysqli_query($_SG['link'],"UPDATE clientes SET nm_cliente='$nm_cliente',endereco='$endereco',numero='$numero',
complemento='$complemento',cep='$cep',id_cidade=$id_cidade,
email='$email',telefone='$telefone',celular='$celular' WHERE id_cliente=$id_cliente");
echo "<br>Registro editado com sucesso!".'<br>';
echo '<p><a href="listaclientes.php">Voltar</a>';
?>
</body>
</html>
Explicando o código.
Organização da Semana 2
Nesta primeira semana ... Até lá!
Bons estudos!
Prof. Douglas A.
Referências
[1] http://blog.thiagobelem.net/aprendendo-a-usar-sessoes-no-php
[2] Mendonça, Igor Thiago Marques. Programação para WEB. Florianópolis : Publicações do IFSC, 2010.
| << | <> | >> |
|---|
Seções
Alteração de Dados
Recursividade de Páginas
Organização da Semana 2
Nesta primeira semana ... Até lá!
Bons estudos!
Prof. Douglas A.
Referências
[1]
| << | <> | >> |
|---|


