PI S8 DSW II DouglasARS: mudanças entre as edições

De IFSC
Ir para navegação Ir para pesquisar
imported>Douglas
imported>Douglas
Linha 47: Linha 47:
</pre>
</pre>


Os parâmetro (variáveis e valores) que são passados para a página listaclientes.php, são tipo e filtro. Quando chamamos este formulário, ele determina que o tipo é 1 (mostrar todos os registros) e o filtro é 0 (nenhum registro deverá ser filtrado.
Os parâmetro (variáveis e valores) que são passados para a página listaclientes.php, são tipo=1 e filtro=0. Quando chamamos esta página (listaclientes.php), está determinado que o tipo é 1 serve para mostrar todos os registros. E que o filtro é 0 significa  que nenhum registro deverá ser filtrado.


Já pelo no código do listaclientes.php, temos algumas mudanças para saber se o filtro vai auto chamar a própria página ou a requisição veio da página anterior. O trecho de código abaixo mostra como montar esse auto chamamento.
No código do listaclientes.php temos algumas mudanças para saber se o filtro vai auto chamar a própria página ou a requisição veio da página anterior. O trecho de código abaixo mostra como montar esse auto chamamento.


<pre>
<pre>
Linha 62: Linha 62:


</pre>
</pre>
 





Edição das 13h18min de 31 de março de 2016

Apresentação

Olá Estudantes,

Entramos pela oitava semana, está que é a última semana com apresentação de novos conteúdos, vamos mostrar como utilizar filtros de campos em pesquisas SQL e também mostrar como excluir um registro a partir de um resultado de consulta. Para finalizar, vamos apresentar algumas maneiras de "como fazer um vídeo mostrando a tela do seu computador" que deve ser utilizado para apresentar o sistema que as equipes estão desenvolvendo na AO2. Fiquem atentos aos prazos e atividade finais.

Bons estudos a todos!

Prof. Douglas A.

Objetivo

  • Como utilizar filtros de campos em pesquisas com SQL;
  • Como excluir um registro;
  • Como fazer videos mostrando a tela do seu computador.

Filtro de Campos

Uma coisa bastante utilizada em pesquisas de banco de dados são os filtros. Abaixo eu apresento como fazer filtros no formulário consultas de clientes do sistema exemplo.

A primeira coisa que eu fiz, foi ter mudado o método de chamar o formulário consulta clientes. Eu agora, inseri o método GET não chamando o formulário de Consulta Clientes diretamente. Veja como era e como ficou:

Antes (cadclientes.php)
[...]
<input name="listar" type="button" onClick="window.open('listaclientes.php','_self')" value="Consultar">
[...]
Depois (cadclientes.php)
[...]
<form action="listaclientes.php" method="get">
	<input name="tipo" type="hidden" value="1" />
	<input name="filtro" type="hidden" value="0" />
	<input type="submit" value="Consultar" />
</form>
[...]

Ao invés de simplesmente abrir a janela com o comando window.open, nós chamamos o formulário com o método GET, desta forma, o endereço da página vai ficar assim:

http://localhost/exemplo/listacclientes.php?tipo=1&filtro=0

Os parâmetro (variáveis e valores) que são passados para a página listaclientes.php, são tipo=1 e filtro=0. Quando chamamos esta página (listaclientes.php), está determinado que o tipo é 1 serve para mostrar todos os registros. E que o filtro é 0 significa que nenhum registro deverá ser filtrado.

No código do listaclientes.php temos algumas mudanças para saber se o filtro vai auto chamar a própria página ou a requisição veio da página anterior. O trecho de código abaixo mostra como montar esse auto chamamento.

<div >
<form action="listaclientes.php" method="get">
	<input name="tipo" type="hidden" value="1" />
	<label for="filtro">Pesquisar:</label> 
	<input type="text" name="filtro" size="50" id="filtro" value="" />
	<input type="submit" value="Executar" />
</form>
</div>


Tela filtrar.png

Figura 1- Tela com o campo Pesquisar (filtro).


Os parâmetro (variáveis e valores) que são passados para a página listaclientes.php, são tipo e filtro. Quando chamamos este formulário, ele determina que o tipo é 1 (mostrar todos os registros) e o filtro é 0 (nenhum registro deverá ser filtrado.

Já pelo no código do listaclientes.php, temos algumas mudanças para saber se o filtro vai auto chamar a própria página ou a requisição veio da página anterior. O trecho de código abaixo mostra como montar esse auto chamamento.

[...]
<div >
<form action="listaclientes.php" method="get">
	<input name="tipo" type="hidden" value="1" />
	<label for="filtro">Pesquisar:</label> 
	<input type="text" name="filtro" size="50" id="filtro" value="" />
	<input type="submit" value="Executar" />
</form>
</div>
[...]

Desta maneiro, quando eu pesquisar alguma nome de cliente, ele já coloca a informação na variável filtro e chama o próprio formulário.

Para se fazer o controle do formulário, basta que se monte a consulta SQL conforme o formulário da onde veio e se é pra fazer filtro ou não. Já deixei quase pronto para se poder escolher também o tipo de ordenamento dos campos.

Vejam como ficou
<?php

if ($_GET["tipo"]==1) {
	$query = "SELECT * FROM clientes a, cidades b WHERE a.id_cidade = b.id_cidade";
} else {
	$query = "SELECT * FROM clientes a, cidades b WHERE a.id_cidade = b.id_cidade";
}

if ($_GET["filtro"]!="0") {
  $query .= ' AND nm_cliente like "'.$_GET["filtro"].'%"';
}


if ($_GET["tipo"]==1) {
	$query .= " ORDER BY nm_cliente";
} else {
	$query .= " ORDER BY id_cliente";
}

$sql = mysql_query("$query") or print (mysql_error());

?>

Neste trecho de código eu capturo o conteúdo da variável $_GET montando a consulta conforme o resultado. Da mesma forma se o filtro for 0 é que veio do formulário cadastro de clientes, quando não vier, é porque veio do próprio formulário consulta e que possui algum valor.

Exclusão de Registro

Para se excluir um registro do banco de dados MySQL, bem como outros banco de dados padãro SQL, é enviar um comando DELETE especificando qual a tabela, nome do campo e identidade do campo que se quer excluir. Lembrando que a identidade do campo deve ser única no banco, se por exemplo você mandar apagar os clientes da cidade "Y" ele apagará todos os registros cujos clientes morem na cidade "Y". Portanto, cuidado ao apagar registros e é bom sempre ter uma confirmação. No nosso exemplo, não utilizamos confirmação, isso eu deixo pra vocês e mais tarde voltamos a falar sobre isso. Vamos ao código.

Primeiramente você deve criar uma função genérica para apagar qualquer registro de qualquer banco de dados. Desta forma não precisamos fazer isso dentro de cada página que tiver a opção de excluir. No sistema exemplo eu coloquei dentro do funcoes.php.

<?php
function apagar($tabela, $registro_id, $registro) {

    $query = "DELETE FROM $tabela WHERE $registro_id = $registro";
    $result = mysql_query($query) or die('Houve um erro');

}
?>

A função apagar recebe como parâmetros a tabela, o nome do campo (id) e o dado correspondente ao registro que se quer apagar.

Agora é só fazer a ligação para que quando o formulário indique que o botão Excluir foi disparado, você pode ver na última coluna mostrada na Figura 1, Ações botão Excluir, devendo o próprio formulário tratar a solicitação e executando a ação. Vou mostrar o trecho de código que fica no listaclientes.php e comentar em seguida. Não se preocupem com o código fonte que vou tornar a disponibilizar lá no moodle.

[...]
if ($_GET["tipo"]==9) {
    apagar('clientes', 'id_cliente', $_GET['id']);
    header("Location: listaclientes.php?tipo=2&filtro=0");
}
[...]

Quando a página listacliente.php traz como parâmetro tipo=9 trata-se de uma exclusão. Desta forma é executada a função apagar e a página é novamente chamada com o comando header. Se você colocou a função apagar no arquivo funcoes.php, por exemplo, você deve colocar o include('funcoes.php'); no início da página listaclientes.php.


E para finalizar vamos ver como montar o botão Excluir dentro da tabela que é resultado da consulta pelos clientes. Lembrando que eu vou disponibilizar o código inteiro no moodle.

echo '<table border="1"  cellpadding="5" cellspacing="0" >'; 
echo '<tr><th style="background: #ffdead; text-align: center;">Código</th>';
echo '<th style="background: #ffdead; text-align: left;">Nome</th>';
echo '<th style="background: #ffdead; text-align: left;">Endereço</th>';
echo '<th style="background: #ffdead; text-align: left;">Número</th>';
echo '<th style="background: #ffdead; text-align: left;">Complemento</th>';
echo '<th style="background: #ffdead; text-align: left;">CEP</th>';
echo '<th style="background: #ffdead; text-align: left;">Cidade</th>';
echo '<th style="background: #ffdead; text-align: left;">UF</th>';
echo '<th style="background: #ffdead; text-align: left;">Telefone</th>';
echo '<th style="background: #ffdead; text-align: left;">Celular</th>';
echo '<th style="background: #ffdead; text-align: left;">Ação</th></tr>';


while($exibe = mysql_fetch_assoc($sql)){

    echo '<tr><td style="text-align: center;">'.$exibe['id_cliente'].'</td>';
    echo '<td>'.$exibe['nm_cliente'].'</td>';
    echo '<td>'.$exibe['endereco'].'</td>';
    echo '<td>'.$exibe['numero'].'</td>';
    echo '<td>'.$exibe['complemento'].'</td>';
    echo '<td>'.$exibe['cep'].'</td>';
    echo '<td>'.$exibe['nm_cidade'].'</td>';
    echo '<td>'.$exibe['uf'].'</td>';
    echo '<td>'.$exibe['telefone'].'</td>';
    echo '<td>'.$exibe['celular'].'</td>';
    echo '<td><input name="excluir" type="button" onClick="window.open(\'listaclientes.php?tipo=9&id='.$exibe['id_cliente'].'\',\'_self\')" value="Excluir"></td>';

}
echo "</table>";

Basicamente foi criado mais a coluna Ações cujo conteúdo é botão Excluir visto na linha do input. Percebam que chama listaclientes.php? e passa como parâmetros o tipo=9 & id='id_cliente'. Respectivamente que eu quero excluir o registro indicado da tabela clientes.

Era isso. A confirmação se eu deve excluir ou não, fica pra próxima.

Um abraço a todos.

Prof. Douglas A.

Vídeos no PC

A Atividade Obrigatória 2 tem prazo até dia 06/04, portanto vocês tem poucos dias para a gravação do vídeo apresentando o que vocês fizeram. Para ajudar vocês, na sequencia vou colocar algumas videoaulas de como instalar esses programas que fazem a gravação desses vídeos e links para baixar os programas.

Windows
http://www.techtudo.com.br/dicas-e-tutoriais/noticia/2014/03/como-gravar-videos-da-tela-do-computador-no-windows-e-no-mac-os.html
Linux
https://www.edivaldobrito.com.br/programas-de-gravacao-de-tela-para-linux/


Free Screen Video Capture

Este programa (Windows) é extremamente fácil de utilizar. Você pode baixar e instalar diretamente do site da empresa. É importante que você ao iniciar uma gravação (Record), você defina a área da tela que será capturada. É importante também ter ajustado a sensibilidade do seu microfone. Neste programa não tem o opção de incluir legenda, mas é o mais fácil de utilizar. Abaixo disponibilizamos um vídeo de como baixar e também um link para baixar direto do site da empresa.

https://www.youtube.com/watch?v=4S4y3xsS90Y |


Para baixar:

http://www.topviewsoft.com/free-screen-video-capture.html

Kazam

Kazam é um gravador de tela e ferramenta de screenshot para Linux, baseada no GStreamer. O programa suporta a gravação de toda a tela (com suporte a multi monitor), uma janela ou uma área, vem com suporte aos formatos de vídeo MP4 (H264), WebM (VP8) e AVI (RAW, Huffyuv e sem perdas JPEG), além de permitir framerate customizáveis, mostrar/ocultar o mouse durante a gravação, gravar o som dos alto-falantes e/ou microfone, atalhos de teclado, atraso configurável antes de capturar e salvar arquivo automaticamente.

Para saber mais sobre esse programa, clique nesse link.

Para saber instalar esse programa, clique nesse link.

https://www.youtube.com/watch?v=_bdHXIzOC9o

Instalação no Ubuntu

Passo 1. Abra um terminal (CTRL + ALT + T);

Passo 2. Se ainda não tiver, adicione o repositório do programa com este comando:

$sudo add-apt-repository ppa:kazam-team/unstable-series

Passo 3. Atualize o APT com o comando:

$sudo apt-get update

Passo 4. Agora use o comando abaixo para instalar o programa;

$sudo apt-get install kazam python3-cairo python3-xlib

Uma vez instalado, inicie o programa digitando no Dash:kazam

Considerações Finais

Nesta sexta semana tivemos [...]


Prof. Douglas A.

Referências

[1] http://www.sh2.com.br/sac/knowledgebase.php?action=displayarticle&id=35



<< <> >>