• Nenhum resultado encontrado

Utilizando PHP MySQL

N/A
N/A
Protected

Academic year: 2021

Share "Utilizando PHP MySQL"

Copied!
53
0
0

Texto

(1)

Utilizando Php e Mysql

Nasair Júnior da Silva nasair@solis.coop.br

(2)

Conteúdo

Objetivos O que é SQL/MySql O ambiente MySql A linguagem SQL O que é PHP Utilização da Linguagem

Conexão com Banco de Dados Exemplos

(3)

Objetivos do curso

Conhecer o PHP

Conhecer a linguagem SQL

Conhecer as funções de conexão e interação com banco de dados Mysql, utilizando a linguagem PHP

Exercitar o uso das funções PHP e linguagem SQL

(4)

O que é SQL/MySql

SQL é um padrão de linguagem a ser utilizado por sistemas de banco de dados, para gerenciamento e armazenamento de dados.

MySQL é um servidor de banco de dados SQL multi-usuário e permite múltiplos acessos simultâneos.

MySQL é uma implementação cliente-servidor.

Manipula um número ilimitado de usuários

simultâneos;

Alta velocidade de execução;

Trabalha com diferentes plataformas: Unix, Windows etc.;

(5)

O que é SQL/MySql (2)

Disponibiliza diversos tipos de dados: INT ,

FLOAT, DOUBLE, CHAR, VARCHAR, TEXT,

BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET e ENUM;

Alta velocidade na execução de joins usando multi-join otimizado;

Suporte completo a operadores e funções nas cláusulas SELECT e WHERE;

Suporte às cláusulas GROUP BY e ORDER BY e a funções de grupo (COUNT(), AVG(), STD(),

(6)

O que é SQL/MySql (3)

Suporte a LEFT OUTER JOIN com a sintaxe ANSI SQL e ODBC;

Sistema de privilégios flexível, simples, eficiente e seguro.

Tabelas de disco sob a forma B-tree rápidas com compressão de índices;

Permite 16 índices por tabela;

Escrita em C e C++. Testada com diferentes compiladores;

Possui um sistema de alocação de memória extremamente rápido;

(7)

O que é SQL/MySql (4)

DELETE, INSERT, REPLACE e UPDATE

devolvem o número de linhas afetadas pelo comando;

Nomes de funções não entram em conflito com nomes de tabelas ou colunas;

Algumas novas funcionalidades: Gatilhos (triggers)

Stored procedures Visões (views)

Joins otimizados, ... http://www.mysql.com

(8)

Histórico do MySql

1979: Unireg: Monty Widelious criou o Unireg, um banco de dados não-SQL para grandes

tabelas

1994: Monty iniciou o desenvolvimento de um SGBD baseado no Unireg; API baseado no mSQL, um gerenciado open source (não era muito bom para grandes tabelas)

1996: Mysql 3.11.1 lançado em binário para Linux e Solaris

(9)

Tipos de dados do MySql

CHAR(M): strings de tamanho fixo entre 1 e 255 caracteres

VARCHAR(M): strings de tamanho flexível entre 1 e 255 caracteres

INT(M): números inteiros entre -2147483648 e 2147483647

FLOAT [(M,D)]: números decimais com D casas decimais

DATE: armazena informação relativa a datas. O formato default é 'YYYY-MM-DD'

(10)

Tipos de dados do MySql(2)

TEXT/BLOB: strings entre 255 e 65535

caracteres. A diferença entre TEXT e BLOB é que no primeiro o texto não é sensível ao caso e no segundo sim

SET: conjunto de valores strings

ENUM: conjunto de valores strings, difere do SET pois só são armazenados valores

(11)

Especificação de colunas

Primary Key (Chave Primária): usada para diferenciar um registro do outro. Cada

registro, desta forma, não pode ter a mesma chave primária

Foreign Key (Chave Estrangeira): usada para relacionar uma coluna de uma tabela com a coluna de outra tabela

Auto_increment: uma coluna com esta opção é automaticamente incrementada quando da inserção de um registro

NOT NULL: não permite a inserção de valores nulos

(12)

Sistema de Privilégios

A tabela host determina quais os hosts que estão habilitados a acessar o servidor MySQL

A tabela user determina os usuários que podem acessar o servidor e suas senhas de

identificação a partir de um host

A tabela db contém as informações relativas a qual banco de dados um usuário de um certo host pode acessar

(13)

O Ambiente MySQL

Para acessar o ambiente mysql

#mysql ­h host ­u username ­p databasename

Para criar um banco de dados

mysql> create database NomeDoBanco;

Para utilizar o banco recém criado: mysql> use NomeDoBanco

(14)

Iniciando...

Visualizar todos os bancos de dados mysql> show databases;

Visualizar as tabelas do banco atual mysql> show tables;

Visualizar os campos de uma tabela

mysql> show fields from NomeDaTabela; ou:

(15)

Criando uma tabela

Mysql>CREATE TABLE empresas ( codigo integer auto_increment, nome varchar(50),

primary key(codigo)) type=innodb;// Mysql>CREATE TABLE pessoas (

codigo integer auto_increment,

nome varchar(50), empresa integer, salario real, primary key(codigo),

foreign key(empresa) references empresas (codigo)) type=innodb;//

