PHP e MySQL para iniciantes

169
Módulo 3 PHP & MySQL Professor: Eduardo Mendes

description

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.

Transcript of PHP e MySQL para iniciantes

Módulo 3

PHP & MySQL

Professor: Eduardo Mendes

Professor Eduardo Mendes [email protected]

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

Professor Eduardo Mendes [email protected]

Testando Configuração

•  Iniciar o EasyPHP –  Iniciar Programas EasyPHP

Professor Eduardo Mendes [email protected]

Testando Configuração

•  Executar algum browser (navegador) –  http://localhost

Professor Eduardo Mendes [email protected]

Testando Configuração

•  Os arquivos serão salvos na pasta www do EasyPHP –  C:\Arquivos de programas\EasyPHP1-8\www

Professor Eduardo Mendes [email protected]

MySQL

Professor Eduardo Mendes [email protected]

O programa mysql

•  Iniciar EasyPHP •  C: •  cd Arquivos* •  cd Easy* •  cd mysql •  cd bin •  mysql –u root -p

Professor Eduardo Mendes [email protected]

mysql

Professor Eduardo Mendes [email protected]

Conceitos

•  Linhas •  Registros •  Tabelas •  Campos •  Id

Professor Eduardo Mendes [email protected]

Tabela típica de dados: Agenda Telefônica

Professor Eduardo Mendes [email protected]

Cursos da FA7

Professor Eduardo Mendes [email protected]

Professor Eduardo Mendes [email protected]

Criando um Banco de Dados

CREATE DATABASE nomeDoBanco;

Professor Eduardo Mendes [email protected]

Usando um BD específico

USE nomeDoBanco;

Professor Eduardo Mendes [email protected]

Professor Eduardo Mendes [email protected]

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;

Professor Eduardo Mendes [email protected]

Inserindo Valores

INSERT INTO agendaTelefonica VALUES( 0, ‘Eduardo', ‘Mendes', ‘[email protected]', '123567‘

);

Professor Eduardo Mendes [email protected]

Recuperando os dados

•  Eu quero visualizar todos os registro de uma tabela

SELECT * FROM nomeDaTabela;

Professor Eduardo Mendes [email protected]

No MySQL

SELECT * FROM agendaTelefonica;

Professor Eduardo Mendes [email protected]

O programa mysql

•  Iniciar EasyPHP •  C: •  cd Arquivos* •  cd Easy* •  cd mysql •  cd bin •  mysql –u root -p

Professor Eduardo Mendes [email protected]

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

Professor Eduardo Mendes [email protected]

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

Professor Eduardo Mendes [email protected]

Juntando tudo

mysql_connect("localhost", "root", "");

O servidor A função O usuário A senha

Guardar o retorno da função em uma variável é opcional

$conexao = mysql_connect("localhost", "root", "");

Professor Eduardo Mendes [email protected]

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

Professor Eduardo Mendes [email protected]

Juntando tudo

mysql_select_db(“agendaTelefonica”);

ou mysql_select_db(“agendaTelefonica", $conexao);

A função O nome do banco A conexão

Professor Eduardo Mendes [email protected]

Sucesso na conexão

Professor Eduardo Mendes [email protected]

Erro na conexão

Professor Eduardo Mendes [email protected]

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!"; } ?>

Professor Eduardo Mendes [email protected]

O programa mysql

•  Iniciar EasyPHP •  C: •  cd Arquivos* •  cd Easy* •  cd mysql •  cd bin •  mysql –u root -p

Professor Eduardo Mendes [email protected]

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 programas\EasyPHP1-8\mysql\bin

–  Executar o comando no mysql –  LOAD DATA LOCAL INFILE “dados.txt” INTO

TABLE agendaTelefonica •  SELECT * FROM agendaTelefonica

Professor Eduardo Mendes [email protected]

Limitando o número de colunas

•  Selecionar apenas o nome e o sobrenome de todas os registros da tabela

SELECT primeironome,sobrenome FROM agendaTelefonica;

Professor Eduardo Mendes [email protected]

Adicionando uma condição WHERE

SELECT nome, sobrenome FROM agendaTelefonica WHERE nome=‘Eduardo’;

Professor Eduardo Mendes [email protected]

WHERE e operadores de comparação •  WHERE nomeDoCampo = ‘xxxxx’;

•  WHERE nomeDoCampo > XXXX;

•  WHERE nomeDoCampo < ‘XXXX’;

•  WHERE nomeDoCampo >= XXXX;

•  WHERE nomeDoCampo <= ‘XXXX’;

Professor Eduardo Mendes [email protected]

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’;

Professor Eduardo Mendes [email protected]

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”);

