PHP e MySQL para iniciantes

10,515 views
10,300 views

Published on

Exemplos básicos de utilização do MySQL e do PHP para iniciantes. Acesso a banco, consultas no banco, exemplos de funções básicas do php para mysql.

Published in: Technology

PHP e MySQL para iniciantes

  1. 1. Módulo 3 PHP & MySQL Professor: Eduardo Mendes
  2. 2. Professor Eduardo Mendes edumendes@gmail.com Agenda •  Usando Banco de Dados •  Trabalhando com MySQL •  Linguagem SQL •  MySQL e PHP Conexões •  Criação de Consultas •  Seleção de Bancos •  Campos e Result Set •  Formatando o Conteúdo
  3. 3. Professor Eduardo Mendes edumendes@gmail.com Testando Configuração •  Iniciar o EasyPHP –  Iniciar  Programas  EasyPHP
  4. 4. Professor Eduardo Mendes edumendes@gmail.com Testando Configuração •  Executar algum browser (navegador) –  http://localhost
  5. 5. Professor Eduardo Mendes edumendes@gmail.com Testando Configuração •  Os arquivos serão salvos na pasta www do EasyPHP –  C:Arquivos de programasEasyPHP1-8www
  6. 6. Professor Eduardo Mendes edumendes@gmail.com MySQL
  7. 7. Professor Eduardo Mendes edumendes@gmail.com O programa mysql •  Iniciar EasyPHP •  C: •  cd Arquivos* •  cd Easy* •  cd mysql •  cd bin •  mysql –u root -p
  8. 8. Professor Eduardo Mendes edumendes@gmail.com mysql
  9. 9. Professor Eduardo Mendes edumendes@gmail.com Conceitos •  Linhas •  Registros •  Tabelas •  Campos •  Id
  10. 10. Professor Eduardo Mendes edumendes@gmail.com Tabela típica de dados: Agenda Telefônica
  11. 11. Professor Eduardo Mendes edumendes@gmail.com Cursos da FA7
  12. 12. Professor Eduardo Mendes edumendes@gmail.com
  13. 13. Professor Eduardo Mendes edumendes@gmail.com Criando um Banco de Dados CREATE DATABASE nomeDoBanco;
  14. 14. Professor Eduardo Mendes edumendes@gmail.com Usando um BD específico USE nomeDoBanco;
  15. 15. Professor Eduardo Mendes edumendes@gmail.com
  16. 16. Professor Eduardo Mendes edumendes@gmail.com No MySQL CREATE DATABASE modulo3; USE modulo3; CREATE TABLE agendaTelefonica ( id INT PRIMARY KEY, primeiroNome VARCHAR(15), sobreNome VARCHAR (15), email VARCHAR(20), telefone VARCHAR(15) ); DESCRIBE agendaTelefonica;
  17. 17. Professor Eduardo Mendes edumendes@gmail.com Inserindo Valores INSERT INTO agendaTelefonica VALUES( 0, ‘Eduardo', ‘Mendes', ‘eduardo@fa7.edu.br', '123567‘ );
  18. 18. Professor Eduardo Mendes edumendes@gmail.com Recuperando os dados •  Eu quero visualizar todos os registro de uma tabela SELECT * FROM nomeDaTabela;
  19. 19. Professor Eduardo Mendes edumendes@gmail.com No MySQL SELECT * FROM agendaTelefonica;
  20. 20. Professor Eduardo Mendes edumendes@gmail.com O programa mysql •  Iniciar EasyPHP •  C: •  cd Arquivos* •  cd Easy* •  cd mysql •  cd bin •  mysql –u root -p
  21. 21. Professor Eduardo Mendes edumendes@gmail.com Conectando-se a um banco de dados •  Na linha de comando –  Nos conectamos ao mysql através de usuário e senha: •  mysql –u root -p –  Para poder fazer consulta a um banco, informamos qual o banco através de: •  USE nomeDoBanco
  22. 22. Professor Eduardo Mendes edumendes@gmail.com Conectando-se ao banco via PHP •  Usamos uma função –  mysql_connect() •  Esta função precisa de alguns pârametros •  Precisamos informar o servidor onde está localizado o banco de dados –  localhost •  Informamos o usuário, exemplo: –  root •  Informamos a senha do usuário: –  123456
  23. 23. Professor Eduardo Mendes edumendes@gmail.com Juntando tudo mysql_connect("localhost", "root", ""); O servidorA função O usuário A senha Guardar o retorno da função em uma variável é opcional $conexao = mysql_connect("localhost", "root", "");
  24. 24. Professor Eduardo Mendes edumendes@gmail.com Selecionando o banco de dados com PHP •  O “USE” da linha de comando: mysql_select_db(); •  Precisamos informar o nome o banco – agendaTelefonica •  É opcional informar uma conexão previamente obtida –  $conexao
  25. 25. Professor Eduardo Mendes edumendes@gmail.com Juntando tudo mysql_select_db(“agendaTelefonica”); ou mysql_select_db(“agendaTelefonica", $conexao); A função O nome do banco A conexão
  26. 26. Professor Eduardo Mendes edumendes@gmail.com Sucesso na conexão
  27. 27. Professor Eduardo Mendes edumendes@gmail.com Erro na conexão
  28. 28. Professor Eduardo Mendes edumendes@gmail.com conexao.php <h1>Conexão</h1> <? $conexao = mysql_pconnect("localhost", "root", ""); if ($conexao) { mysql_select_db("agendaTelefonica", $conexao); print "Conexão realizada com sucesso"; } else { print "Falha na conexão!"; } ?>
  29. 29. Professor Eduardo Mendes edumendes@gmail.com O programa mysql •  Iniciar EasyPHP •  C: •  cd Arquivos* •  cd Easy* •  cd mysql •  cd bin •  mysql –u root -p
  30. 30. Professor Eduardo Mendes edumendes@gmail.com Inserindo muitos dados •  Baixar o arquivo dados.txt –  http://www.fa7.edu.br/phpparainiciantes/modulo3/dados.zip •  Salvar o arquivo dados.txt na pasta: –  C:Arquivos de programasEasyPHP1-8mysqlbin –  Executar o comando no mysql –  LOAD DATA LOCAL INFILE “dados.txt” INTO TABLE agendaTelefonica •  SELECT * FROM agendaTelefonica
  31. 31. Professor Eduardo Mendes edumendes@gmail.com Limitando o número de colunas •  Selecionar apenas o nome e o sobrenome de todas os registros da tabela SELECT primeironome,sobrenome FROM agendaTelefonica;
  32. 32. Professor Eduardo Mendes edumendes@gmail.com Adicionando uma condição WHERE SELECT nome, sobrenome FROM agendaTelefonica WHERE nome=‘Eduardo’;
  33. 33. Professor Eduardo Mendes edumendes@gmail.com WHERE e operadores de comparação •  WHERE nomeDoCampo = ‘xxxxx’; •  WHERE nomeDoCampo > XXXX; •  WHERE nomeDoCampo < ‘XXXX’; •  WHERE nomeDoCampo >= XXXX; •  WHERE nomeDoCampo <= ‘XXXX’;
  34. 34. Professor Eduardo Mendes edumendes@gmail.com Exemplo •  Eu quero todos os registros da agendaTelefonica que começam ou com ‘A’, ou com ‘B’ ou com ‘C’ SELECT * FROM agendaTelefonica WHERE primeironome < ‘D’;
  35. 35. Professor Eduardo Mendes edumendes@gmail.com MYSQL e PHP •  Para trabalhar com um banco –  Precisamos nos conectar ao banco –  Como? mysql_connect("localhost", "root", ""); –  Precisamos também selecionar o banco –  Como? mysql_select_db(“modulo3”);
  36. 36. Professor Eduardo Mendes edumendes@gmail.com No MySQL •  Para fazer uma consulta a uma tabela no banco, fizemos: •  Deve existir uma formaa de fazer isto no PHP. Qual? SELECT primeironome FROM agendaTelefonica;
  37. 37. Professor Eduardo Mendes edumendes@gmail.com PHP & MySQL •  Primeiro precisamos criar uma consulta em forma de String “SELECT nome FROM agendaTelefonica” •  Atribuir esta String a uma variável $sql = “SELECT nome FROM agendaTelefonica” •  Enviar esta consulta ao banco •  Guardar o resultado da consulta em outra variável
  38. 38. Professor Eduardo Mendes edumendes@gmail.com PHP & MySQL •  Como enviar a consulta para o banco? •  Esta função precisa de 1 argumento: –  A consulta: “SELECT ...” mysql_query($sql);
  39. 39. Professor Eduardo Mendes edumendes@gmail.com PHP & MySQL •  Guarde o resultado $resultado = mysql_query($sql); •  Percorra os resultados com mysql_fetch_assoc <? while ($linha = mysql_fetch_assoc($resultado)){ print $linha['nome'] .”<br/>”; } ?>
  40. 40. agenda.php <?php mysql_connect("localhost", "root", ""); mysql_select_db("cursoweb"); $sql = "SELECT * FROM agendatelefonica”; $res = mysql_query($sql); ?> <html> <body> <h1>Agenda Telefonica</h1> <h2>Contatos</h2> <?php while($linha = mysql_fetch_array($res)) { ?> <li><?php print $linha['nome'] ?> - <?php print $linha['email'] ?></li> <? } ?> </body> </html> Professor Eduardo Mendes edumendes@gmail.com
  41. 41. Professor Eduardo Mendes edumendes@gmail.com Uma agenda Simples
  42. 42. Professor Eduardo Mendes edumendes@gmail.com agenda.php <h1>Agenda Telefônica</h1> <? $conexao = mysql_pconnect("localhost", "root", ""); mysql_select_db("modulo3", $conexao); $sql = "SELECT nome FROM agendaTelefonica"; $resultado = mysql_query($sql, $conexao); ?> <table> <tr> <th>Nome</th> </tr> <? while ($linha = mysql_fetch_assoc($resultado)){ ?> <tr> <td><?= $linha['nome'] ?></td> </tr> <? } ?> </table>
  43. 43. Professor Eduardo Mendes edumendes@gmail.com agenda.php <h1>Agenda Telefônica</h1> <? $conexao = mysql_pconnect("localhost", "root", ""); mysql_select_db("modulo3", $conexao); $sql = "SELECT primeironome, sobrenome FROM agendaTelefonica"; $resultado = mysql_query($sql, $conexao); ?> <table> <tr> <th>Nome</th><th>Sobrenome</th> </tr> <? while ($linha = mysql_fetch_assoc($resultado)){ ?> <tr> <td><?= $linha['primeironome'] ?></td> <td><?= $linha[‘sobrenome'] ?></td> </tr> <? } ?> </table>
  44. 44. Professor Eduardo Mendes edumendes@gmail.com Mais consultas •  Todos os registros da tabela que ‘a’, ‘b’, ‘c’, ‘d’
  45. 45. Professor Eduardo Mendes edumendes@gmail.com Coringa  % •  Selecione todos os registros que começam com a letra ‘A’; SELECT * FROM agendaTelefonica WHERE primeironome LIKE ‘A%’;
  46. 46. Professor Eduardo Mendes edumendes@gmail.com Coringa com limitação de colunas •  Todos os nome e sobrenomes da agendaTelefonica, que possuam emails terminados com ‘br’ SELECT nome, sobrenome FROM agendaTelefonica WHERE email LIKE ‘%br’;
  47. 47. Professor Eduardo Mendes edumendes@gmail.com Múltiplas condições SELECT * FROM agendaTelefonica WHERE nome LIKE ‘J%’ AND sobrenome LIKE ‘%o%’;
  48. 48. Professor Eduardo Mendes edumendes@gmail.com Inserindo Valores no MySQL INSERT INTO agendaTelefonica VALUES( 0, ‘Eduardo', ‘Mendes', ‘eduardo@fa7.edu.br', '123567‘ );
  49. 49. Professor Eduardo Mendes edumendes@gmail.com Inserindo um valor via PHP
  50. 50. Professor Eduardo Mendes edumendes@gmail.com Inserindo um valor via PHP <h1>Inserindo um valor</h1> <? $conexao = mysql_connect("localhost", "root", ""); mysql_select_db("modulo3", $conexao); $sql = "INSERT INTO agendaTelefonica VALUES (50, 'Lizbela', 'E o prisioneiro', 'lizbela@fa7.edu.br', '1234567')"; $resultado = mysql_query($sql, $conexao); if ($resultado) { print "<p>Valor inserido com sucesso!</p>"; } else { print "<p>Não foi possível inserir...</p>"; } ?>
  51. 51. Professor Eduardo Mendes edumendes@gmail.com Recuperando o valor via PHP <h1>Recuperando um valor</h1> <? $conexao = mysql_connect("localhost", "root", ""); mysql_select_db("modulo3", $conexao); $sql = "SELECT * FROM agendaTelefonica WHERE id=50"; $resultado = mysql_query($sql, $conexao); if ($resultado) { while ($linha = mysql_fetch_assoc($resultado)) { ?> <p>O Nome inserido foi: <?= $linha['primeiroNome'] ?></p> <p>Telefone: <?= $linha['telefone'] ?></p> <? } } else { print "<p>Não foi possível recuperar o valor inserido...</p>"; } ?>
  52. 52. Professor Eduardo Mendes edumendes@gmail.com Recuperando o valor via PHP
  53. 53. Professor Eduardo Mendes edumendes@gmail.com Inserindo Valores a partir De Um Formulario
  54. 54. Professor Eduardo Mendes edumendes@gmail.com Inserindo valores com formulário <h1>Inserindo valores com Formulario </h1> <form method="post" action="inserirForm.php"> <p>Primeiro Nome: <input name="nome" type="text" /></p> <p>Sobre-nome: <input name="sobrenome" type="text" /></p> <p>Email: <input name="email" type="text“/></p> <p>Telefone: <input name="telefone" type="text“/></p> <p><input type="submit" value="Inserir" /></p> </form>
  55. 55. Professor Eduardo Mendes edumendes@gmail.com O action
  56. 56. Professor Eduardo Mendes edumendes@gmail.com O action <h1>Inserindo um valor</h1> <? $nome = $_POST['nome']; $sobrenome = $_POST['sobrenome']; $telefone = $_POST['telefone']; $email = $_POST['email']; $conexao = mysql_connect("localhost", "root", ""); mysql_select_db("modulo3", $conexao); $sql = "INSERT INTO agendaTelefonica VALUES (NULL, '$nome', '$sobrenome', '$email', '$telefone')"; $resultado = mysql_query($sql, $conexao); if ($resultado) { print "<p>Valor inserido com sucesso!</p>"; } else { print "<p>Não foi possível inserir...</p>"; } ?>
  57. 57. Professor Eduardo Mendes edumendes@gmail.com A agenda completa
  58. 58. Professor Eduardo Mendes edumendes@gmail.com Procura por nome específico •  Como encontrar um único nome caso seja preciso?
  59. 59. Professor Eduardo Mendes edumendes@gmail.com A solução  Caixa de pesquisa
  60. 60. Professor Eduardo Mendes edumendes@gmail.com Altere o php <? $conexao = mysql_connect("localhost", "root", ""); mysql_select_db("modulo3", $conexao); $sql = "SELECT * FROM agendaTelefonica"; if (isset($_POST['nome'])) { $nome = $_POST['nome']; $sql = $sql . " WHERE nome LIKE ‘$nome%’ "; } $resultado = mysql_query($sql, $conexao); ?>
  61. 61. Professor Eduardo Mendes edumendes@gmail.com O campo de texto antes da tabela <form method="post"> <p>Pesquisa: <input type="text" name="nome" /></p> </form>
  62. 62. Professor Eduardo Mendes edumendes@gmail.com Alterando Dados - UPDATE •  Altere o sobrenome para ‘Oliveira’ onde o nome é igual ‘Eduardo’ UPDATE agendaTelefonica SET sobrenome=‘Oliveira’ WHERE nome = ‘Eduardo’;
  63. 63. Professor Eduardo Mendes edumendes@gmail.com Excluindo linhas DELETE •  Delete da tabela agendaTelefonica o registro de todos os ‘Eduardo’ DELETE FROM agendaTelefonica WHERE nome = ‘Eduardo’;
  64. 64. Professor Eduardo Mendes edumendes@gmail.com Banco de Dados da FA7 CREATE DATABASE fa7; USE DATABASE fa7;
  65. 65. Professor Eduardo Mendes edumendes@gmail.com Professor •  Id •  Nome •  Titulação •  Idade •  Disciplina
  66. 66. Professor Eduardo Mendes edumendes@gmail.com Tabela Professor DROP TABLE IF EXISTS professor; CREATE TABLE professor ( id INT PRIMARY KEY, nome VARCHAR(15), titulacao VARCHAR (15), idade INT, disciplina VARCHAR(30) );
  67. 67. Professor Eduardo Mendes edumendes@gmail.com Inserindo dados Professor INSERT INTO professor VALUES ( 0, ‘Fláudio', 'Mestre', 15, ‘Cálculo' ); INSERT INTO professor VALUES ( 0, ‘Marum', 'Mestre', 10, ‘Sistemas de Informação' ); SELECT * FROM professor;
  68. 68. Professor Eduardo Mendes edumendes@gmail.com E se eu quiser mais sobre Disciplina???? •  Carga Horaria •  Curso
  69. 69. Professor Eduardo Mendes edumendes@gmail.com Disciplina •  Id •  Nome •  Carga Horária •  Curso
  70. 70. Professor Eduardo Mendes edumendes@gmail.com Tabela Disciplina DROP TABLE IF EXISTS disciplina; CREATE TABLE disciplina ( id INT PRIMARY KEY, nome VARCHAR(30), cargaHoraria INT, curso VARCHAR(30) );
  71. 71. Professor Eduardo Mendes edumendes@gmail.com Inserindo dados Disciplina INSERT INTO disciplina VALUES ( 0, ‘Cálculo', 80, ‘Sistemas de Informação’ ); INSERT INTO disciplina VALUES ( 0, ‘Sistemas de Informação', 80, ‘Sistemas de Informação’ ); SELECT * FROM disciplina;
  72. 72. Professor Eduardo Mendes edumendes@gmail.com Relacionando Tabelas
  73. 73. Professor Eduardo Mendes edumendes@gmail.com Modificando a estrura da Tabela ALTER TABLE professor MODIFY disciplina INT; •  Alterar os valores dos campos disciplina da tabela professor para que possa haver a correlação entre o campo disciplina da tabela professor e o campo id da tabela disciplina
  74. 74. Professor Eduardo Mendes edumendes@gmail.com Executando um script no PhpMyAdmin •  O que são scripts? –  Instruções formais escritas com linguagens interpretadas –  Cada instrução de um script é executada sem a necessidade de se criar um arquivo executável
  75. 75. Professor Eduardo Mendes edumendes@gmail.com Executando um script no PhpMyAdmin •  Um exemplo de script que pode ser salvo como um arquivo DROP TABLE IF EXISTS professor; CREATE TABLE professor ( id INT PRIMARY KEY, nome VARCHAR(15), titulacao VARCHAR (15), idade INT, disciplina VARCHAR(30) );
  76. 76. Professor Eduardo Mendes edumendes@gmail.com Executando um script no PhpMyAdmin
  77. 77. Professor Eduardo Mendes edumendes@gmail.com Executando os scripts para o banco de dados fa7 •  Baixe os arquivos
  78. 78. Professor Eduardo Mendes edumendes@gmail.com Verifique o banco fa7 agora • SELECT * FROM curso; • SELECT * FROM disciplina; • SELECT * FROM professor;
  79. 79. Professor Eduardo Mendes edumendes@gmail.com Combinando Tabelas SELECT * FROM professor, disciplina;
  80. 80. Professor Eduardo Mendes edumendes@gmail.com JOIN
  81. 81. Professor Eduardo Mendes edumendes@gmail.com Solução •  Precisamos colocar uma condição na nossa consulta SELECT * FROM professor, disciplina •  Para que haja o relacionamento entre as duas tabelas
  82. 82. Professor Eduardo Mendes edumendes@gmail.com Impondo uma condição SELECT * FROM professor, disciplina WHERE professor.disciplina= disciplina.id;
  83. 83. Professor Eduardo Mendes edumendes@gmail.com Dando um ‘apelido’ para Tabela SELECT * FROM professor p, disciplina d;
  84. 84. Professor Eduardo Mendes edumendes@gmail.com Apelido == ALIAS SELECT p.nome, d.nome FROM professor p, disciplina d WHERE p.disciplina = d.id;
  85. 85. Professor Eduardo Mendes edumendes@gmail.com Alias para campos SELECT p.nome as professor, d.nome as disciplina FROM professor p, disciplina d WHERE p.disciplina = d.id;
  86. 86. Professor Eduardo Mendes edumendes@gmail.com Tabela curso
  87. 87. Professor Eduardo Mendes edumendes@gmail.com Relacionando tabelas SELECT * FROM curso c, disciplina d WHERE d.curso = c.id;
  88. 88. Professor Eduardo Mendes edumendes@gmail.com Qual o curso de cada professor? SELECT c.nome as curso, p.nome as professor FROM curso c, disciplina d, professor p WHERE p.disciplina=d.id AND d.curso=c.id;
  89. 89. Professor Eduardo Mendes edumendes@gmail.com Qual o curso de um professor específico? SELECT c.nome as curso, p.nome as professor FROM curso c, disciplina d, professor p WHERE p.disciplina=d.id AND d.curso=c.id AND p.nome=‘Flaudio’;
  90. 90. Professor Eduardo Mendes edumendes@gmail.com Selecionando todos os professores SELECT nome FROM professor;
  91. 91. Professor Eduardo Mendes edumendes@gmail.com Selecionando todos os professores sem repetir nomes SELECT DISTINCT nome FROM professor;
  92. 92. Professor Eduardo Mendes edumendes@gmail.com Quantos professores existem na tabela? SELECT COUNT(*) FROM professor;
  93. 93. Professor Eduardo Mendes edumendes@gmail.com Quantos professores um curso específico possui? SELECT COUNT(DISTINCT p.nome) FROM professor p, disciplina d, curso c WHERE p.disciplina=d.id AND d.curso=c.id AND c.nome=‘CONTABILIDADE’;
  94. 94. Professor Eduardo Mendes edumendes@gmail.com Quantos professores cada curso possui? SELECT COUNT(DISTINCT p.nome), c.nome FROM professor p, disciplina d, curso c WHERE p.disciplina=d.id AND d.curso=c.id GROUP BY c.nome;
  95. 95. Professor Eduardo Mendes edumendes@gmail.com Consultas •  Selecione os professores e os ordene por ordem alfabética •  Selecione a quantidade de disciplinas do curso SISTEMAS DE INFORMACAO •  Selecione a quantidade de disciplinas de cada Curso •  Selecione a quantidade de disciplinas de cada professor
  96. 96. Professor Eduardo Mendes edumendes@gmail.com Quantos professores cada curso possui? SELECT COUNT(DISTINCT d.nome), p.nome FROM professor p, disciplina d, curso c WHERE p.disciplina=d.id AND d.curso=c.id GROUP BY p.nome;
  97. 97. Professor Eduardo Mendes edumendes@gmail.com Funções no PHP para recuperar resultados •  Cria um array associativo com a linha atual de um conjunto de resultados Id 0 primeiroNome Eduardo sobreNome Mendes email eduardo@fa7.edu.br telefone 123-4567
  98. 98. Professor Eduardo Mendes edumendes@gmail.com Funções no PHP para recuperar resultados while ($linha = mysql_fetch_assoc($resultado)) { ?> <p>O Nome inserido foi: <?= $linha['primeiroNome'] ?></p> <p>Telefone: <?= $linha['telefone'] ?></p> <? }
  99. 99. Professor Eduardo Mendes edumendes@gmail.com Funções no PHP para recuperar resultados •  Cria um array normal com a linha atual de um conjunto de resultados 0 0 1 Eduardo 2 Mendes 3 eduardo@fa7.edu.br 4 123-4567
  100. 100. Professor Eduardo Mendes edumendes@gmail.com Funções no PHP para recuperar resultados while ($linha = mysql_fetch_row($resultado)) { ?> <p>O Nome inserido foi: <?= $linha[1] ?></p> <p>Telefone: <?= $linha[4] ?></p> <? } 0 0 1 Eduardo 2 Mendes 3 eduardo@fa7.edu.br 4 123-4567
  101. 101. Professor Eduardo Mendes edumendes@gmail.com Funções no PHP para recuperar resultados •  Cria tanto o array associativo, quanto o array numérico Id 0 primeiroNome Eduardo sobreNome Mendes email eduardo@fa7.edu.br Telefone 123-4567 0 0 1 Eduardo 2 Mendes 3 eduardo@fa7.edu.br 4 123-4567
  102. 102. Professor Eduardo Mendes edumendes@gmail.com Funções no PHP para recuperar resultados while ($linha = mysql_fetch_array($resultado)) { ?> <p>O Nome inserido foi: <?= $linha[1] ?></p> <p>Telefone: <?= $linha[‘telefone’] ?></p> <? } 0 0 1 Eduardo 2 Mendes 3 eduardo@fa7.edu.br 4 123-4567 Id 0 primeiroNome Eduardo sobreNome Mendes email eduardo@fa7.edu.br telefone 123-4567
  103. 103. Professor Eduardo Mendes edumendes@gmail.com Percorrendo os resultados <table> <? while ($linha = mysql_fetch_row($resultado)){ ?> <tr> <? foreach ($linha as $valor) { print "<td>$valor</td>n"; } ?> </tr> <? } ?> </table>
  104. 104. Professor Eduardo Mendes edumendes@gmail.com Percorrendo os resultados <table> <? while ($linha = mysql_fetch_assoc($resultado)){ ?> <tr> <? foreach ($linha as $valor) { print "<td>$valor</td>n"; } ?> </tr> <? } ?> </table>
  105. 105. Professor Eduardo Mendes edumendes@gmail.com Percorrendo os resultados <table> <? while ($linha = mysql_fetch_array($resultado)){ ?> <tr> <? foreach ($linha as $valor) { print "<td>$valor</td>n"; } ?> </tr> <? } ?> </table>
  106. 106. Professor Eduardo Mendes edumendes@gmail.com Algumas funções de Strings •  strtoupper –  Converte uma String para maiúsculas –  strtoupper(“abcd”)  ABCD •  strtolower –  Converte uma String para minúsculas –  strtolower(“XYWZ”)  xywz •  strlen –  Retorna o tamanho de uma String •  Mais funções para String: http://php.net/ strings
  107. 107. Professor Eduardo Mendes edumendes@gmail.com Nossa lista de professores  listarProfessor.php
  108. 108. Professor Eduardo Mendes edumendes@gmail.com Como apresentar os campos em maiúsculas?
  109. 109. <? $con = mysql_pconnect(“localhost”, “root”,””); mysql_select_db(“jornada”, $con); $consulta = “SELECT p.*, d.nome as dnome FROM professor p, disciplina d WHERE p.disciplina=d.id”; $resultado = mysql_query($consulta, $con); Professor Eduardo Mendes edumendes@gmail.com
  110. 110. ?> <h1>Professores</h1> <table border=“1”> <tr> <td>Nome</td> <td>Titulação</td> <td>Idade</td> <td>Disciplina</td> </tr> Professor Eduardo Mendes edumendes@gmail.com
  111. 111. <? while($linha = mysql_fetch_array($resultado)) { ?> <tr> <td> <a href=“editarProfessor.php?id=<?= $linha[‘id’] ?>”> <?= $linha[‘nome’] ?> </a> </td> <td><?= $linha[‘titulacao’] ?></td> <td><?= $linha[‘idade’] ?></td> <td><?= $linha[‘dnome’] ?></td> </tr> <? } ?> Professor Eduardo Mendes edumendes@gmail.com
  112. 112. <? $con = mysql_pconnect(“localhost”,”root”,””); mysql_select_db(“jornada”, $con); $id = $_GET[‘id’]; $sql = “SELECT * FROM professor WHERE id=” . $id; $resultado = mysql_query($sql, $con); $professor = mysql_fetch_array($resultado); ?> Professor Eduardo Mendes edumendes@gmail.com
  113. 113. <form method=“post” action=“alterar.php”> <input type=“hidden” name=“id” value=“<?= $professor[‘id’] ?>” /> Nome: <input type=“text” name=“nome” value=“<?= $professor[‘nome’] ?>” /> <br/> Idade: <input type=“text” name=“idade” value=“<?= $professor[‘idade’] ?>” /> <br/> Titulacao: <input type=“text” name=“titulacao” value=“<?= $professor[‘titulacao’] ?>” /> <br/> Professor Eduardo Mendes edumendes@gmail.com
  114. 114. <? $con = mysql_pconnect(“localhost”, ”root”,””); mysql_select_db(“jornada”, $con); $id = $_POST[‘id’] ; $nome = $_POST[‘nome’] ; $titulacao = $_POST[‘titulacao’] ; $idade = $_POST[‘idade’] ; $sql = “UPDATE professor SET nome=‘$nome’, titulacao=‘$titulacao’,idade= $idade WHERE id = $id”; $r = mysql_query($sql, $con) or die(mysql_error()); Professor Eduardo Mendes edumendes@gmail.com
  115. 115. Professor Eduardo Mendes edumendes@gmail.com Tornando os campos maiúsculos <table> <? while ($campo = mysql_fetch_field($resultado)){ print " <th>" . strtoupper($campo->name) ."</th>n"; } ?>
  116. 116. Professor Eduardo Mendes edumendes@gmail.com Alterando o valor no BD com PHP
  117. 117. Professor Eduardo Mendes edumendes@gmail.com Criando uma página para Alterar
  118. 118. Professor Eduardo Mendes edumendes@gmail.com Isto é o queremos
  119. 119. Professor Eduardo Mendes edumendes@gmail.com O que precisamos? •  Criar e executar uma consulta para recuperar a informações de um professor específico •  Criar e executar uma consulta para recuperar as informações de disciplinas •  Fazer com que os campos apresentem os valores do professor específico •  Fazer com o que campo disciplinas apresente os valores das disciplinas
  120. 120. Professor Eduardo Mendes edumendes@gmail.com Realizando os 4 passos •  Criar e executar uma consulta para recuperar a informações de um professor específico $sql = "SELECT * FROM professor WHERE id=" . $_GET['id']; $resultado = mysql_query($sql, $conexao); $professor = mysql_fetch_assoc($resultado); http://localhost/aplicacao/editarProfessor.php?id=1
  121. 121. Professor Eduardo Mendes edumendes@gmail.com Realizando os 4 passos •  Criar e executar uma consulta para recuperar as informações de disciplinas $sql = "SELECT id, nome FROM disciplina"; $disciplinas = mysql_query($sql, $conexao);
  122. 122. Professor Eduardo Mendes edumendes@gmail.com Realizando os 4 passos •  Fazer com que os campos apresentem os valores do professor específico <input type="hidden" name="id" value="<?= $professor['id'] ?>" /> <p>Nome: <input type="text" name="nome" value="<?= $professor['nome'] ?>" /> </p>
  123. 123. Professor Eduardo Mendes edumendes@gmail.com Realizando os 4 passos •  Fazer com o que campo disciplinas apresente os valores das disciplinas <select name="disciplina"> <? while($opcoes = mysql_fetch_assoc($disciplinas)) { ?> <option value="<?= $opcoes['id'] ?>"> <?= $opcoes['nome'] ?></option> <? } ?> </select>
  124. 124. Professor Eduardo Mendes edumendes@gmail.com Exercícios •  Criar uma tabela chamada produto •  A tabela possui –  Id: int –  Nome: Varchar(50) –  Preco: int •  Crie uma tela para inserir produtos na tabela •  Crie uma tela para listar todos os produtos da tabela
  125. 125. Professor Eduardo Mendes edumendes@gmail.com Logando em uma aplicação
  126. 126. Professor Eduardo Mendes edumendes@gmail.com Quais as necessidades para esta tela?
  127. 127. Professor Eduardo Mendes edumendes@gmail.com Uma tabela de usuários •  Id •  Nome •  Login •  Senha –  Quais as características de um login?
  128. 128. Professor Eduardo Mendes edumendes@gmail.com Índices – login •  Chave primária –  Campo na tabela que não se repete –  Serve para identificar uma “tupla” de maneira única –  A chave primária pode ser identificada como um campo único ou como um conjunto de campos •  Índices únicos –  Determinados campos podem ter necessidades especiais –  Alguns campos não deveriam se repetir
  129. 129. Professor Eduardo Mendes edumendes@gmail.com
  130. 130. Professor Eduardo Mendes edumendes@gmail.com No PhpMyAdmin Teste para ver a mensagem de erro
  131. 131. Professor Eduardo Mendes edumendes@gmail.com Quais os campos?
  132. 132. Professor Eduardo Mendes edumendes@gmail.com Login.php <h1>Login</h1> <p>Informe o nome de usuário e senha</p> <form action="confere.php" method="post"> <p>Nome: <input name="login" type="text" /></p> <p>Senha: <input name="senha" type="password" /></p> <p><input type="submit" /></p> </form>
  133. 133. Professor Eduardo Mendes edumendes@gmail.com
  134. 134. Professor Eduardo Mendes edumendes@gmail.com A consulta $login = $_POST [‘login’]; $senha = $_POST[‘senha’]; $sql = “SELECT * FROM usuario WHERE login=‘$login’ ”; $resultado = mysql_query($sql, $conexao); $linha = mysql_fetch_assoc($resultado); if($linha[‘senha’] == $senha) {
  135. 135. Professor Eduardo Mendes edumendes@gmail.com Confere.php <? $login = $_POST['login']; $senha = $_POST['senha']; $conexao = mysql_pconnect("localhost", "root", ""); mysql_select_db("fa7", $conexao); $sql = "SELECT * FROM usuario WHERE login='$login'"; $resultado = mysql_query($sql); $linha = mysql_fetch_assoc($resultado); if ($linha['senha'] == $senha) { print "<p>Usuário logado com sucesso!</p>"; } else { print "<p>Você não tem permissão para acessar esta página!</p>"; } ?>
  136. 136. Professor Eduardo Mendes edumendes@gmail.com
  137. 137. Professor Eduardo Mendes edumendes@gmail.com listarCurso.php <h1>Listar Cursos</h1> <? $conn = mysql_connect("localhost", "root", ""); mysql_select_db("fa7", $conn); $sql = "SELECT id, nome FROM curso"; $result = mysql_query($sql, $conn); ?> <table> <tr> <th>ID</th> <th>Nome</th> </tr> <? while ($row = mysql_fetch_assoc($result)){ ?> <tr> <td><?= $row['id'] ?></td> <td><?= $row['nome'] ?></td> </tr> <? } ?> </table>
  138. 138. Professor Eduardo Mendes edumendes@gmail.com Criar um link para editarCurso •  Como poderíamos criar um link para editar o curso? •  Que link seria esse?
  139. 139. Professor Eduardo Mendes edumendes@gmail.com O link •  Destino –  editarCurso.php •  Informando o curso a ser editado –  editarCurso.php?id=1 •  O link <a href='editarCurso.php?id=<?= $row['id'] ?>'> <?= $row['nome'] ?> </a>
  140. 140. Professor Eduardo Mendes edumendes@gmail.com Adicionando o link <tr> <td><?= $row['id'] ?></td> <td> <a href='editarCurso.php?id=<?= $row['id'] ?>'> <?= $row['nome'] ?> </a> </td> </tr>
  141. 141. Professor Eduardo Mendes edumendes@gmail.com O editarCurso.php
  142. 142. Professor Eduardo Mendes edumendes@gmail.com editarCurso.php <h1>Editar Cursos</h1> <? $id = $_GET['id']; $conn = mysql_connect("localhost", "root", ""); mysql_select_db("fa7", $conn); $sql = "SELECT * FROM curso where id=$id"; $result = mysql_query($sql, $conn); $row = mysql_fetch_assoc($result); ?>
  143. 143. Professor Eduardo Mendes edumendes@gmail.com editarCurso.php <form action="alterarCurso.php“ method=“post”> <p>Id: <input type="text" name="id“ readonly=“true” value="<?= $row['id'] ?>"/></p> <p>Nome: <input type="text" name="nome" value="<?= $row['nome'] ?>"/></p> <p>Duracao: <input type="text" name="duracao“ value="<?= $row['duracao'] ?>"/></p> <p>MEC: <input type="text" name="MEC“ value="<?= $row['MEC'] ?>"/></p> <input type="button" onclick="javascript:history.go(-1);" value="Voltar"/> <input type="submit" value="Alterar"/> <a href="excluirCurso.php?id=<?= $row['id'] ?>"> Excluir Curso</a> </form>
  144. 144. Professor Eduardo Mendes edumendes@gmail.com alterarCurso.php
  145. 145. Professor Eduardo Mendes edumendes@gmail.com alterarCurso.php <? $conn = mysql_connect("localhost", "root", ""); mysql_select_db("fa7", $conn); $nome = $_POST[‘nome’]; $duracao = $_POST[‘duracao’]; $MEC = $_POST[‘MEC’]; $id = $_POST[‘id’]; $sql = "UPDATE curso SET nome='$nome', duracao='$duracao', MEC='$MEC' WHERE id=$id"; $result = mysql_query($sql, $conn); if($result) { print "<p>Curso alterado com sucesso!</p>"; } else { print "<p>Alteração não realizada!</p>"; } ?> <a href="listarCurso.php"><p>Listar Cursos</p></a>
  146. 146. Professor Eduardo Mendes edumendes@gmail.com <? $id = $_GET[‘id’]; $conn = mysql_connect("localhost", "root", ""); mysql_select_db("fa7", $conn); $sql = "DELETE FROM curso WHERE id=$id"; $result = mysql_query($sql, $conn); if($result) { print "<h1>Curso excluído com sucesso!</h1>"; } else { print "<h1>Não foi possível excluir o curso!</h1>"; } ?> <a href="listarCurso.php"><h4>Listar Cursos</h4></a>
  147. 147. Professor Eduardo Mendes edumendes@gmail.com O condicional ternário $acao = ([condição]) ? “agir” : “parar” ; true false
  148. 148. Professor Eduardo Mendes edumendes@gmail.com Nosso fluxo
  149. 149. Professor Eduardo Mendes edumendes@gmail.com Novo Fluxo
  150. 150. Professor Eduardo Mendes edumendes@gmail.com Um novo fluxo
  151. 151. Professor Eduardo Mendes edumendes@gmail.com Um novo fluxo
  152. 152. Professor Eduardo Mendes edumendes@gmail.com Criando um fluxo de decisão <? $mensagem = “”; $conn = mysql_connect("localhost", "root", ""); mysql_select_db("fa7", $conn); if (isset($_POST['acao']) || isset($_GET['acao'])) { $acao = (isset($_POST['acao'])) ? $_POST['acao'] : $_GET['acao'] ; if ($acao == "alterar") { //comandos para alterar } else if ($acao == "excluir") { //comandos para excluir } else if ($acao == "inserir") { //comandos para inserir } else if ($acao == "buscar") { //comandos para buscar } }
  153. 153. Professor Eduardo Mendes edumendes@gmail.com Adicionando o campo hidden ao editarCurso.php <form action="listarCurso.php" method="post"> <input type="hidden" name="acao" value="alterar" /> <p>Id: <input type="text" readonly="true" name="id" value="<?= $row['id'] ?>"/> </p> <p>Nome: <input type="text" name="nome" value="<?= $row['nome'] ?>"/></p>
  154. 154. Professor Eduardo Mendes edumendes@gmail.com O Alterar if ($acao == "alterar") { $nome = $_POST['nome']; $duracao = $_POST['duracao']; $MEC = $_POST['MEC']; $id = $_POST['id']; $sql = "UPDATE curso SET nome='$nome', duracao='$duracao', MEC='$MEC' WHERE id=$id"; $result = mysql_query($sql, $conn); if($result) { $mensagem = "Curso alterado com sucesso!"; } else { $mensagem = "Alteração não realizada!"; } } els...
  155. 155. Professor Eduardo Mendes edumendes@gmail.com O excluir } else if ($acao == "excluir") { $id = $_GET['id']; $sql = "DELETE FROM curso WHERE id=$id"; $result = mysql_query($sql, $conn); if($result) { $mensagem = "Curso Excluído com sucesso!"; } else { $mensagem = "A exclusão não pode ser realizada!"; } } else ...
  156. 156. Professor Eduardo Mendes edumendes@gmail.com Alterando o botão de exclusão .... <input type="button" onclick="javascript:history.go(-1);" value="Voltar"/> <input type="submit" value="Alterar"/> <a href="listarCurso.php?acao=excluir&id=<?= $row['id'] ?>"> Excluir Curso</a> </form>
  157. 157. Professor Eduardo Mendes edumendes@gmail.com O inserir } else if ($acao == "inserir") { $nome = $_POST['nome']; $duracao = $_POST['duracao']; $MEC = $_POST['MEC']; $sql = "INSERT INTO curso VALUES(NULL, '$nome', '$duracao', '$MEC')"; $result = mysql_query($sql, $conn); if($result) { $mensagem = "Curso inserido com sucesso!"; } else { $mensagem = "O curso não pode ser incluso!"; } } els...
  158. 158. Professor Eduardo Mendes edumendes@gmail.com O que já temos
  159. 159. Professor Eduardo Mendes edumendes@gmail.com O que precisaremos fazer? Este botão direciona o navegador para a página de editar/inserir
  160. 160. Professor Eduardo Mendes edumendes@gmail.com <tr> <td><?= $row['id'] ?></td> <td> <a href='editarCurso.php?id=<?= $row['id'] ?>'> <?= $row['nome'] ?> </a> </td> </tr> </table> <p> <input type="button" value="Inserir Novo Curso" onClick="javascript: location.href='editarCurso.php';" /> </p> </div> Adicionando o botão
  161. 161. Professor Eduardo Mendes edumendes@gmail.com O que precisamos fazer? •  Determinar se esta página vai alterar ou criar um novo curso •  Como? –  Pela forma como foi acessada
  162. 162. Professor Eduardo Mendes edumendes@gmail.com As 2 maneiras de acessar a página de Edição
  163. 163. Professor Eduardo Mendes edumendes@gmail.com O que precisamos fazer? •  Precisamos criar uma variável para mostrar qual ação deve ser realizada –  $acao –  Inicialmente ela vai possuir o valor “inserir” –  Caso a ação seja alterar, mudamos para o valor “alterar”
  164. 164. Professor Eduardo Mendes edumendes@gmail.com O novo editarCurso.php <h1>Editar Cursos</h1> <? $acao = "inserir"; $id = ""; $nome = ""; $duracao = ""; $MEC = ""; if (isset($_GET['id'])) { $acao = "alterar"; $id = $_GET['id']; $conn = mysql_connect("localhost", "root", ""); mysql_select_db("fa7", $conn); $sql = "SELECT * FROM curso where id=$id"; $result = mysql_query($sql, $conn); $row = mysql_fetch_assoc($result); $nome = $row['nome']; $duracao = $row['duracao']; $MEC = $row['MEC']; }
  165. 165. Professor Eduardo Mendes edumendes@gmail.com O novo editarCurso.php <form action=“listarCurso.php“ method=“post”> <input type="hidden" name="acao" value="<?= $acao ?>" /> <p>Id: <input type="text" name="id“ readonly=“true” value="<?= $id ?>"/></p> <p>Nome: <input type="text" name="nome" value="<?= $nome ?>"/></p> <p>Duracao: <input type="text" name="duracao“ value="<?= $duracao ?>"/></p> <p>MEC: <input type="text" name="MEC“ value="<?= $MEC ?>"/></p> <input type="button" onclick="javascript:history.go(-1);" value="Voltar"/>
  166. 166. Professor Eduardo Mendes edumendes@gmail.com A ação de alterar no listarCurso.php } else if ($acao == "inserir") { $nome = $_POST['nome']; $duracao = $_POST['duracao']; $MEC = $_POST['MEC']; $sql = "INSERT INTO curso VALUES(NULL, '$nome', '$duracao', '$MEC')"; $result = mysql_query($sql, $conn); if($result) { $mensagem = "Curso inserido com sucesso!"; } else { $mensagem = "O curso não pode ser incluso<strong></strong>!"; } } el....
  167. 167. Professor Eduardo Mendes edumendes@gmail.com CRUD COMPLETO!!!
  168. 168. Professor Eduardo Mendes edumendes@gmail.com O que foi visto? •  Introdução Banco de Dados –  Linhas –  Tabelas –  Colunas –  Registros –  Chave Primária –  Chave Estrangeira –  Relacionamento entre tabelas –  Índices •  MySQL –  O cliente mysql.exe •  Conexão via linha de comando –  PhpMyAdmin •  Linguagem SQL –  Linguagem de Modelagem de dados •  CREATE, USE, ALTER, LOAD DATA •  Conectando o MySQL com funções PHP –  mysql_connect(), mysql_pconnect(), mysql_select_db(), –  Consultas –  Linguagem de Consulta •  SELECT, UPDATE, DELETE, INSERT •  WHERE, AND, OR, ORDER BY, LIKE, DISTINCT, COUNT, GROUP BY •  mysql_query(), mysql_fetch_assoc(), mysql_fetch_array(), mysql_row(), mysql_fetch_field() •  Conjunto de Resultados •  Formatando o conteúdo –  Criação de CRUD
  169. 169. Professor Eduardo Mendes edumendes@gmail.com Obrigado!

×