(16)

Inserindo valores

INSERT INTO empresas ( nome) VALUES ('Solis'),('Unisinos'),('Univates'),('Governo FEDERAL');//

INSERT INTO pessoas (nome, empresa, salario) VALUES ('Nasair Silva',1,100),('Joice',1,200), ('Daniel',1,300),('Leonardo',2,400),

('Andréa','2',500),('Cesar',3,600),

('Viviane',3,700),('Roberto Jefferson',4,3000), ('Luis Inácio',4,5000);//

INSERT INTO pessoas(nome, empresa, salario) VALUES ('Frederico',10,1000);

(17)

Alterando uma tabela

mysql>desc pessoas;

mysql>alter table pessoas add data_nascimento date;

mysql>alter table pessoas add telefone int; mysql>alter table pessoas drop telefone;

mysql>alter table pessoas add telefone varchar (10);

mysql>alter table pessoas modify telefone varchar(15);

mysql>alter table pessoas change telefone fone varchar(15);

(18)

Exibindo, Apagando, Alterando

mysql>SELECT * FROM pessoas;

mysql>DELETE FROM pessoas WHERE codigo=8;

mysql>UPDATE pessoas SET salario=6000 WHERE codigo=9;

mysql>SELECT nome, salario FROM pessoas; mysql>UPDATE pessoas SET salario = 500

WHERE salario < 500;

mysql>DELETE FROM pessoas WHERE salario >5000;

(19)

Criando usuários

mysql> insert into mysql.user (Host, User,

Password) values ('localhost', 'aluno', password ('teste123'));

mysql> flush privileges;

mysql> grant all privileges on curso.* to aluno@localhost identified by 'teste123'; mysql> revoke DELETE on curso.* FROM

aluno@localhost;

● ALTER, CREATE, DELETE, DROP, SELECT,

(20)

Apagando banco e tabela

mysql>drop table teste;

Query OK, 0 rows affected (0.00 sec) mysql>show tables;

mysql>drop database teste;

Query OK, 0 rows affected (0.00 sec) mysql>show databases;

(21)

O que é PHP

oficialmente "PHP: Hypertext Preprocessor"

PHP é uma linguagem de script no lado do servidor (server-side) embutida no HTML, portanto é necessário instalar o interpretador da linguagem no servidor de Web.

Pode ser utilizada como script local

Extensão php-gtk para programação local Site: http://br.php.net

(22)

O que o PHP pode fazer ?

Tudo o que outras linguagens fazem...

● Coleta dados e gera formulários dinâmicos ● Conversa de forma nativa com uma ampla

variedade de Bancos de Dados

● Tem acesso a protocolos como IMAP, SNMP,

NNTP, POP3, HTTP...

(23)

Histórico do PHP

Criada em 1994 por Rasmus Lerdorf

Em 1995 a primeira versão utilizada por outras pessoas chamada Personal Home Page Tools Ainda em 1995 o interpretador é reescrito e

chamado PHP/FI, esta é a versão 2.

Em 1997, com um time de desenvolvedores surge a versão 3.

Em seguida a versão 4, muito mais rebusta. Versão 5, com várias alterações e melhorias

(24)

Primeiros Passos

Tags que identificam o PHP <?php codigo; ?> <? codigo; ?> <script language=”php”> codigo; </script>

(25)

Verificando a instalação

<?php

phpinfo(); ?>

(26)

Olá, Mundo

echo, print: Ecreve um output na tela echo('Olá Mundo!');

// : Comentário de uma linha // Isto é um comentário