Professor Eduardo Mendes [email protected]

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;

Professor Eduardo Mendes [email protected]

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

Professor Eduardo Mendes [email protected]

PHP & MySQL

•  Como enviar a consulta para o banco?

•  Esta função precisa de 1 argumento: –  A consulta: “SELECT ...”

mysql_query($sql);

Professor Eduardo Mendes [email protected]

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/>”; } ?>

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 [email protected]

Professor Eduardo Mendes [email protected]

Uma agenda Simples

Professor Eduardo Mendes [email protected]

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>

Professor Eduardo Mendes [email protected]

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>

Professor Eduardo Mendes [email protected]

Mais consultas

•  Todos os registros da tabela que ‘a’, ‘b’, ‘c’, ‘d’

Professor Eduardo Mendes [email protected]

Coringa % •  Selecione todos os registros que começam

com a letra ‘A’;

SELECT * FROM agendaTelefonica WHERE primeironome LIKE ‘A%’;

Professor Eduardo Mendes [email protected]

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’;

Professor Eduardo Mendes [email protected]

Múltiplas condições

SELECT * FROM agendaTelefonica WHERE nome LIKE ‘J%’ AND sobrenome LIKE ‘%o%’;

Professor Eduardo Mendes [email protected]

Inserindo Valores no MySQL

INSERT INTO agendaTelefonica VALUES( 0, ‘Eduardo', ‘Mendes', ‘[email protected]', '123567‘

);

Professor Eduardo Mendes [email protected]

Inserindo um valor via PHP

Professor Eduardo Mendes [email protected]

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', '[email protected]', '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>"; } ?>

Professor Eduardo Mendes [email protected]

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>"; } ?>

Professor Eduardo Mendes [email protected]

Recuperando o valor via PHP

Professor Eduardo Mendes [email protected]

Inserindo Valores a partir De Um Formulario

Professor Eduardo Mendes [email protected]

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>

Professor Eduardo Mendes [email protected]

O action

Professor Eduardo Mendes [email protected]

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>"; }

?>

Professor Eduardo Mendes [email protected]

A agenda completa

Professor Eduardo Mendes [email protected]

Procura por nome específico

•  Como encontrar um único nome caso seja preciso?

Professor Eduardo Mendes [email protected]

A solução Caixa de pesquisa

Professor Eduardo Mendes [email protected]

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); ?>

Professor Eduardo Mendes [email protected]

O campo de texto antes da tabela

<form method="post"> <p>Pesquisa: <input type="text" name="nome" /></p>

</form>

Professor Eduardo Mendes [email protected]

Alterando Dados - UPDATE •  Altere o sobrenome para ‘Oliveira’ onde o

nome é igual ‘Eduardo’

UPDATE agendaTelefonica SET sobrenome=‘Oliveira’ WHERE nome = ‘Eduardo’;

Professor Eduardo Mendes [email protected]

Excluindo linhas DELETE •  Delete da tabela agendaTelefonica o

registro de todos os ‘Eduardo’

DELETE FROM agendaTelefonica WHERE nome = ‘Eduardo’;

Professor Eduardo Mendes [email protected]

Banco de Dados da FA7

CREATE DATABASE fa7; USE DATABASE fa7;

Professor Eduardo Mendes [email protected]

Professor

•  Id •  Nome •  Titulação •  Idade •  Disciplina

Professor Eduardo Mendes [email protected]

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) );

Professor Eduardo Mendes [email protected]

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;

Professor Eduardo Mendes [email protected]

E se eu quiser mais sobre Disciplina????

•  Carga Horaria •  Curso

Professor Eduardo Mendes [email protected]

Disciplina

•  Id •  Nome •  Carga Horária •  Curso

Professor Eduardo Mendes [email protected]

Tabela Disciplina

DROP TABLE IF EXISTS disciplina; CREATE TABLE disciplina ( id INT PRIMARY KEY, nome VARCHAR(30), cargaHoraria INT, curso VARCHAR(30) );

Professor Eduardo Mendes [email protected]

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;

Professor Eduardo Mendes [email protected]

Relacionando Tabelas

Professor Eduardo Mendes [email protected]

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

Professor Eduardo Mendes [email protected]

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

Professor Eduardo Mendes [email protected]

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) );

Professor Eduardo Mendes [email protected]

