Docstoc

php_mysql

Document Sample
php_mysql Powered By Docstoc
					Utilizando Php e Mysql



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

   V Seminário de Desenvolvimento em Software Livre
                                                         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
Exercícios
             V Seminário de Desenvolvimento em Software Livre
                                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


         V Seminário de Desenvolvimento em Software Livre
                                 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.;

           V Seminário de Desenvolvimento em Software Livre
                       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(),
 SUM(), MAX() e MIN());

          V Seminário de Desenvolvimento em Software Livre
                        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;
           V Seminário de Desenvolvimento em Software Livre
                       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
          V Seminário de Desenvolvimento em Software Livre
                                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
2005: Mysql 5.0.4


          V Seminário de Desenvolvimento em Software Livre
                 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'


         V Seminário de Desenvolvimento em Software Livre
            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
 previamente especificados




          V Seminário de Desenvolvimento em Software Livre
                  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
          V Seminário de Desenvolvimento em Software Livre
                         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


          V Seminário de Desenvolvimento em Software Livre
                               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


          V Seminário de Desenvolvimento em Software Livre
                                                  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:
mysql> desc NomeDaTabela;
          V Seminário de Desenvolvimento em Software Livre
                             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;//
         V Seminário de Desenvolvimento em Software Livre
                                     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);


           V Seminário de Desenvolvimento em Software Livre
                          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);
          V Seminário de Desenvolvimento em Software Livre
      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;
mysql>SELECT nome, salario FROM pessoas;
         V Seminário de Desenvolvimento em Software Livre
                                      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,
    INSERT, UPDATE,


           V Seminário de Desenvolvimento em Software Livre
                 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;

          V Seminário de Desenvolvimento em Software Livre
                                                 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

            V Seminário de Desenvolvimento em Software Livre
                   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...

●   Pode ser utilizado em programação local


            V Seminário de Desenvolvimento em Software Livre
                                    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


          V Seminário de Desenvolvimento em Software Livre
                                       Primeiros Passos
Tags que identificam o PHP
<?php
 codigo;
?>
<?
 codigo;
?>
<script language=”php”>
 codigo;
</script>
            V Seminário de Desenvolvimento em Software Livre
                       Verificando a instalação




<?php
phpinfo();
?>




             V Seminário de Desenvolvimento em Software Livre
                                                   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 é
  um bloco de comentário */

            V Seminário de Desenvolvimento em Software Livre
                       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>
             V Seminário de Desenvolvimento em Software Livre
                                                          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
O nome pode começar por qualquer letra ou _


             V Seminário de Desenvolvimento em Software Livre
                                                Operadores

+   Adição
-   Subtração
*   Multiplicação
/   Divisão
.   Concatenação
=   Atribuição simples
+= Atribuição com adição
%   Resto da divisão

         V Seminário de Desenvolvimento em Software Livre
                                           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

=!   Diferente de

          V Seminário de Desenvolvimento em Software Livre
                                          Operadores(3)

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

         V Seminário de Desenvolvimento em Software Livre
                                  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
       $produto=array("Batatas");
           V Seminário de Desenvolvimento em Software Livre
                                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

          V Seminário de Desenvolvimento em Software Livre
                      Exemplo - exemplo2.php

Utilizar a seguinte url:
/exemplo2.php?nome=Nasair&idade=18


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




            V Seminário de Desenvolvimento em Software Livre
                       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
(object)                        Converte para objeto


           V Seminário de Desenvolvimento em Software Livre
                                              Condicionais

se "tenho dinheiro"                 if($dinheiro > 0)
  "Vou ao Cinema"                       echo “Vou ao cinema”;


se "chover"                         if($chuva)
  "Fico em casa"                        echo “Fico em casa”;
senão                               else
  "Vou à praia"                         echo “Vou à praia”;




          V Seminário de Desenvolvimento em Software Livre
                                                       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”

          V Seminário de Desenvolvimento em Software Livre
                                Laços de repetição

Enquanto(“Não tiver 60 while($idade < 60)
 anos”)
                         trabalha_Peao();
  “Não paro de
   trabalhar”
                       While(LedadosTabela())
Enquando(“Há dados
 na tabela”)             echo $dados;
  “Exiba estes dados”
Comece na primeira                 For($i=1;
 pessoa e pare na 30a,              $i<=30;$i++)
 sempre Exibindo os                    echo $dados;
 dados de cada uma
         V Seminário de Desenvolvimento em Software Livre
                                          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;
}


            V Seminário de Desenvolvimento em Software Livre
                                                         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).




          V Seminário de Desenvolvimento em Software Livre
                                                     Funções(2)

Function mesExtenso($mes)
{
    switch($mes)
    {
        case '1': return “Janeiro”;
        case '2': return “Fevereiro”;
    }
}


             V Seminário de Desenvolvimento em Software Livre
                                                   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 />
</form>


             V Seminário de Desenvolvimento em Software Livre
                                              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;
}
?>
               V Seminário de Desenvolvimento em Software Livre
                                         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.
          V Seminário de Desenvolvimento em Software Livre
                               Formulários(4)




V Seminário de Desenvolvimento em Software Livre
                           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);
         V Seminário de Desenvolvimento em Software Livre
                   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);
?>
            V Seminário de Desenvolvimento em Software Livre
            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);
          V Seminário de Desenvolvimento em Software Livre
                         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);
?>
               V Seminário de Desenvolvimento em Software Livre
                         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);
?>             V Seminário de Desenvolvimento em Software Livre
                         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


          V Seminário de Desenvolvimento em Software Livre
                                                     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)


          V Seminário de Desenvolvimento em Software Livre
     Obrigado!!!!

   Nasair Júnior da Silva

      nasair@solis.coop.br



V Seminário de Desenvolvimento em Software Livre

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:7
posted:9/24/2011
language:
pages:53