/* */ : Bloco de comentário /* Isto é

(27)

Exemplo - exemplo1.php

<HTML><HEAD>

<TITLE>Script de exemplo</TITLE> </HEAD>

<BODY>

<CENTER>Bem-vindo ao script de exemplo:</CENTER> <?

$hoje = date("d-m-Y");

echo "<BR><BR>Hoje é: $hoje."; ?>

</BODY> </HTML>

(28)

Variáveis

Os tipos de variáveis mais usados são: Caractere: 'a', 'b', 'Z'

Inteiro: 0, 1, 2

String: "PHP É legal!" Real/Flutuante: 15.5

Iniciam SEMPRE com o caracter $ Não é necessário declaração

(29)

Operadores

+ Adição - Subtração * Multiplicação / Divisão . Concatenação = Atribuição simples

+= Atribuição com adição % Resto da divisão

(30)

Operadores(2)

-= Atribuição com subtração += Atribuição com adição

*= Atribuição com multiplicação /= Atribuição com divisão

.= Atribuição com concatenação == Igual a

(31)

Operadores(3)

=== Igual e mesmo tipo

!== Conteúdo e tipo diferente < Menor que > Maior que <= Menor ou igual a >= Maior ou igual ++ Incremento -- Decremento

(32)

Arrays ou Matrizes

podem ser vistos como:

uma forma de lista indexada de variáveis (array unidimensional),

como uma tabela (array bidimensional)

podem conter qualquer tipo de dados (caractere, inteiro, decimal, string)

Inicialização

$produto[0]="Batatas"; ou

(33)

Variáveis especiais

$_GET: valores recebidos pela URL ou por formulário, com método GET

$_POST: valores recebidos via formulário, via método POST

$_REQUEST: combinação do $_GET e $_REQUEST

$_SERVER: contém valores de configuração do servidor

$_COOKIE: contém cookies registrados $_SESSION: contém sessões registradas

(34)

Exemplo - exemplo2.php

Utilizar a seguinte url:

/exemplo2.php?nome=Nasair&idade=18

<?php

echo “Nome Informado: “.$_GET['nome']; echo “<br />Idade: “.$_GET['idade'];

(35)

Transformação de tipos

$a = 10; # $a é um inteiro

$b = (double) $a; # $b é um double

(int), (integer) Converte para inteiro (real),(double),(float) Converte para double

(string) Converte para string

(array) Converte para array

(36)

Condicionais

se "tenho dinheiro" "Vou ao Cinema" se "chover" "Fico em casa" senão "Vou à praia" if($dinheiro > 0)

echo “Vou ao cinema”;

if($chuva)

echo “Fico em casa”; else

(37)

Exercício

Criar um arquivo que receba a variável idade pela url e imprima:

se a idade for maior ou igual a 21: “Maior de idade – civil”

se a idade for maior ou igual a 18: “Maior de idade – penal”

se a idade for menor que 18: “Menor de idade”

(38)

Laços de repetição

Enquanto(“Não tiver 60 anos”) “Não paro de trabalhar” Enquando(“Há dados na tabela”)

“Exiba estes dados” Comece na primeira

pessoa e pare na 30a, sempre Exibindo os dados de cada uma

while($idade < 60) trabalha_Peao(); While(LedadosTabela()) echo $dados; For($i=1; $i<=30;$i++) echo $dados;

(39)

Condicionais(2)

Caso Mês For 1 Caso Mês for 2

então é “Janeiro”; então é “Fevereiro”; ...

swith($mes) {

case '1': echo “Janeiro”; break; case '2': echo “Fevereiro”; break; }

(40)

Funções

É um bloco de código que se declara para que possa usar-se sempre que for necessário

Podem retornar valores através do comando RETURN

Podem receber parâmetros por valor e por referência (acrescenta-se & na frente da variável).

(41)

Funções(2)

Function mesExtenso($mes) {

switch($mes) {

case '1': return “Janeiro”; case '2': return “Fevereiro”; }

(42)

Formulários

Quando é feito um submit de um formulário para um script PHP, o PHP é capaz de entender o

que lhe é enviado, e transformar um formulário num conjunto de variáveis com a informação

enviada

<form action="verifica.php">

Digite o seu nome: <input type=text name=nome /><br /> Digite o seu telefone: <input type=text name=fone /><br /> Digite o sua data nasc.: <input type=text name=data /><br /> <input type=submit />

(43)

Formulários(2)

<?php

echo “Os dados que você digitou são:”; echo “<br />Nome: “.$_GET['nome']; echo “<br />Telefone: “.$_GET['fone']; echo “<br />Data: “.$_GET['data'];

echo “<br />Sua idade é: “.idade($_GET['data']).” anos”; function idade($data)

{

$idade = date('Y') – substr($data,-4); return $idade;

} ?>

(44)

Formulários(3)

text - Origina uma variável com o nome da caixa. Essa variável é uma string e contím a

informação digitada na caixa.

checkbox - Origina uma variável com o nome da checkbox. Esta variável contém valor se estiver ativa ou não contém se inativa.

radio - Origina uma variável com o nome do radio. Esta variável contém o valor do radio selecionado.

select - Origina uma variável com o nome do

select. Contém o valor do OPTION selecionado. textarea - Origina uma variável com o nome da

textarea. Contém o valor introduzido na mesma.

(45)
(46)

Conexões com banco

Estabelecer a conexão

$con = mysql_connect

(“host”,”usuario”,”senha”); Selecionar banco de dados

mysql_select_db(“banco”,$con); Enviar a consulta $q = mysql_query(“SELECT...”,$con); Receber os dados $dados = mysql_result($q,$LINHA,$COLUNA); Fechar a conexão mysql_close($con);

(47)

Conexões – exemplo3.php

<?php

$con = mysql_connect

(“localhost”,”root”,”root”) or die(“Não foi possível fazer a conexão”);

mysql_select_db(“curso”,$con) or die(“Não foi possível selecionar o banco”);

$q = mysql_query(“SELECT nome FROM pessoas”,$con);

echo mysql_result($q,0,0); mysql_close($con);

(48)

Conexões – Funções básicas

Número de linhas em uma consulta (envio de dados)

int mysql_affected_rows($q);

Número de linhas em uma consulta (recebimento de dados)

int mysql_num_rows($q);

Receber toda a linha de uma consulta array mysql_fetch_row($q);

Receber toda a linha, em matriz associativa array mysql_fetch_assoc($q);

(49)

Conexões-exemplo4.php

<?php

$con = mysql_connect(“localhost”,”root”,”root”) or die(“Não foi possível fazer a conexão”);

mysql_select_db(“curso”,$con) or die(“Não foi possível selecionar o banco”);

$q = mysql_query(“SELECT nome, empresa FROM pessoas”,$con);

$num = mysql_num_rows($q); for($i=0;$i<$num;$i++)

{

list($nome,$empresa) = mysql_fetch_row($q); echo “<br />Nome: $nome ($empresa)”;

}

mysql_close($con); ?>

(50)

Conexões-exemplo5.php

<?php

$con = mysql_connect(“localhost”,”root”,”root”); mysql_select_db(“curso”,$con);

$q = mysql_query(“SELECT codigo, nome FROM empresas”,$con);

$num = mysql_num_rows($q);

echo “<select name=empresa>”; for($i=0;$i<$num;$i++)

{

list($codigo,$nome) = mysql_fetch_row($q);

echo “<option value=$codigo>$nome</option>”; }

echo “</select>”; mysql_close($con);

(51)

Cuidados e segurança

Sempre “tratar” os dados recebidos via formulário

Ao utilizar senha, mantê-la criptografada (sha1 ou md5)

Utilizar permissões do banco de dados: nunca ter permissões “adicionais”

SQLInjection

HTTPS – Servidor Seguro – SSL Usar senha no banco de dados

(52)

Exercícios

Acrescentar no primeiro formulário um campo que recebe o salário e um campo de seleção para selecionar a empresa da pessoa

Fazer com que esse formulário insira os dados na tabela pessoas

Fazer uma tela de listagem das pessoas, exibindo o nome, empresa e idade, além de ter um link para editar e outro para apagar

Ordenar esta listagem pelo nome da pessoa Criar um filtro nesta listagem (pela empresa)

(53)

Obrigado!!!!

Nasair Júnior da Silva

Referências

Documentos relacionados

O PEAASAR I colocou o enfoque na solução dos problemas existentes na denominada “alta” através da implementação de soluções integradas com sistemas de

A elaboração das atividades pautou-se em quatro pontos importantes enumerados por Sasseron (2011) para fundamentar o planejamento de Sequências de Ensino

É perceptível, desta forma, o constante aumento do aprofundamento dos personagens: os “príncipes” têm agora não só nome e falas, mas personalidades bem desenvolvidas,

Podem treinar tropas (fornecidas pelo cliente) ou levá-las para combate. Geralmente, organizam-se de forma ad-hoc, que respondem a solicitações de Estados; 2)

Como irá trabalhar com JavaServer Faces voltado para um container compatível com a tecnologia Java EE 5, você deverá baixar a versão JSF 1.2, a utilizada nesse tutorial.. Ao baixar

No entanto, para aperfeiçoar uma equipe de trabalho comprometida com a qualidade e produtividade é necessário motivação, e, satisfação, através de incentivos e política de

a) política nacional de desenvolvimento do turismo; b) promoção e divulgação do turismo nacional, no país e no exterior; c) estímulo às iniciativas públicas e privadas de

Descrever características do perfil e do tempo de experiência profissional dos gestores da ANTAQ; Identificar as características da equipe liderada pelos gestores da ANTAQ;