Executando um script no PhpMyAdmin

Professor Eduardo Mendes [email protected]

Executando os scripts para o banco de dados fa7

•  Baixe os arquivos

Professor Eduardo Mendes [email protected]

Verifique o banco fa7 agora

• SELECT * FROM curso;

• SELECT * FROM disciplina;

• SELECT * FROM professor;

Professor Eduardo Mendes [email protected]

Combinando Tabelas

SELECT * FROM professor, disciplina;

Professor Eduardo Mendes [email protected]

JOIN

Professor Eduardo Mendes [email protected]

Solução

•  Precisamos colocar uma condição na nossa consulta

SELECT * FROM professor, disciplina •  Para que haja o relacionamento entre as

duas tabelas

Professor Eduardo Mendes [email protected]

Impondo uma condição

SELECT * FROM professor, disciplina WHERE professor.disciplina= disciplina.id;

Professor Eduardo Mendes [email protected]

Dando um ‘apelido’ para Tabela

SELECT * FROM professor p, disciplina d;

Professor Eduardo Mendes [email protected]

Apelido == ALIAS

SELECT p.nome, d.nome FROM professor p, disciplina d WHERE p.disciplina = d.id;

Professor Eduardo Mendes [email protected]

Alias para campos

SELECT p.nome as professor, d.nome as disciplina FROM professor p, disciplina d WHERE p.disciplina = d.id;

Professor Eduardo Mendes [email protected]

Tabela curso

Professor Eduardo Mendes [email protected]

Relacionando tabelas

SELECT * FROM curso c, disciplina d WHERE d.curso = c.id;

Professor Eduardo Mendes [email protected]

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;

Professor Eduardo Mendes [email protected]

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’;

Professor Eduardo Mendes [email protected]

Selecionando todos os professores

SELECT nome FROM professor;

Professor Eduardo Mendes [email protected]

Selecionando todos os professores sem repetir nomes

SELECT DISTINCT nome FROM professor;

Professor Eduardo Mendes [email protected]

Quantos professores existem na tabela?

SELECT COUNT(*) FROM professor;

Professor Eduardo Mendes [email protected]

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’;

Professor Eduardo Mendes [email protected]

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;

Professor Eduardo Mendes [email protected]

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

Professor Eduardo Mendes [email protected]

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;

Professor Eduardo Mendes [email protected]

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 [email protected]

telefone 123-4567

Professor Eduardo Mendes [email protected]

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> <? }

Professor Eduardo Mendes [email protected]

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 [email protected]

4 123-4567

Professor Eduardo Mendes [email protected]

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 [email protected]

4 123-4567

Professor Eduardo Mendes [email protected]

Funções no PHP para recuperar resultados

•  Cria tanto o array associativo, quanto o array numérico

Id 0

primeiroNome Eduardo

sobreNome Mendes

email [email protected]

Telefone 123-4567

0 0

1 Eduardo

2 Mendes

3 [email protected]

4 123-4567

Professor Eduardo Mendes [email protected]

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 [email protected]

4 123-4567

Id 0

primeiroNome Eduardo

sobreNome Mendes

email [email protected]

telefone 123-4567

Professor Eduardo Mendes [email protected]

Percorrendo os resultados <table>

<? while ($linha = mysql_fetch_row($resultado)){ ?> <tr> <? foreach ($linha as $valor) { print "<td>$valor</td>\n";

} ?> </tr>

<? } ?> </table>

Professor Eduardo Mendes [email protected]

Percorrendo os resultados <table>

<? while ($linha = mysql_fetch_assoc($resultado)){ ?> <tr> <? foreach ($linha as $valor) { print "<td>$valor</td>\n";

} ?> </tr>

<? } ?> </table>

Professor Eduardo Mendes [email protected]

Percorrendo os resultados <table>

<? while ($linha = mysql_fetch_array($resultado)){ ?> <tr> <? foreach ($linha as $valor) { print "<td>$valor</td>\n";

} ?> </tr>

<? } ?> </table>

Professor Eduardo Mendes [email protected]

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

Professor Eduardo Mendes [email protected]

Nossa lista de professores listarProfessor.php

Professor Eduardo Mendes [email protected]

Como apresentar os campos em maiúsculas?

<? $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 [email protected]

?> <h1>Professores</h1> <table border=“1”> <tr> <td>Nome</td>

<td>Titulação</td> <td>Idade</td> <td>Disciplina</td> </tr>

Professor Eduardo Mendes [email protected]

<? 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> <? } ?> </table>

