Módulo 3
PHP & MySQL
Professor: Eduardo Mendes
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
Professor Eduardo Mendes edumendes@gmail.com
Testando Configuração
•  Iniciar o EasyPHP
–  Iniciar  Programas  EasyPHP
Professor Eduardo Mendes edumendes@gmail.com
Testando Configuração
•  Executar algum browser (navegador)
–  http://localhost
Professor Eduardo Mendes edumendes@gmail.com
Testando Configuração
•  Os arquivos serão salvos na pasta www do
EasyPHP
–  C:Arquivos de programasEasyPHP1-8www
Professor Eduardo Mendes edumendes@gmail.com
MySQL
Professor Eduardo Mendes edumendes@gmail.com
O programa mysql
•  Iniciar EasyPHP
•  C:
•  cd Arquivos*
•  cd Easy*
•  cd mysql
•  cd bin
•  mysql –u root -p
Professor Eduardo Mendes edumendes@gmail.com
mysql
Professor Eduardo Mendes edumendes@gmail.com
Conceitos
•  Linhas
•  Registros
•  Tabelas
•  Campos
•  Id
Professor Eduardo Mendes edumendes@gmail.com
Tabela típica de dados:
Agenda Telefônica
Professor Eduardo Mendes edumendes@gmail.com
Cursos da FA7
Professor Eduardo Mendes edumendes@gmail.com
Professor Eduardo Mendes edumendes@gmail.com
Criando um Banco de Dados
CREATE DATABASE nomeDoBanco;
Professor Eduardo Mendes edumendes@gmail.com
Usando um BD específico
USE nomeDoBanco;
Professor Eduardo Mendes edumendes@gmail.com
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;
Professor Eduardo Mendes edumendes@gmail.com
Inserindo Valores
INSERT INTO agendaTelefonica
VALUES(
0, ‘Eduardo', ‘Mendes',
‘eduardo@fa7.edu.br', '123567‘
);
Professor Eduardo Mendes edumendes@gmail.com
Recuperando os dados
•  Eu quero visualizar todos os registro
de uma tabela
SELECT * FROM nomeDaTabela;
Professor Eduardo Mendes edumendes@gmail.com
No MySQL
SELECT * FROM agendaTelefonica;
Professor Eduardo Mendes edumendes@gmail.com
O programa mysql
•  Iniciar EasyPHP
•  C:
•  cd Arquivos*
•  cd Easy*
•  cd mysql
•  cd bin
•  mysql –u root -p
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
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
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", "");
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
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
Professor Eduardo Mendes edumendes@gmail.com
Sucesso na conexão
Professor Eduardo Mendes edumendes@gmail.com
Erro na conexão
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!";
}
?>
Professor Eduardo Mendes edumendes@gmail.com
O programa mysql
•  Iniciar EasyPHP
•  C:
•  cd Arquivos*
•  cd Easy*
•  cd mysql
•  cd bin
•  mysql –u root -p
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
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;
Professor Eduardo Mendes edumendes@gmail.com
Adicionando uma condição
WHERE
SELECT nome, sobrenome
FROM agendaTelefonica
WHERE nome=‘Eduardo’;
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’;
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’;
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”);
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;
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
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);
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/>”;
} ?>
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
Professor Eduardo Mendes edumendes@gmail.com
Uma agenda Simples
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>
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>
Professor Eduardo Mendes edumendes@gmail.com
Mais consultas
•  Todos os registros da tabela que ‘a’, ‘b’,
‘c’, ‘d’
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%’;
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’;
Professor Eduardo Mendes edumendes@gmail.com
Múltiplas condições
SELECT *
FROM agendaTelefonica
WHERE nome LIKE ‘J%’
AND sobrenome LIKE ‘%o%’;
Professor Eduardo Mendes edumendes@gmail.com
Inserindo Valores no MySQL
INSERT INTO agendaTelefonica
VALUES(
0, ‘Eduardo', ‘Mendes',
‘eduardo@fa7.edu.br', '123567‘
);
Professor Eduardo Mendes edumendes@gmail.com
Inserindo um valor via PHP
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>";
}
?>
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>";
}
?>
Professor Eduardo Mendes edumendes@gmail.com
Recuperando o valor via PHP
Professor Eduardo Mendes edumendes@gmail.com
Inserindo Valores a partir De Um Formulario
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>
Professor Eduardo Mendes edumendes@gmail.com
O action
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>";
}
?>
Professor Eduardo Mendes edumendes@gmail.com
A agenda completa
Professor Eduardo Mendes edumendes@gmail.com
Procura por nome específico
•  Como encontrar um único
nome caso seja preciso?
Professor Eduardo Mendes edumendes@gmail.com
A solução  Caixa de pesquisa
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);
?>
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>
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’;
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’;
Professor Eduardo Mendes edumendes@gmail.com
Banco de Dados da FA7
CREATE DATABASE fa7;
USE DATABASE fa7;
Professor Eduardo Mendes edumendes@gmail.com
Professor
•  Id
•  Nome
•  Titulação
•  Idade
•  Disciplina
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)
);
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;
Professor Eduardo Mendes edumendes@gmail.com
E se eu quiser mais sobre
Disciplina????
•  Carga Horaria
•  Curso
Professor Eduardo Mendes edumendes@gmail.com
Disciplina
•  Id
•  Nome
•  Carga Horária
•  Curso
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)
);
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;
Professor Eduardo Mendes edumendes@gmail.com
Relacionando Tabelas
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
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
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)
);
Professor Eduardo Mendes edumendes@gmail.com
Executando um script no PhpMyAdmin
Professor Eduardo Mendes edumendes@gmail.com
Executando os scripts para o banco de dados fa7
•  Baixe os arquivos
Professor Eduardo Mendes edumendes@gmail.com
Verifique o banco fa7 agora
• SELECT * FROM curso;
• SELECT * FROM disciplina;
• SELECT * FROM professor;
Professor Eduardo Mendes edumendes@gmail.com
Combinando Tabelas
SELECT *
FROM professor,
disciplina;
Professor Eduardo Mendes edumendes@gmail.com
JOIN
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
Professor Eduardo Mendes edumendes@gmail.com
Impondo uma condição
SELECT *
FROM professor, disciplina
WHERE professor.disciplina=
disciplina.id;
Professor Eduardo Mendes edumendes@gmail.com
Dando um ‘apelido’
para Tabela
SELECT *
FROM professor p,
disciplina d;
Professor Eduardo Mendes edumendes@gmail.com
Apelido == ALIAS
SELECT p.nome,
d.nome
FROM professor p,
disciplina d
WHERE p.disciplina =
d.id;
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;
Professor Eduardo Mendes edumendes@gmail.com
Tabela curso
Professor Eduardo Mendes edumendes@gmail.com
Relacionando tabelas
SELECT *
FROM curso c,
disciplina d
WHERE d.curso = c.id;
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;
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’;
Professor Eduardo Mendes edumendes@gmail.com
Selecionando todos os professores
SELECT nome
FROM professor;
Professor Eduardo Mendes edumendes@gmail.com
Selecionando todos os professores
sem repetir nomes
SELECT DISTINCT nome
FROM professor;
Professor Eduardo Mendes edumendes@gmail.com
Quantos professores
existem na tabela?
SELECT COUNT(*)
FROM professor;
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’;
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;
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
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;
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
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>
<?
}
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
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
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
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
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>
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>
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>
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
Professor Eduardo Mendes edumendes@gmail.com
Nossa lista de professores  listarProfessor.php
Professor Eduardo Mendes edumendes@gmail.com
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 edumendes@gmail.com
?>
<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
<? 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
<?
$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
<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
<?
$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
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";
}
?>
Professor Eduardo Mendes edumendes@gmail.com
Alterando o valor no BD com PHP
Professor Eduardo Mendes edumendes@gmail.com
Criando uma página para Alterar
Professor Eduardo Mendes edumendes@gmail.com
Isto é o queremos
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
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
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);
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>
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>
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
Professor Eduardo Mendes edumendes@gmail.com
Logando em uma aplicação
Professor Eduardo Mendes edumendes@gmail.com
Quais as necessidades para esta tela?
Professor Eduardo Mendes edumendes@gmail.com
Uma tabela de usuários
•  Id
•  Nome
•  Login
•  Senha
–  Quais as características de um login?
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
Professor Eduardo Mendes edumendes@gmail.com
Professor Eduardo Mendes edumendes@gmail.com
No PhpMyAdmin
Teste para ver
a mensagem de erro
Professor Eduardo Mendes edumendes@gmail.com
Quais os campos?
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>
Professor Eduardo Mendes edumendes@gmail.com
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) {
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>";
}
?>
Professor Eduardo Mendes edumendes@gmail.com
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>
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?
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>
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>
Professor Eduardo Mendes edumendes@gmail.com
O editarCurso.php
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);
?>
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>
Professor Eduardo Mendes edumendes@gmail.com
alterarCurso.php
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>
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>
Professor Eduardo Mendes edumendes@gmail.com
O condicional ternário
$acao = ([condição]) ? “agir” : “parar” ;
true
false
Professor Eduardo Mendes edumendes@gmail.com
Nosso fluxo
Professor Eduardo Mendes edumendes@gmail.com
Novo Fluxo
Professor Eduardo Mendes edumendes@gmail.com
Um novo fluxo
Professor Eduardo Mendes edumendes@gmail.com
Um novo fluxo
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
}
}
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>
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...
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 ...
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>
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...
Professor Eduardo Mendes edumendes@gmail.com
O que já temos
Professor Eduardo Mendes edumendes@gmail.com
O que precisaremos fazer?
Este botão direciona
o navegador para
a página de editar/inserir
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
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
Professor Eduardo Mendes edumendes@gmail.com
As 2 maneiras de acessar a página de Edição
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”
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'];
}
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"/>
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....
Professor Eduardo Mendes edumendes@gmail.com
CRUD COMPLETO!!!
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
Professor Eduardo Mendes edumendes@gmail.com
Obrigado!

