Disciplina: Programao Web I Prof.(a): Veronice de Freitas Aula: 03 - PHP / MYSQL Semestre: 3 Sem - Flex e 4 Sem
Aula Atividade
Objetivo da Atividade:
Revisar conceitos abordados na disciplina.
Atividade: Atividade 01: passagem de parmetro por VALOR ............................................................................ 1 Atividade 02: passagem de parmetro por REFERNCIA ................................................................. 2 Atividade 03: passagem de parmetro por VALOR e por REFERNCIA ......................................... 3 Atividade 04 formulrio (recuperando e inserindo dados) .......................................................... 3 Atividade 05: listagem geral tabela alunos ..................................................................................... 4 Atividade 06: listagem de produtos com preco menor ou igual a 100. ................................................ 6 Atividade 07: UPDATE ....................................................................................................................... 7 Atividade 08: DELETE ........................................................................................................................ 8 Atividade 09: GET e POST ................................................................................................................. 9
Orientao: Caro aluno
Essa atividade contm alguns exerccios para reviso de contedos (esto com resposta).
Passagem de parmetros por valor e por referncia http://linkedej.com.br/wp-content/uploads/2012/01/Apostila_curso.pdf (adaptado)
Quando passado um parmetro para uma funo, temos a opo de alterar ou no, a varivel que foi passada no momento da chamada da funo. Quando o parmetro for passado por valor, cria-se uma cpia da varivel que foi passada, fazendo com que seu valor no se altere originalmente.
Atividade 01: passagem de parmetro por VALOR
1) function alteraValor ($valor) { 2) $valor = 250; 3) echo O valor dentro da funo . $valor; 4) }
5) -------------------------- PROGRAMA PRINCIPAL ----------------------- 6) $valor = 100; //O valor original 100
7) alteraValor($valor);
Parmetro Real Parmetro Formal
UNOPAR VIRTUAL (pgina: 2)
Anlise e Desenvolvimento de Sistemas
8) /* O valor depois da chamada da funo no se altera */ 9) echo O valor .$valor;
1) Qual o que ser impresso na linha 9 aps a chamada da funo alteraValor($valor);
Resposta: O valor impresso aps a chamada da funo ser 100 devido a passagem de parmetro ser por VALOR (a alterao efetuada dentro da funo na linha 2 no alterou o valor original que foi definido na linha 6 do programa principal.
No exemplo, apesar da funo alterar o valor dentro do seu bloco de cdigo, o valor original no alterado fora da funo. Por outro lado, em algumas situaes pode-se tornar necessrio que este valor seja alterado dentro de uma funo. Para isso utiliza-se a passagem de parmetro por referncia, na qual toda a alterao que a funo realizar no valor passado como parmetro afetar a varivel de origem (parmetro real).
A passagem por referncia pode ser feita de duas maneiras. Na prpria funo ou apenas na chamada da funo. Nos dois casos utiliza-se o smbolo &.
5) -------------------------- PROGRAMA PRINCIPAL ----------------------- 6) $a = 1; 7) $b = 2; 8) alteraValor ($a,$b); 9) echo Valor de a: .$a. Valor de b: . $b;
10) alteraValor ($a,&$b); 11) echo Valor de a: .$a. Valor de b: . $b;
1) Qual o que ser impresso na linha 9 aps a chamada da funo alteraValor ($a,$b);
Valor impresso para $a 6, $b 2
2) Qual o que ser impresso na linha 11 aps a chamada da funo alteraValor ($a,$b);
Valor impresso para $a 6, $b 7
Observao:
UNOPAR VIRTUAL (pgina: 3)
Anlise e Desenvolvimento de Sistemas
Na primeira impresso na tela, teremos somente o valor de $a alterado para 6, pois foi passado por referncia. J na segunda impresso, temos os dois valores alterados. O valor de $a na funo j espera uma varivel sendo passada por referncia, e o valor de $b, foi passado utilizando o modificado &;
Atividade 03: passagem de parmetro por VALOR e por REFERNCIA
5) -------------------------- PROGRAMA PRINCIPAL ----------------------- 6) $a = 1; 7) $b = 2; 8) alteraValor ($a,$b); 9) echo Valor de a: .$a. Valor de b: . $b;
3) Qual o que ser impresso na linha 9 aps a chamada da funo alteraValor ($a,$b);
Valor impresso para $a 6, $b 2
FORMULRIO MTODO POST / INSERT
Atividade 04 formulrio (recuperando e inserindo dados)
1) O exemplo do formulrio anterior ir submeter os dados utilizando o mtodo post. Informe as instrues para recuperar e imprimir os dados submetidos pelo formulrio?
Etapa 01: // recuperando dados da matriz $_POST $nome = $_POST["nome"]; Ao submeter ir chamar o arquivo bem_vindo.php
UNOPAR VIRTUAL (pgina: 4)
Anlise e Desenvolvimento de Sistemas
$idade = $_POST["idade"];
// imprimindo dados os dados recuperados echo $nome; echo $idade; Obs: pode ser usado para mensagem de Bem vindo.
<html> <body> Bem vindo <?php echo $_POST["nome"]; ?>!<br /> Voce tem <?php echo $_POST["idade"]; ?> anos de idade. </body> </html>
2) Faa com que os dados do formulrio seja gravado (INSERT) em uma tabela com nome alunos no banco de dados bdDados.
Etapa 02: //Conexo com o banco de dados $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('No foi possvel conectar: ' . mysql_error()); }
//Selecionando o banco de dados mysql_select_db("bdDados") or die (mysql_error());
//Executando a instruo SQL mysql_query($sql) or die (mysql_error());
//Fechando a conexo mysql_close($link);
3) Defina mtodo post.
Segue uma definio: http://www.comocriarsites.com/html/como-funciona-os-metodos-get-e-post-diferencas/
Obs: veja tambm o mtodo GET
Atividade 05: listagem geral tabela alunos
Considere a tabela abaixo:
Tabela : alunos
UNOPAR VIRTUAL (pgina: 5)
Anlise e Desenvolvimento de Sistemas
Codigo Nome Formacao Telefone 1 Maria Aparecida Graduao 33234455 2 Jos da Silva Mestrado 33235555 3 Rida Rocha Graduao 33245556 4 Linda Maria Mestrado 55884411
1) Crie um programa que apresente todos os dados da tabela alunos classificados por Nome (use a funo mysql_fetch_array)
Segue um exemplo de cdigo:
<?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('No foi possvel conectar: ' . mysql_error()); }
mysql_select_db("bdDados");
$result = mysql_query("SELECT id, name FROM mytable");
1) Inclua as linhas de cdigo para atualizar (ALTERAR) a cidade do cliente com o codigo = 1 para Londrina.
Obs: use uma varivel para armazenar a instruo SQL e depois o SQL usando a funo mysql_query.
<?php $codigo = $_POST[CODIGO];
// conexo e seleo do banco de dados $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('No foi possvel conectar: ' . mysql_error()); }
mysql_select_db("bdDado");
// ----------------- alterao ---------------
// ----------------- fechar a conexo --------------- mysql_close($con); ?>
Reposta: UPDATE <?php $codigo = $_POST[CODIGO];
// conexo e seleo do banco de dados $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('No foi possvel conectar: ' . mysql_error()); } echo 'Conexo bem sucedida';
mysql_select_db("bdDados");
// ----------------- alterao --------------- Considere que o valor $_POST[CODIGO] foi submetido pelo formulrio Considere que o valor $_POST[CODIGO] foi submetido pelo formulrio
UNOPAR VIRTUAL (pgina: 8)
Anlise e Desenvolvimento de Sistemas
$sql = "UPDATE Clientes SET Cidade=Londrina WHERE codigo=$codigo"
mysql_query($sql);
// ----------------- fechar a conexo --------------- mysql_close($con); ?>
Atividade 08: DELETE
2) Inclua as linhas de cdigo para EXCLUIR o cliente com cdigo = 1.
Obs: use uma varivel para armazenar a instruo SQL e depois o SQL usando a funo mysql_query.
<?php $codigo = $_POST[CODIGO];
// conexo e seleo do banco de dados $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('No foi possvel conectar: ' . mysql_error()); }
mysql_select_db("bdDados");
// ----------------- EXCLUIR ---------------
// ----------------- fechar a conexo --------------- mysql_close($con); ?>
Reposta: DELETE <?php $codigo = $_POST[CODIGO];
// conexo e seleo do banco de dados $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('No foi possvel conectar: ' . mysql_error()); }
mysql_select_db("bdDado"); No foi tratado se existe relacionamento com outras tabelas. Obs: no exemplo DELETE teleaula 03 foi exemplificado a excluso de categoria com relacionamento na tabela de produtos. Considere que o valor $_POST[CODIGO] foi submetido pelo formulrio Considere que o valor $_POST[CODIGO] foi submetido pelo formulrio
UNOPAR VIRTUAL (pgina: 9)
Anlise e Desenvolvimento de Sistemas
// ----------------- alterao --------------- $sql = "DELETE FROM Clientes WHERE codigo=$codigo"
mysql_query($sql);
// ----------------- fechar a conexo --------------- mysql_close($con); ?>
Atividade 09: GET e POST
Artigo 01:
Questo 01: fale sobre o mtodo GET e POST utilizado para compartilhamento de informaes entre pginas.
Resposta: O mtodo GET funciona da seguinte maneira - seus argumentos so passados em forma de string pela URI (Uniform Resource Indicator) tambm conhecido por muitos como URL.
O GET sempre acompanha a URI logo o que vocs constumam ver nos links assim deste jeito, http://www.mtodoget.br/usandoget.php?ID=10, so os argumentos GET, que neste caso sempre o primeiro argumento precedido de uma interrogao "?" e os demais de um & para separ-los. O argumento em questo o ID e seu valor 10.
O POST mais utilizado para tratamento de formulrios. Usa-se de forma muito semelhante ao GET em formulrios. Se eu digitar algo na caixa de texto do input e apertar o boto "enviar" a URI continuar da mesma forma pois o POST no trabalha com a URI. Os argumentos podem ser recuperados pelo PHP atravs das seguintes variveis $_POST['nome_do_argumento'].
Questo 02: cite as vantagens de utilizar o mtodo POST no envio de formulrio?
O POST mais seguro que o GET porque as informaes passadas pelos usurios no so visveis na URI. (devemos tomar cuidado com as informaes nos dois casos, porque existem ferramenta que capturam as informaes tanto do GET quanto do POST que trafegam na rede).
ARTIGO 01: Compartilhando informaes entre pginas com GET e POST Fonte: http://www.htmlstaff.org/ver.php?id=15850 Por que preciso do PHP para fazer isso? Como se sabe o HTTP (protocolo) propriamente dito no armazena informaes de estado, por isso se faz necessrio o uso do PHP. $totalRows = mysql_num_rows(mysql_query("SELECT Produtos.categoria FROM produtos WHERE Produtos.categoria = $codigo"));
if ($totalRows == 0){ //excluir }
UNOPAR VIRTUAL (pgina: 10)
Anlise e Desenvolvimento de Sistemas
Vamos citar alguns casos onde podemos compartilhar informaes: No uso de session, usando mtodos GET e POST, cookies e outras. O mtodo GET funciona da seguinte maneira - seus argumentos so passados em forma de string pela URI (Uniform Resource Indicator) tambm conhecido por muitos como URL. O endereo URL tem limitao (geralente com comprimento mximo de 255 caracteres). O qual limita um pouco o uso do GET! [Nota do editor] Na verdade a maioria dos browsers no tem mais esse limite de 255 caracters numa URL [Nota do editor]. (ateno: rever essas limitaes). Como usar um mtodo GET O GET sempre acompanha a URI logo o que costumamos observar nos links dessa forma:http://phpbrasil.com/artigo/TK55UcdkZF73/1/compartilhando- informacoes-entre-paginas-com-get-e-post. Como exemplificado na URL, os argumentos do GET, o primeiro argumento precedido de uma interrogao "?" e os demais de um & para separ-los. O argumento em questo o ID e seu valor 10. Outro exemplo: http://www.mtodoget.br/usandoget.php?ID=10&CH=Texto. Argumentos: ID e CH com valores 10 e Texto respectivamente. Podemos utilizar o mtodo GET nos links ou em formulrios lembrando sempre da limitao e que estes dados sero visivis pelos usurios pois ele sempre fica junto a URI. Em links use: http://www.metodoget.br/pagina.php?argumento=valor">meu link get</a>
Ao executar os casos acima sero anexados ao URI as seguintes instrues respectivamente: http://www.metodoget.br/pagina.php?argumento=valor http://www.metodoget.br/pagina.php?argumento=valor&enviar=enviar
Os argumentos GET podem ser recuperados pelo PHP atravs da seguinte varivel: <?php echo $_GET['nome_do_argumento']; ?>
UNOPAR VIRTUAL (pgina: 11)
Anlise e Desenvolvimento de Sistemas
A seguir ser abordado o mtodo POST. Como usar o POST: O POST mais utilizado para tratamento de formulrios. Usa-se de forma muito semelhante ao GET em formulrios, por exemplo: <form action="http://www.metodoget.br/pagina.php" method="POST"> <input name="argumento" type="text" value="valor"> <input name="enviar" type="submit" value="enviar"> </form>
Repare que agora o atributo "method" do formulrio igual a "POST". Se eu digitar algo na caixa de texto do input e clicar no boto "enviar" a URI continuar da mesma forma pois o POST no trabalha com a URI. Certo, mais onde foram parar os dados? Os argumentos podem ser recuperados pelo PHP atravs das seguintes variveis: <?php echo $_POST['nome_do_argumento']; echo $_POST['nome_do_argumento']; ?>
A dica mais importante: Nunca utilize o metodo GET para formulrios de login, ou para quaisquer dados sigilosos, pois os mesmos sero visveis pela URL. Exemplos completos (arquivo: pagina.php): Usando POST: <html> <body> <?php if (isset($_POST['enviar'])) { $texto = $_POST['argumento']; // ser impresso o que for digitado no campo echo($texto); } else { ?> <form action="http://www.metodoget.br/pagina.php" method="POST"> <input name="argumento" type="text"> <input name="enviar" type="submit" value="enviar"> </form> <?php } ?> </body> </html>
Usando GET:
UNOPAR VIRTUAL (pgina: 12)
Anlise e Desenvolvimento de Sistemas
<html> <body> <?php if (isset($_GET['enviar'])) { $texto = $_GET['argumento']; // ser impresso o que for digitado no campo echo($texto); } else { ?> <form action="http://www.metodoget.br/pagina.php" method="GET"> <input name="argumento" type="text"> <input name="enviar" type="submit" value="enviar"> </form> <?php } ?> </body> </html>
Ou: <html> <body> <?php if (isset($_GET['argumento'])) { $texto = $_GET['argumento']; // ser impresso quando o link for clicado echo("Este mais um ".$texto." do que o GET capaz"); } else { ?> http://www.metodoget.br/pagina.php?argumento=exemplo">Meu Link</a> <?php } ?> </body> </html>
Entendendo a diferena entre os Mtodos GET e POST no PHP http://www.diegomacedo.com.br/entendendo-a-diferenca-entre-os-metodos-get-e-post-no- php/
de extrema importncia saber bem a diferena desses dois mtodos, para que se possa utiliz-los de forma correta e na hora certa. De certa forma, os dois fazem o envio de dados atravs do HTTP.
GET
Este mtodo utilizado quando queremos passar poucas/pequenas informaes para realizar uma pesquisa ou simplesmente passar uma informao para outra pgina atravs da URL (barra de endereos). O que no
UNOPAR VIRTUAL (pgina: 13)
Anlise e Desenvolvimento de Sistemas
pode acontecer as suas requisies resultarem em mudanas no contedo da resposta. A funo do mtodo GET pura e simplesmente recuperar um recurso existente no servidor. O resultado de uma requisio GET cachevel pelo cliente, ou seja, fica no histrico do navegador.
Exemplo do GET http://www.umsite.com.br/?cat=3&pag=2&tipo=5
Para que voc possa entender melhor este exemplo, voc s precisa olhar para as informaes que vem logo aps a interrogao ?, pois o smbolo que indica o incio dos dados passados atravs da URL, ou seja, pelo mtodo GET. Se voc prestar ateno, notar que sempre vem um ndice e um valor logo aps o sinal de igualdade (Ex.: cat=3) e quando queremos incluir mais de uma informao, acrescentamos o smbolo & para concatenar o restante (Ex.: cat=3&pag=2&tipo=5).
Este mtodo bem restrito quanto ao tamanho e quantidade das informaes que so passadas pela URL. Voc poder enviar no mximo 1024 caracteres, o que limita bastante suas possibilidades com esse mtodo. Caso voc passe desse limite, voc corre o risco de obter um erro da sua pgina, j que as informaes foram passadas de forma incompleta.
Como voc j percebeu, as informaes enviadas ficam visveis ao visitante, o que uma brecha na segurana, pois um visitante malicioso pode colocar algum cdigo de SQL Injection e fazer um belo estrago com o seu site, ou at mesmo o servidor. Ento, quando queremos passar parmetros confidenciais, como exemplo as senhas, no devemos utilizar esse mtodo. Para isso temos o POST.
POST
Este mtodo mais seguro e tem uma capacidade de dados melhor que o GET. Nesse mtodo uma conexo paralela aberta e os dados so passados por ela. No h restrio referente ao tamanho e os dados no so visveis ao usurio.
Este mtodo feito atravs de formulrios (Tag), onde passamos informaes para outra pgina que ir receb-las e fazer o que o desenvolvedor quiser, como tratamento dos dados, armazenamento no banco de dados, etc.
Por passar dados invisveis ao usurio, ela se torna mais segura e devemos utilizar este mtodo quando criamos sistemas de acesso restrito com sesses (login/senha).
Para enviarmos algumas informaes de um formulrio para outra pgina, devemos incluir no atributo method o valor POST e no atributo action o nome do arquivo que ir receber as informaes.
Enviado dados para o PHP atravs de formulrio http://www.diegomacedo.com.br/enviado-dados-para-o-php-atraves-de-formulario/
Cadastros de dados no MySQL http://www.diegomacedo.com.br/cadastro-de-dados-no-mysq/
Validao de dados no PHP http://www.diegomacedo.com.br/validacao-de-dados-no-php/
Outros exemplos:
Exemplos - HTML http://www.w3schools.com/html/html_examples.asp Exemplos - CSS http://www.w3schools.com/css/css_examples.asp
Sugesto de leitura:
Como funcionam as aplicaes web http://www.devmedia.com.br/como-funcionam-as-aplicacoes-web/25888 Infra-estrutura Web: http://www.futurepages.org/wiki/lib/exe/fetch.php?media=quickstart:teoria_web.pdf CSS http://maujor.com/tutorial/cssmenu.php
Observaes: Caro Aluno, Pea para o tutor de sala enviar suas dvidas pelo Chat Atividade para que o professor possa esclarec-las.
Tenham um timo trabalho! Prof .Veronice de Freitas