Professor Eduardo Mendes [email protected]

<? $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 [email protected]

<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/> <input type=“submit” value=“Editar Professor”/> </form>

Professor Eduardo Mendes [email protected]

<? $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()); header(“location: professor.php”); ?>

Professor Eduardo Mendes [email protected]

Professor Eduardo Mendes [email protected]

Tornando os campos maiúsculos

<table> <? while ($campo = mysql_fetch_field($resultado)){

print " <th>" . strtoupper($campo->name) ."</th>\n"; } ?>

Professor Eduardo Mendes [email protected]

Alterando o valor no BD com PHP

Professor Eduardo Mendes [email protected]

Criando uma página para Alterar

Professor Eduardo Mendes [email protected]

Isto é o queremos

Professor Eduardo Mendes [email protected]

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

Professor Eduardo Mendes [email protected]

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

Professor Eduardo Mendes [email protected]

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);

Professor Eduardo Mendes [email protected]

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>

Professor Eduardo Mendes [email protected]

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>

Professor Eduardo Mendes [email protected]

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

Professor Eduardo Mendes [email protected]

Logando em uma aplicação

Professor Eduardo Mendes [email protected]

Quais as necessidades para esta tela?

Professor Eduardo Mendes [email protected]

Uma tabela de usuários

•  Id •  Nome •  Login •  Senha

– Quais as características de um login?

Professor Eduardo Mendes [email protected]

Í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

Professor Eduardo Mendes [email protected]

Professor Eduardo Mendes [email protected]

No PhpMyAdmin

Teste para ver a mensagem de erro

Professor Eduardo Mendes [email protected]

Quais os campos?

Professor Eduardo Mendes [email protected]

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>

Professor Eduardo Mendes [email protected]

Professor Eduardo Mendes [email protected]

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) {

Professor Eduardo Mendes [email protected]

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>"; }

?>

Professor Eduardo Mendes [email protected]

Professor Eduardo Mendes [email protected]

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>

Professor Eduardo Mendes [email protected]

Criar um link para editarCurso

•  Como poderíamos criar um link para editar o curso?

•  Que link seria esse?

Professor Eduardo Mendes [email protected]

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>

Professor Eduardo Mendes [email protected]

Adicionando o link

<tr> <td><?= $row['id'] ?></td> <td> <a href='editarCurso.php?id=<?= $row['id'] ?>'> <?= $row['nome'] ?> </a> </td> </tr>

Professor Eduardo Mendes [email protected]

O editarCurso.php

Professor Eduardo Mendes [email protected]

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); ?>

Professor Eduardo Mendes [email protected]

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>

Professor Eduardo Mendes [email protected]

alterarCurso.php

Professor Eduardo Mendes [email protected]

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>

Professor Eduardo Mendes [email protected]

<? $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>

Professor Eduardo Mendes [email protected]

O condicional ternário

$acao = ([condição]) ? “agir” : “parar” ;

true

false

Professor Eduardo Mendes [email protected]

Nosso fluxo

Professor Eduardo Mendes [email protected]

Novo Fluxo

Professor Eduardo Mendes [email protected]

Um novo fluxo

Professor Eduardo Mendes [email protected]

Um novo fluxo

Professor Eduardo Mendes [email protected]

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 }

} ?>

Professor Eduardo Mendes [email protected]

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>

Professor Eduardo Mendes [email protected]

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...

Professor Eduardo Mendes [email protected]

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 ...

Professor Eduardo Mendes [email protected]

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>

Professor Eduardo Mendes [email protected]

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...

Professor Eduardo Mendes [email protected]

O que já temos

Professor Eduardo Mendes [email protected]

O que precisaremos fazer?

Este botão direciona o navegador para a página de editar/inserir

Professor Eduardo Mendes [email protected]

<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

Professor Eduardo Mendes [email protected]

O que precisamos fazer?

•  Determinar se esta página vai alterar ou criar um novo curso

•  Como? –  Pela forma como foi

acessada

Professor Eduardo Mendes [email protected]

As 2 maneiras de acessar a página de Edição

Professor Eduardo Mendes [email protected]

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”

Professor Eduardo Mendes [email protected]

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']; }

?>

Professor Eduardo Mendes [email protected]

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"/>

Professor Eduardo Mendes [email protected]

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....

Professor Eduardo Mendes [email protected]

CRUD COMPLETO!!!

Professor Eduardo Mendes [email protected]

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

Professor Eduardo Mendes [email protected]

Obrigado!