PHP e MySQL para iniciantes

  • 1.
    Módulo 3 PHP &MySQL Professor: Eduardo Mendes
  • 2.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Testando Configuração •  Iniciar o EasyPHP –  Iniciar  Programas  EasyPHP
  • 4.
    Professor Eduardo Mendesedumendes@gmail.com Testando Configuração •  Executar algum browser (navegador) –  http://localhost
  • 5.
    Professor Eduardo Mendesedumendes@gmail.com Testando Configuração •  Os arquivos serão salvos na pasta www do EasyPHP –  C:Arquivos de programasEasyPHP1-8www
  • 6.
    Professor Eduardo Mendesedumendes@gmail.com MySQL
  • 7.
    Professor Eduardo Mendesedumendes@gmail.com O programa mysql •  Iniciar EasyPHP •  C: •  cd Arquivos* •  cd Easy* •  cd mysql •  cd bin •  mysql –u root -p
  • 8.
    Professor Eduardo Mendesedumendes@gmail.com mysql
  • 9.
    Professor Eduardo Mendesedumendes@gmail.com Conceitos •  Linhas •  Registros •  Tabelas •  Campos •  Id
  • 10.
    Professor Eduardo Mendesedumendes@gmail.com Tabela típica de dados: Agenda Telefônica
  • 11.
    Professor Eduardo Mendesedumendes@gmail.com Cursos da FA7
  • 12.
    Professor Eduardo Mendesedumendes@gmail.com
  • 13.
    Professor Eduardo Mendesedumendes@gmail.com Criando um Banco de Dados CREATE DATABASE nomeDoBanco;
  • 14.
    Professor Eduardo Mendesedumendes@gmail.com Usando um BD específico USE nomeDoBanco;
  • 15.
    Professor Eduardo Mendesedumendes@gmail.com
  • 16.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Inserindo Valores INSERT INTO agendaTelefonica VALUES( 0, ‘Eduardo', ‘Mendes', ‘eduardo@fa7.edu.br', '123567‘ );
  • 18.
    Professor Eduardo Mendesedumendes@gmail.com Recuperando os dados •  Eu quero visualizar todos os registro de uma tabela SELECT * FROM nomeDaTabela;
  • 19.
    Professor Eduardo Mendesedumendes@gmail.com No MySQL SELECT * FROM agendaTelefonica;
  • 20.
    Professor Eduardo Mendesedumendes@gmail.com O programa mysql •  Iniciar EasyPHP •  C: •  cd Arquivos* •  cd Easy* •  cd mysql •  cd bin •  mysql –u root -p
  • 21.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Sucesso na conexão
  • 27.
    Professor Eduardo Mendesedumendes@gmail.com Erro na conexão
  • 28.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com O programa mysql •  Iniciar EasyPHP •  C: •  cd Arquivos* •  cd Easy* •  cd mysql •  cd bin •  mysql –u root -p
  • 30.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Adicionando uma condição WHERE SELECT nome, sobrenome FROM agendaTelefonica WHERE nome=‘Eduardo’;
  • 33.
    Professor Eduardo Mendesedumendes@gmail.com WHERE e operadores de comparação •  WHERE nomeDoCampo = ‘xxxxx’; •  WHERE nomeDoCampo > XXXX; •  WHERE nomeDoCampo < ‘XXXX’; •  WHERE nomeDoCampo >= XXXX; •  WHERE nomeDoCampo <= ‘XXXX’;
  • 34.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    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.
    Professor Eduardo Mendesedumendes@gmail.com Uma agenda Simples
  • 42.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Mais consultas •  Todos os registros da tabela que ‘a’, ‘b’, ‘c’, ‘d’
  • 45.
    Professor Eduardo Mendesedumendes@gmail.com Coringa  % •  Selecione todos os registros que começam com a letra ‘A’; SELECT * FROM agendaTelefonica WHERE primeironome LIKE ‘A%’;
  • 46.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Múltiplas condições SELECT * FROM agendaTelefonica WHERE nome LIKE ‘J%’ AND sobrenome LIKE ‘%o%’;
  • 48.
    Professor Eduardo Mendesedumendes@gmail.com Inserindo Valores no MySQL INSERT INTO agendaTelefonica VALUES( 0, ‘Eduardo', ‘Mendes', ‘eduardo@fa7.edu.br', '123567‘ );
  • 49.
    Professor Eduardo Mendesedumendes@gmail.com Inserindo um valor via PHP
  • 50.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Recuperando o valor via PHP
  • 53.
    Professor Eduardo Mendesedumendes@gmail.com Inserindo Valores a partir De Um Formulario
  • 54.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com O action
  • 56.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com A agenda completa
  • 58.
    Professor Eduardo Mendesedumendes@gmail.com Procura por nome específico •  Como encontrar um único nome caso seja preciso?
  • 59.
    Professor Eduardo Mendesedumendes@gmail.com A solução  Caixa de pesquisa
  • 60.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com O campo de texto antes da tabela <form method="post"> <p>Pesquisa: <input type="text" name="nome" /></p> </form>
  • 62.
    Professor Eduardo Mendesedumendes@gmail.com Alterando Dados - UPDATE •  Altere o sobrenome para ‘Oliveira’ onde o nome é igual ‘Eduardo’ UPDATE agendaTelefonica SET sobrenome=‘Oliveira’ WHERE nome = ‘Eduardo’;
  • 63.
    Professor Eduardo Mendesedumendes@gmail.com Excluindo linhas DELETE •  Delete da tabela agendaTelefonica o registro de todos os ‘Eduardo’ DELETE FROM agendaTelefonica WHERE nome = ‘Eduardo’;
  • 64.
    Professor Eduardo Mendesedumendes@gmail.com Banco de Dados da FA7 CREATE DATABASE fa7; USE DATABASE fa7;
  • 65.
    Professor Eduardo Mendesedumendes@gmail.com Professor •  Id •  Nome •  Titulação •  Idade •  Disciplina
  • 66.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com E se eu quiser mais sobre Disciplina???? •  Carga Horaria •  Curso
  • 69.
    Professor Eduardo Mendesedumendes@gmail.com Disciplina •  Id •  Nome •  Carga Horária •  Curso
  • 70.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Relacionando Tabelas
  • 73.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Executando um script no PhpMyAdmin
  • 77.
    Professor Eduardo Mendesedumendes@gmail.com Executando os scripts para o banco de dados fa7 •  Baixe os arquivos
  • 78.
    Professor Eduardo Mendesedumendes@gmail.com Verifique o banco fa7 agora • SELECT * FROM curso; • SELECT * FROM disciplina; • SELECT * FROM professor;
  • 79.
    Professor Eduardo Mendesedumendes@gmail.com Combinando Tabelas SELECT * FROM professor, disciplina;
  • 80.
    Professor Eduardo Mendesedumendes@gmail.com JOIN
  • 81.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Impondo uma condição SELECT * FROM professor, disciplina WHERE professor.disciplina= disciplina.id;
  • 83.
    Professor Eduardo Mendesedumendes@gmail.com Dando um ‘apelido’ para Tabela SELECT * FROM professor p, disciplina d;
  • 84.
    Professor Eduardo Mendesedumendes@gmail.com Apelido == ALIAS SELECT p.nome, d.nome FROM professor p, disciplina d WHERE p.disciplina = d.id;
  • 85.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Tabela curso
  • 87.
    Professor Eduardo Mendesedumendes@gmail.com Relacionando tabelas SELECT * FROM curso c, disciplina d WHERE d.curso = c.id;
  • 88.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Selecionando todos os professores SELECT nome FROM professor;
  • 91.
    Professor Eduardo Mendesedumendes@gmail.com Selecionando todos os professores sem repetir nomes SELECT DISTINCT nome FROM professor;
  • 92.
    Professor Eduardo Mendesedumendes@gmail.com Quantos professores existem na tabela? SELECT COUNT(*) FROM professor;
  • 93.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Nossa lista de professores  listarProfessor.php
  • 108.
    Professor Eduardo Mendesedumendes@gmail.com Como apresentar os campos em maiúsculas?
  • 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.
  • 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.
    <? $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.
    <form method=“post” action=“alterar.php”> <inputtype=“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.
    <? $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.
    Professor Eduardo Mendesedumendes@gmail.com Tornando os campos maiúsculos <table> <? while ($campo = mysql_fetch_field($resultado)){ print " <th>" . strtoupper($campo->name) ."</th>n"; } ?>
  • 116.
    Professor Eduardo Mendesedumendes@gmail.com Alterando o valor no BD com PHP
  • 117.
    Professor Eduardo Mendesedumendes@gmail.com Criando uma página para Alterar
  • 118.
    Professor Eduardo Mendesedumendes@gmail.com Isto é o queremos
  • 119.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Logando em uma aplicação
  • 126.
    Professor Eduardo Mendesedumendes@gmail.com Quais as necessidades para esta tela?
  • 127.
    Professor Eduardo Mendesedumendes@gmail.com Uma tabela de usuários •  Id •  Nome •  Login •  Senha –  Quais as características de um login?
  • 128.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com
  • 130.
    Professor Eduardo Mendesedumendes@gmail.com No PhpMyAdmin Teste para ver a mensagem de erro
  • 131.
    Professor Eduardo Mendesedumendes@gmail.com Quais os campos?
  • 132.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com
  • 134.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com
  • 137.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Criar um link para editarCurso •  Como poderíamos criar um link para editar o curso? •  Que link seria esse?
  • 139.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Adicionando o link <tr> <td><?= $row['id'] ?></td> <td> <a href='editarCurso.php?id=<?= $row['id'] ?>'> <?= $row['nome'] ?> </a> </td> </tr>
  • 141.
    Professor Eduardo Mendesedumendes@gmail.com O editarCurso.php
  • 142.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com alterarCurso.php
  • 145.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com O condicional ternário $acao = ([condição]) ? “agir” : “parar” ; true false
  • 148.
    Professor Eduardo Mendesedumendes@gmail.com Nosso fluxo
  • 149.
    Professor Eduardo Mendesedumendes@gmail.com Novo Fluxo
  • 150.
    Professor Eduardo Mendesedumendes@gmail.com Um novo fluxo
  • 151.
    Professor Eduardo Mendesedumendes@gmail.com Um novo fluxo
  • 152.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com O que já temos
  • 159.
    Professor Eduardo Mendesedumendes@gmail.com O que precisaremos fazer? Este botão direciona o navegador para a página de editar/inserir
  • 160.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com As 2 maneiras de acessar a página de Edição
  • 163.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com CRUD COMPLETO!!!
  • 168.
    Professor Eduardo Mendesedumendes@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.
    Professor Eduardo Mendesedumendes@gmail.com Obrigado!