abr
05
2009
0

Minicurso PHP: 3ª Parte – Introdução ao PHP: Inclusão de arquivos – include() e require()

Olá Pessoal,

Começando a semana! Para finalizar o básicão do PHP, vamos trabalhar com inclusão de arquivos usando PHP. É comum precisarmos incluir um arquivo dentro de outro, seja para anexar um trechos de código, biblioteca de funções, declaração de variáveis e constantes, ou por questões de layout e organização da página. Pense em uma página com a seguinte estrutura: topo, menu lateral, conteúdo e rodapé. Digamos que a estrutura topo, menu e rodapé nunca mude, ou seja, apenas o conteúdo varia de uma página para outra. Existe mesmo a necessidade de repetir o código de topo, menu e rodapé para todas as páginas? Pois se fizermos desse jeito, será necessário atualizar todas as páginas do site, cada vez que mexernos em um item de menu por exemplo… Meio chato, né? Com as técnicas de inclusão de arquivos, podemos criar um único arquivo “menu.php” e incluí-lo em todas as páginas do site, de maneira que todas as modificações executadas nesse arquivo afetem o site como um todo. Legal, né?

A primeira instrução para inclusão de arquivos em PHP que veremos é a “include()”. Com o uso de include(), podemos inserir o código de um arquivo dentro de outro, basta passar o caminho do arquivo a ser incluído como parâmetro da função. Caso o arquivo não exista, include() retornará uma advertência (warning). Todo o código do arquivo incluído estará disponível para o arquivo principal da linha onde foi chamado a instrução “include()” em diante: variáveis, classes, funções etc. Veja a função include em ação:

Arquivo FUNCOES.PHP

1
2
3
4
5
6
7
8
9
10
11
12
<?php
function calculaMedia() {
$args = func_get_args();
$numArgs = func_num_args();
$soma = 0;
foreach ($args as $val) {
$soma += $val;
}
$media = $soma / $numArgs;
return $media;
}
?>

Arquivo PRINCIPAL.PHP

1
2
3
4
5
6
<?php
//Torno disponível para a página principal.php todos os códigos de funcoes.php
include (funcoes.php);
//Chamo uma função declarada em funcoes.php
echo calculaMedia(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
?>

Existe uma outra função chamada “require()”, cujo comportamento é o mesmo de include(), com um único diferencial: em caso de erro (arquivo inexistente) “include()” gera um warning (mensagem de advertência), já “require()” gera uma mensagem de FATAL ERROR, interrompendo a execução do programa principal. E por fim, temos as funções “include_once()” e “require_once()”. Elas fazem a mesma coisa que suas correspondentes, com um único diferencial: caso o arquivo passado como parâmetro já tenha sido incluído, essas funções não irão refazer a operação, ou seja inserir uma segunda vez o mesmo arquivo. É muito útil para inclusões feitas dentro de loops, evitando a repetição do mesmo código. Por questões de performance, evitamos usar a função “require_once()”.

Bem, é isso aí. Brinquem bastante com os conceitos básicos do PHP vistos até aqui. A partir de amanhã entraremos em uma nova unidade do nosso minicurso: passagem de parâmetros entre páginas. Trataremos de formulários em PHP, GET, POST e envio de emails. Aproveitem bem e até a próxima.

Abraços,
Diego.

abr
03
2009
0

Minicurso PHP: 3ª Parte – Introdução ao PHP: Funções

Olá,

Hoje vamos falar sobre funções no PHP. Como declará-las? O que é escopo de variável? Variáveis locais, globais etc. A função é uma das principais estruturas de uma linguagem de programação, com elas economizamos muitas linhas de código, podendo reutilizar linhas e mais linhas, sem precisar reescrevê-las. Em resumo, o uso de funções nos poupa muito “trabalho de corno”. A idéia principal é: existem certas tarefas que nós executamos de forma rotineira dentro de um sistema. Um exemplo? Uma verificação de segurança para os dados enviados a partir de um formulário web, impedindo que um hacker invada nosso sistema via SQL INJECTION (eu vou falar disso mais pro fim do minicurso… Prometo!!!), por exemplo. Ou seja, temos que verificar cada campo do formulário e validá-lo… Digamos que nosso site seja pequeno, e possua só… hum… 200 campos de formulário. E aí, quer escrever o mesmo código de verificação de segurança duzentas vezes? Claro que não! É bem mais fácil criar uma rotina que faça essa verificação, e apenas alimentá-la com os dados a serem validados. Ou seja, montamos o procedimento uma única vez, e aí apenas alimentamos ele com os dados para validação, ele valida e retorna o conteúdo todo formatado e redondo. Pois é… Uma função serve pra isso: modulariza nosso sistema, permitindo que reutilizemos trechos de códigos que executem determinadas ações que possam ser utilizadas em locais distintos do nosso programa.

DECLARANDO UMA FUNÇÃO

A função é a unidade básica para dotar nosso código de reusabilidade. Seu funcionamento é o seguinte: recebe um ou mais parâmetros (argumentos), processa esses parâmetros e retorna um dado. Funções são nomeadas livremente, e seguem as mesmas regras de nomenclatura para variáveis (inicia com uma letra, corta espaços etc.). A sintaxe para declaração de uma função no PHP é a seguinte: function nome_da_funcao($parametro01, $parametro02, …, $parametroN) { //bloco de instruções }

O operador “function” é obrigatório, e devemos especificá-lo antes do nome da função. Os argumentos da função são passados entre parênteses, separados por vírgulas. Os argumentos são variáveis com um escopo de ação limitado ao trecho de código entre os delimitadores “{” e “}”. O bloco de instruções é o conjunto de códigos a ser executado pela função. Essas instruções serão executadas gerando um resultado (um valor inteiro, string, array etc.), que deve ser retornado para o módulo ativador da função (quem a chama). Esse valor será retornado por meio da cláusula “return”. Veja a declaração de uma função, assim como sua chamada:

1
2
3
4
5
6
7
8
<?php
function calculaMedia($n1, $n2, $n3, $n4) {
$media = ($n1 + $n2 + $n3 + $n4) / 4;
return $media;
}
 
echo calculaMedia(5, 4, 3, 2);
?>

A função calculaMedia é declarada na linha 2 e chamada na linha 6, os argumentos são passados na chamada da função, recebidos e tratados. O valor resultante do cálculo da média é retornado para a chamada da função por meio da cláusula “return”. Assim sendo, a função executa todas as tarefas entre “{” e “}”, devolvendo apenas o resultado dessas tarefas, nesse caso, a média aritmética de quatro notas.

VARIÁVEIS LOCAIS E GLOBAIS

Experimente imprimir fora da função (ou seja, fora dos delimitadores “{” e “}”) a variável “$media”. Não apareceu nada, né? Pois é… Variáveis declaradas dentro de uma função possuem o que chamamos de escopo local. São chamadas variáveis locais aquelas cujo escopo se resume a função a qual foram declaradas. Se referenciarmos uma variável local fora da função onde ela foi declarada, não teremos acesso ao seu valor, pois para o resto do programa, aquela variável não existe… Veja o código abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
//Exemplo 01: Tento imprimir uma variável local fora do contexto de uma função
function calculaMedia($n1, $n2, $n3, $n4) {
            $media = ($n1 + $n2 + $n3 + $n4) / 4;
            return $media;
        }
 
        echo $media;
 
//Exemplo 02: Crio uma variável $media fora do contexto da função.
$media = 10;
function calculaMedia($n1, $n2, $n3, $n4) {
            $media = ($n1 + $n2 + $n3 + $n4) / 4;
            return $media;
        }
 
        echo $media;
 
//Exemplo 03: Imprimo o resultado da função e a variável $media
$media = 10;
function calculaMedia($n1, $n2, $n3, $n4) {
            $media = ($n1 + $n2 + $n3 + $n4) / 4;
            return $media;
        }
 
        echo $media."<br />".calculaMedia(5, 6, 7, 8);
?>

Percebeu que o PHP trata de forma diferenciada as variáveis declaradas dentro e fora de uma função? E por que quando declarei $media, em um escopo mais amplo que o local, ela não sobrescreveu a variável local homônima? Simples: variáveis locais predominam dentro do escopo da função. Ok, até aqui todos entenderam. E se eu quiser tornar disponível para todo o programa uma variável declarada dentro de uma função, sem precisar retorná-la? Ou declarar uma variável fora do escopo local, e ainda assim torná-la disponível dentro da função? A solução para isso é declarar uma variável como “global”. Variáveis globais são aquelas acessadas a partir de qualquer ponto da aplicação. Para declarar uma variável global, basta usar a cláusula “global”. Veja o código:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
//Declarando variáveis globais
$somaNotas = 10;
 
function calculaMedia() {
            global $somaNotas;
            $media = $somaNotas / 4;
            return $media;
        }
 
        echo calculaMedia();
?>

PASSANDO PARÂMETROS

Existem duas formas de passar parâmetros para uma função: por valor e por referência. A passagem de parâmetros por valor é o modo default do PHP: nessa situação os parâmetros são tratados como variáveis locais da função, independente do seu valor externo. Veja um exemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function calculaMedia($n1, $n2, $n3, $n4) {
$media = ($n1 + $n2 + $n3 + $n4) / 4;
$n1 = $n3;
$n2 = $n4;
return $media;
        }
        $n1 = 5;
$n2 = 6;
$n3 = 7;
$n4 = 8;
calculaMedia($n1, $n2, $n3, $n4);
        echo $n1, $n2, $n3, $n4;
?>

Ok. As variáveis manipuladas dentro de uma função não alteram valores de variáveis externas. Agora, com a passagem de parâmetros por referência, todas as alterações realizadas na variável dentro da função são válidas para o escopo externo à função. Para indicar a passagem de parâmetros por referência, é preciso utilizar o operador & antes do parâmetro. Veja como fica:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$n1 = 5;
$n2 = 6;
$n3 = 7;
$n4 = 8;
function calculaMedia(&$n1, &$n2, &$n3, &$n4) {
$media = ($n1 + $n2 + $n3 + $n4) / 4;
$n1 = $n3;
$n2 = $n4;
return $media;
        }
calculaMedia($n1, $n2, $n3, $n4);
        echo $n1, $n2, $n3, $n4;
?>

CALCULANDO O NÚMERO DE ARGUMENTOS DE UMA FUNÇÃO

O PHP permite nos permite passar N argumentos para uma função, mesmo que eu não saiba quantos e quais são esses parâmetros. Ou seja, eu posso resgatar os parâmetros de uma função de forma dinâmica. A função func_get_args() retorna um array com todos os argumentos da função. Já a função func_num_args() retorna o número de argumentos que essa função possui. Veja o código abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function calculaMedia() {
$args = func_get_args();
$numArgs = func_num_args();
$soma = 0;
foreach ($args as $val) {
$soma += $val;
}
$media = $soma / $numArgs;
return $media;
        }
echo calculaMedia(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
?>

Durante todo o minicurso trabalharemos com funções, sejam as nativas da linguagem ou aquelas que criaremos durante os tutoriais. Estudem bem o tema e até amanhã com o último tutorial dessa parte sobre introdução ao PHP: requisição de arquivos com as funções include() e require(). Até lá!

Abraços,
Diego.

mar
31
2009
1

Minicurso PHP: 3ª Parte – Introdução ao PHP: Estruturas de Repetição ou Iteração (loops)

Olá Pessoal,

Com um puta atraso de uns quatro dias (minha alergia à poeira é uma M***), posto o conteúdo referente à estruturas de repetição (loops) no PHP. Durante essa semana irei postar uma lista de exercícios para vocês praticarem todo o conteúdo do blog, e o índice desse minicurso (para terem uma idéia clara do que virá depois), e estou fazendo alguns testes para implementar vídeo-aulas (aquele vídeo-tutorial de instalação do Apache, PHP e MySQL foi o começo). [MODE TYPE="CHANTAGEM_EMOCIONAL"]É claro que quanto mais vocês comentarem os posts, seja com reclamações, sugestões, dúvidas e elogios (de preferências :-) , maior é o meu incentivo em desenvolver esse material… [/MODE]

Voltando aos loops… Essas são estruturas extremamente importantes e relevantes para o contexto de programação. O uso inteligente de loops nos poupa “muito trabalho de corno” (Nota do Autor – um amontoado de código desnecessário), e só esse motivo já é mais do que suficiente para você absorver tudo o que puder do assunto. Vamos então! Não vou explicar o que é um loop etc., isso é escopo do minicurso de Lógica de Programação (em desenvolvimento), e conhecer o básico de seu funcionamento é pré-requisito para esse minicurso online de PHP. Se não sabe o que é um loop, espere até o minicurso de Algoritmo (não tarda), ou dê uma pesquisada na web sobre o tema.

FOR

A primeira estrutura de repetição que estudaremos é o FOR. Ele consiste de um contador, uma condição de saída e um operador de incremento ou decremento. A idéia básica de seu funcionamento é: PARA um dado valor do CONTADOR, e uma DADA CONDIÇÃO VERDADEIRA, execute um bloco de instruções e AUMENTE/DIMINUA o CONTADOR. Veja na prática:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
/* Primeiro exemplo - "$i = 0" verifica o valor do contador, iniciado em 0;
"$i < 10" é a condição de permanência do LOOP (roda enquanto $i for menor que 10);
"$i++" é o operador de incremento, ele acrescenta um ao valor do contador
no fim de cada volta (é a mesma coisa que $i = $i + 1) */
for ($i = 0; $i < 10; $i++) {
echo "$i; ";
}
 
/* Segundo exemplo - Usando um for para percorrer um array */
$nomes = array("João", "Maria", "Juca", "Ana", "Daniela");
$tamNomes = count($nomes); //count() é uma função que retorna o tamanho de um array
for ($i = 0; $i < $tamNomes; $i++) {
echo $tamNomes[$i]."; ";
}
?>

WHILE

Uma outra estrutura de repetição muito usada no PHP é o WHILE. O WHILE é uma mistura de loop com condicional. Seu processo de avaliação de condicionais é bem parecido com um IF. Funciona da seguinte forma: ENQUANTO uma dada CONDIÇÃO for VERDADEIRA, ele irá executar repetidamente um bloco de instruções. Veja na prática:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
//Exemplo 01
$num = 5;
while ($num > 1) {
echo $num;
$num--;
}
 
//Exemplo 02
$idade = 14;
$ano = 2009;
while ($idade <= 18) {
echo $ano." - ".$idade."<br />";
$idade++;
$ano++;
}
 
?>

Percebam que a cada volta do loop é feita uma verificação. Caso o valor retornado na condição seja TRUE o loop executará o bloco de instruções entre { }, reiniciando a verificação. Como incrementamos ou decrementamos as variáveis, em um dado momento a condição irá retornar FALSE, parando a execução do loop. O WHILE é muito usado para varreduras de resources (arquivos, consulta ao banco de dados etc.).

DO-WHILE

Existe uma variante da estrutura WHILE, onde a verificação é feita no fim do loop, ao invés do começo, e com isso garantindo a execução do bloco de instruções uma vez ao menos. Essa estrutura é conhecida como DO-WHILE. Como eu disse, a sintaxe é muito parecida com o WHILE, a única coisa que muda é o momento onde se faz a verificação. Veja o código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
/* WHILE - Verificação antes da execução do código
Como $num não é menor que 1, o bloco de instruções não será executado */
$num = 5;
while ($num < 1) {
echo $num;
$num++;
}
 
/* DO-WHILE - Verificação depois da execução do código
O bloco de instruções será executado uma vez, e somente
depois será verificado que $num é maior que 1 */
do {
echo $num;
$num++;
} while ($num < 1)
?>

Entendeu? Ainda não? Relaxa, é bem simples: como dizia um amigo meu – no WHILE perguntamos para depois atirar, no DO-WHILE a gente atira e depois pergunta… :-P

Quando usar um ou outro? Bem, se o bloco de instruções só pode ser executado caso a condição seja TRUE, então usamos o WHILE. Agora, se é preciso executar as instruções uma vez ao menos, independente da condição, aí usamos o DO-WHILE.

FOREACH

O FOREACH é uma estrutura de repetição específica para arrays. Sua sintaxe é uma versão simplificada do FOR. Na prática, ele desmembra um array em seus itens, tratando cada índice e valor de forma isolada, por meio da cláusula AS. O FOREACH possui duas formas de aplicação, uma simplificada e outra mais completa. Apresentaremos ambas, porém a versão completa é mais usual. Veja o FOREACH na prática:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$nomes = array("João", "Maria", "Juca", "Ana", "Daniela");
 
//Exemplo 1: Versão compacta - Não trabalha com a chave do elemento
foreach ($nomes as $valor) {
echo "$valor - ";
}
 
//Exemplo 2: Versão completa - Trabalha com a chave e valor do elemento
foreach ($nomes as $chave => $valor) {
echo "$chave => $valor;<br />";
}
?>

Reparem que “$chave” corresponde ao índice do elemento, e valor é o conteúdo desse elemento. Com essa estrutura podemos fazer inúmeras coisas interessantes no PHP. O FOREACH é um loop para percorrer ESPECIFICAMENTE arrays e objetos (a partir da versão 5 do PHP), ou seja se você tentar usá-lo em qualquer outra situação, o PHP retornará uma mensagem de erro. Em resumo: você pode usar outros loops para percorrer arrays, mas não pode usar o FOREACH para percorrer nada além de arrays e objetos.

CONTINUE E BREAK

Em algumas situações precisamos parar a execução do loop e: ir para a próxima iteração (volta do loop); sair definitivamente do loop. Nessas situações usamos os comandos CONTINUE e BREAK. O BREAK nós vimos no SWITCH-CASE (tutorial passado): serve para interromper a estrutura de repetição. Já o CONTINUE serve para encerrarmos a volta atual do loop e ir para a próxima. Veja ambos em ação:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$nomes = array("João", "Maria", "Juca", "Ana", "Daniela");
 
//Exemplo 1: Continue
foreach ($nomes as $chave => $valor) {
    if ($valor == "Ana") {
        continue;
    }
    else {
        echo "$chave => $valor;<br />";
    }
}
 
 
//Exemplo 2: Break
foreach ($nomes as $chave => $valor) {
    if ($valor == "Ana") {
           break;
    }
    else {
        echo "$chave => $valor;<br />";
    }
}
?>

Bem, é isso. Mais uma etapa cumprida! Pesquise um pouco mais sobre loops e pratique. Amanhã falaremos sobre FUNÇÕES. Na quinta, para fechar o ciclo básico do PHP abordaremos o tema “requisição de arquivos – include() e require()”. Até lá.

Abraços,
Diego.

mar
26
2009
1

Minicurso PHP: 3ª Parte – Introdução ao PHP: Estruturas Condicionais ou de Controle

Olá Pessoal,

Gostando do minicurso? Espero que sim. Contribuam para o Projetista Digital postando suas dúvidas, comentários e sugestões na seção de comentários. Gostamos muito de recebê-los. Aviso dado, voltemos com a programação normal.

Conforme prometido trataremos hoje de estruturas condicionais em PHP. As condicionais nos permitem dotar os nossos programas de poder decisório. Ou seja, é possível tomar uma decisão ou outra, baseado numa condição ser ou não satisfeita.

IF – ELSE IF – ELSE

A estrutura condicional básica do PHP é o “if”. O IF possui um bloco de instruções delimitadas por { e }, a ser executado caso uma condição em parênteses seja ou não satisfeita. Veja o código abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$a = 5;
$b = 10;
 
//Verifico se os números são iguais
if ($a == $b) {
    echo "São iguais";
}
 
//Verifico se são diferentes
if ($a <> $b) {
    echo "São diferentes";
}
 
//Verifico se não são idênticos
if ($a > $b) {
    echo "A é maior do que B";
}
?>

Reparou que o bloco de código entre { e } só é executado caso a condição dada entre parênteses retorne um valor lógico TRUE? Pois é. O IF funciona dessa forma: analisa uma ou várias condições entre parênteses, caso o booleano retornado seja TRUE, ele executa o código entre chaves ( { e } ), caso o valor seja FALSE ele não executa nada… E se eu quiser executar um outro bloco de instruções caso a condição retorne FALSE? Para isso usamos uma outra estrutura chamada ELSE. O ELSE possui seu próprio de bloco instruções, delimitados por { e }, que somente será executado caso a condição analisada no IF retorne FALSE. É uma estrutura opcional para complementar o IF. A idéia geral é SE condição for verdadeira EXECUTE esse bloco de instruções CASO CONTRÁRIO execute esse outro bloco de instruções. Veja o código abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$a = 5;
$b = 10;
 
//Verifico se os números são iguais
if ($a == $b) {
    echo "São iguais";
}
else {
    echo "São diferentes";
}
 
//Verifico se são diferentes
if ($a <> $b) {
    echo "São diferentes";
}
else {
    echo "São iguais";
}
 
//Verifico se não são idênticos
if ($a > $b) {
    echo "A é maior do que B";
}
else {
    echo "B é maior do que A";
}
?>

Simples, né? Vamos continuar. E se eu precisar analisar uma série de condições simultaneamente? Vamos analisar as alternativas descritas nos códigos abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
$nome = "Diego";
 
//Analiso várias expressões em uma única condicional
if ($nome == "Diogo" || $nome == "Rafael" || "$nome == "Diego") {
    echo "Nome válido";
}
else {
    echo "Entre com um nome válido";
}
 
//Analiso várias condições em condicionais distintas, usando a estrutura ELSE IF (Senão Se) para analisar condicionais alternativas
if ($nome == "Diogo") {
    echo "Seu nome é Diogo";
}
else if ($nome == "Rafael") {
    echo "Seu nome é Rafael";
}
else if ("$nome == "Diego") {
    echo "Seu nome é Diego";
}
else {
    echo "Entre com um nome válido";
}
 
//Analiso as condições fazendo uso de IFs aninhados
$idade = 23;
$programador = TRUE;
 
if ($nome == "Diogo" || $nome == "Rafael" || "$nome == "Diego") {
if($idade > 18) {
        if ($programador) {
                echo "Seu nome é $nome, é maior de idade e trabalha como Programador";
        }
}
}
?>

Repararam no funcionamento dos IFs aninhados? As condições IDADE e PROGRAMADOR somente serão verificados se a primeira condição (NOME) for satisfeita. Esse tipo de estrutura é muito útil para projetos futuros. Outra novidade é o ELSE IF. Isso permite que analisemos várias condições, executando blocos de instruções diferentes para cada uma delas.

OPERADOR TERNÁRIO

Existe ainda uma forma compacta de escrever a estrutura condicional básica (IF – ELSE): o operador ternário. O operador ternário funciona da seguinte forma – $variavel = (condição) ? “valor 1″ : “valor 2″, onde $variavel é o nome da variável que receberá o valor, “condição” é uma condição a ser avaliada, “valor 1″ é o valor atribuído à “$variavel” caso a condição retorne TRUE, e “valor 2″ é o valor atribuído à “$variável” caso a condição retorne FALSE. Veja o código abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$idade = 18;
 
//Iremos reescrever essa condicional em uma linha apenas, usando operador ternário
if ($idade >= 18) {
$status = "Maior de Idade";
}
else {
$status = "Menor de Idade";
}
echo $status;
 
//Usando o operador ternário
$status = ($idade >= 18) ? "Maior de Idade" : "Menor de Idade";
echo $status;
?>

Legal, né? E bem simples de entender. O operador ternário nada mais é do que uma forma resumida e compacta de escrever um IF – ELSE para armazenar um valor em uma variável. Percebam que ele tem uma aplicação bem específica: atribuição de valores. Não é um substituto do IF – ELSE, apenas uma alternativa para um dado tipo de aplicação.

SWITCH – CASE

A terceira forma de trabalhar com condicionais em PHP é o comando switch. Nada mais é do que a comparação de uma variável a uma série de valores. Seu funcionamento corresponde a uma série de IFs um embaixo do outro. A estrutura do switch é a seguinte:

switch (variável) {
case valor1:
Bloco de Instruções
case valor2:
Outro bloco de instruções

case valor n:
Bloco de Instruções N
default:
Bloco de Instruções Default
}

Em cada cláusula “case” analisamos um valor possível para “variável”, e caso seja retornado TRUE na comparação executamos o bloco de instruções correspondente. Caso todos os “case” retornem FALSE é executada a cláusula “default” (parecido com o ELSE). Veja um exemplo prático de switch:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$acao = "inserir";
 
switch ($acao) {
case "inserir":
echo "A ação escolhida foi INSERIR";
case "atualizar:
echo "A ação escolhida foi ATUALIZAR";
case "apagar":
echo "A ação escolhida foi APAGAR";
default:
echo "Escolha uma ação válida";
}
?>

Ops… Que foi? O swtich não funcionou? Relaxa… Quando não aplicamos o comando “break” ao fim de cada “case”, o switch não entende que precisa parar naquele ponto, e continua executando o código até o fim (cláusula “default”). Agora veja como ficará o nosso código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$acao = "inserir";
 
switch ($acao) {
case "inserir":
echo "A ação escolhida foi INSERIR";
break;
case "atualizar:
echo "A ação escolhida foi ATUALIZAR";
break;
case "apagar":
echo "A ação escolhida foi APAGAR";
break;
default:
echo "Escolha uma ação válida";
}
?>

Agora sim. Tudo funcionando! Pois bem, com isso fechamos o tema estruturas condicionais. Amanhã falaremos sobre LOOPS e sábado sobre FUNÇÕES. Fechando esse ciclo de INTRODUÇÃO AO PHP. Já na segunda falaremos sobre passagem de parâmentros entre páginas (GET e POST), formulários PHP e envio de emails com PHP. Portanto, continuem visitando o Projetista Digital diariamente.

Abraços,
Diego.

mar
24
2009
0

Minicurso PHP: 3ª Parte – Introdução ao PHP: Tipos de Dados e Operadores

Olá Pessoal,

Dando continuidade com o nosso minicurso online PHP para Iniciantes, vamos tratar hoje de Tipos de Dados e Operadores em PHP. É um assunto importante, espero que aproveitem bastante.

TIPOS DE DADOS

O PHP suporta oito tipos de dados: string, inteiro, booleano (lógico), float, arrays, objetos, resource e NULL. Existem também pseudo-tipos que não serão abordados nesse tutorial. Uma coisa importante sobre tipos PHP: essa não é uma linguagem tipada, ou seja, não definimos os tipos de dados na declaração de variáveis e constantes. Em PHP os tipos são definidos automaticamente no momento da execução do código. Vamos descrever rapidamente cada um dos tipos listados acima:

String

Uma string é uma cadeia de caracteres alfanuméricos. Sempre que precisarmos trabalhar com texto, utilizaremos variáveis do tipo string. O PHP possui uma série de funções para manipulação de strings. Estudaremos esse assunto em uma etapa posterior desse mini-tutorial. Para declarar strings podemos usas apóstrofos ou aspas duplas. Veja o código abaixo:

1
2
3
4
5
6
<?php
//Declarando strings com aspas simples (apóstrofos)
$nome = 'Diego';
//Declarado strings com aspas duplas
$sobrenome = "Marques";
?>

Inteiro e Float (Double ou Ponto Flutuante)

O tipo inteiro (integer) engloba todos os números do conjunto Z (números inteiros). Admite valores negativos e positivos. Usamos valores inteiros para armazenar números e realizar cálculos numéricos. O tipo Float engloba o tipo inteiro, e admite valores do conjunto dos números reais, ou seja, fracionários. Números fracionários são divididos por “.”, por exemplo: 2.5, ou 2.3333. Veja o código abaixo:

1
2
3
4
5
6
<?php
$preco = 30;
$desconto = 2.5;
$total = $preco - ($preco * $desconto/100);
echo $total;
?>

Booleanos (Lógicos)

Valores lógicos ou booleanos são aqueles que expressam o resultado de uma sentença lógica: verdadeiro ou falso. Para especificar um booleano, usaremos as palavras-chave TRUE ou FALSE. Valores lógicos são utilizados como verificação em condicionais e alguns loops. Veja o código abaixo:

1
2
3
4
5
6
7
8
9
10
<?php
$maiorIdade = TRUE;
//Verifico se é maior de idade
if ($maiorIdade) {
    echo "Pode entrar";
}
else {
    echo "Volte";
}
?>

Arrays

Arrays são listas de dados, armazenados na memória. Nos arrays associamos dados de diferentes tipos à chaves, e através delas resgatamos cada valor individualmente. Um array admite diferentes tipos dados em suas posições, sendo possível criar um array misto. Dos tipos suportados por um array, listamos: strings, numéricos, booleanos, arrays (podemos salvar um array dentro de outro) e objetos. Veja abaixo como declarar um array:

1
2
3
4
5
6
<?php
$nomes = array("Huguinho", "Zezinho", "Luisinho");
$perfil = array("João" => array("Contador", 26, 5.500, true), "Maria" => array("Professora", 30, 2.200, false));
var_dump($nomes);
print_r($perfil);
?>

Resource

Resource (recurso) é um tipo de dados especial no PHP que faz uma referência a um recurso externo. Algumas funções especiais do PHP usam recursos, como por exemplo mysql_connect() – conexão ao banco de dados, e fopen() – abrir arquivos. Como um resource sustenta manipuladores de arquivos não é possível converter nenhum valor para um resource.

OPERADORES

O PHP possui uma série de operadores para manipulação de variáveis. Vamos estudá-los rapidamente:

Operadores Aritméticos

Lembra da aritmética básica do colégio? Pois esses operadores no permitem fazer a mesma coisa:

$a + $b Efetua a soma de valores numéricos;
$a – $b Efetua a subtração de valores numéricos;
$a * $b Multiplica valores numéricos;
$a / $b Divide valores numéricos;
$a % $b Retorna o resto da divisão de $a por $b.

Veja o código abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$a = 5;
$b = 10;
echo $a + $b;
echo "<br />";
echo $a - $b;
echo "<br />";
echo $a * $b;
echo "<br />";
echo $a / $b;
echo "<br />";
echo $a % $b;
echo "<br />";
?>

Operadores de Comparação

Os operadores de comparação nos permitem, como o próprio nome diz, comparar dois valores. O resultado dessa comparação será um valor lógico (TRUE ou FALSE). Veja a tabela dos operadores de atribuição:

$a == $b Igual Verdadeiro (TRUE) se $a é igual a $b.
$a === $b Idêntico Verdadeiro (TRUE) se $a é igual a $b, e eles são do mesmo tipo.
$a != $b Diferente Verdadeiro se $a não é igual a $b.
$a <> $b Diferente Verdadeiro se $a não é igual a $b.
$a !== $b Não idêntico Verdadeiro de $a não é igual a $b, ou eles não são do mesmo tipo.
$a < $b Menor que Verdadeiro se $a é estritamente menor que $b.
$a > $b Maior que Verdadeiro se $a é estritamente maior que $b.
$a <= $b Menor ou igual Verdadeiro se $a é menor ou igual a $b.
$a >= $b Maior ou igual Verdadeiro se $a é maior ou igual a $b.

Veja esses operadores em ação:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
$a = 5;
$b = 10;
 
//Verifico se os números são iguais
if ($a == $b) {
    echo "São iguais";
}
 
//Verifico se são idênticos
if ($a === $b) {
    echo "São idênticos";
}
 
//Verifico se são diferentes
if ($a <> $b) {
    echo "São diferentes";
}
 
//Verifico se não são idênticos
if ($a !== $b) {
    echo "São diferentes";
}
 
//Verifico se $a é maior do que $b
if ($a > $b) {
    echo "A é maior do que B";
}
 
//Verifico se $a é menor do que $b
if ($a < $b) {
    echo "A é menor do que B";
}
 
//Verifico se $a é maior ou igual a $b
if ($a >= $b) {
    echo "A é maior ou igual a B";
}
 
//Verifico se $a é menor ou igual a $b
if ($a <= $b) {
    echo "A é menor ou igual a B";
}
?>

Em comparações, o PHP entende o valor 0 (zero) como equivalente ao valor lógico FALSE. Para evitar problemas em situações onde 0 deva ser entendido como um inteiro, dentro de uma comparação, usamos saídas como as de baixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$a = 0;
//O valor ZERO de $a será entendido como FALSE na comparação
if ($a == false) {
echo "É falso";
}
 
//Verificando se $a é idêntico a FALSE, evito a confusão com o valor 0
if ($a === false) {
echo "Não é idêntico";
}
 
//Verificando se $a é idêntico a ZERO
if ($a === 0) {
echo "É falso";
}
?>

Operadores de Atribuição

Operadores de atribuição servem para apontar um valor à uma variável, ou seja, atribuem valores à variáveis. O operador de atribuição básico é o “=”, podemos combiná-lo com operadores aritméticos, de string e arrays. Veja abaixo alguns exemplos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
//Atribuo o valor 5 à variável $a
$a = 5;
 
//Incremento $a em 10
$a += 10;
 
//Decremento $a em 10
$a -=10;
 
//Multiplico $a por 10
$a *= 10;
 
//Divido $a por 10
$a /= 10;
?>

Operadores Lógicos

Manipulam valores lógicos, combinando expressões a serem agrupadas em testes condicionais. Veja a tabela de operadores lógicos:

$a and $b E Verdadeiro (TRUE) se tanto $a quanto $b são verdadeiros.
$a or $b OU Verdadeiro se $a ou $b são verdadeiros.
$a xor $b XOR Verdadeiro se $a ou $b são verdadeiros, mas não ambos.
! $a NÃO Verdadeiro se $a não é verdadeiro.
$a && $b E Verdadeiro se tanto $a quanto $b são verdadeiros.
$a || $b OU Verdadeiro se $a ou $b são verdadeiros.

Veja alguns códigos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$a = 5;
$b = 10;
 
//Verifico se $a < $b e $a é par
if (($a < $b) && ($a % 2 === 0)) {
echo "A é menor do que B e é par";
}
 
$maiorIdade = true;
if ($maiorIdade || $a > $b) {
echo "Uma das opções é falsa";
}
 
$menorIdade = false;
if (!$menorIdade) {
echo "É maior de idade";
}
 
?>

No tutorial de amanhã entraremos no tema estruturas condicionais. Até lá.

Abraços,
Diego.

mar
23
2009
0

Minicurso PHP: 3ª Parte – Introdução ao PHP: Variáveis, Constantes, Imprimindo dados na tela e Comentários

Olá Pessoal,

Já vimos para que serve o PHP, e o que precisamos para fazê-lo funcionar. Vamos agora adentrar no fantástico mundo da programação Server-Side, usando o PHP como linguagem principal. Todo mundo já está com o PHP funcionando direitinho, né? Ok, então vamos escolher um software para edição de código PHP. Muita gente usa o Dreamweaver como ferramenta de desenvolvimento HTML e CSS, e por isso acaba mantendo o hábito também para o PHP e outras linguagens. Bem, eu não uso o Dreamweaver. Alguns motivos práticos, outros éticos (não é interessante depender de uma ferramenta cuja licença é demasiado cara, me obrigando a pirateá-la) e alguns técnicos. Em resumo, dava pra escrever uma série de artigos sobre o porque não gosto do Dreamweaver, mas esse não é o foco do blog. Quer usar o Dreamweaver? Use. Não faz diferença pro andamento do minicurso. Agora, se quer começar com o pé direito, recomendo em primeiro lugar a minha opção profissional: Aptana Studio. O Aptana é um ótimo editor, ao meu ver melhor que o Dreamweaver, com vários recursos interessantes que fazem bastante diferença conforme sua vida profissional avança, e os projetos tornam-se mais complexos. Além de possuir um ótimo editor de XHTML, CSS e JavaScript (bem superior ao do Dreamweaver), e você pode baixar plugins para trabalhar com outras linguagens: Phyton, Ruby e possui um servidor Ajax. E é gratuito.

Existem outros editores de PHP como PHP Editor, Notepad++, PHP Expert Editor, TSWebEditor, Maguma Studio etc. A decisão é por sua conta. Mas se eu fosse vocês ficaria com o Aptana… :-P

VARIÁVEIS E CONSTANTES

Bem, vamos começar a escrever código PHP!!!! O PHP é uma linguagem a ser embutida em código HTML, ou seja, no servidor misturamos código HTML e PHP numa mesma página. O PHP será interpretado e gerará código HTML, e somente HTML será enviado para o browser. Essa é a lógica de funcionamento dum servidor web. Bem, o HTML funciona na base de etiquetas (tags). E o PHP? Bem, o PHP é uma linguagem de scripts e para ser interpretado corretamente pelo servidor, seus códigos precisam estar entre delimitadores. Veja os delimitadores em funcionamento:

1
2
3
4
<?php
//Tudo o que estiver entre "<?php" e "?>" será interpretado como código PHP a ser processado pelo servidor
echo "Oi Mundo!";
?>

Legal, onde escrever os scripts já sabemos. Agora, como declarar variáveis em PHP? É um procedimento bem simples. Basta escrever $nome_da_variavel = valor. As variáveis em PHP iniciam com um sinal de $, seguido do nome da variável. A nomenclatura de variáveis em PHP segue o padrão de outras linguagens: deve iniciar com letras, não aceita espaços etc. Use sempre nomes sugestivos para as variáveis, evitando futuras dores de cabeça seja no desenvolvimento do aplicativo ou na manutenção do mesmo. Veja o código abaixo:

1
2
3
4
5
6
7
<?php
$nome = "Jonas da Silva";
$emprego = "Estagiário Desenvolvimento";
$salario = 450.00;
$idade = 17;
$maiorIdade = false;
?>

Repararam que todas as variáveis tem nomes claros, que as distinguem de qualquer outra variável do programa? Fica bem mais fácil trabalhar desse jeito. Algumas regras básicas para nomenclatura de variáveis: não use números no início das variáveis, espaços em branco e caracteres especiais; coloque nomes claros e sugestivos, com menos de doze caracteres (legibilidade de código); busque usar letras minúsculas, palavras separadas por “_” ou somente a primeira letra de cada palavra em maiúsculo, se a variável for composta por mais de uma palavra.

Além de variáveis o PHP nos permite trabalhar com CONSTANTES (espaços na memória cujo valor não muda durante a execução do programa, ao contrário das variáveis que possuem valores voláteis). Para usar constantes no PHP precisaremos da função define(”NOME_DA_CONSTANTE”, “Valor_da_Constante”). Escrevemos constantes normalmente em caixa alta. Outro fato importante: os nomes das constantes NÃO são precedidos de $, como nas variáveis. Veja um exemplo de declaração de constantes:

1
2
3
4
<?php
define ("CPMF", 0.05);
define ("LITRO_GASOLINA", 2.37);
?>

É importante que vocês saibam: o PHP é case-sensitive. Ou seja, diferencia letras maiúsculas de minúsculas. Isso quer dizer o que? Na prática é assim: $nome e $Nome não são a mesma coisa. São variáveis completamente diferentes… Se você declara $nome e manda imprimir $Nome, acontecerá um erro, pois $Nome ainda não existe… É preciso ter muito cuidado, pois nomes de funções, variáveis, arrays, constantes etc., todos seguem a mesma regra: há diferença entre caixa alta e baixa. Muita gente se esquece desse pequeno detalhe e gasta horas até descobrir onde está o erro… :-P

Existem casos onde precisaremos de variáveis cujo nome seja modificável em função de uma dada situação. É o que chamamos de variable variables (variáveis variantes). Nada mais é do que usar o conteúdo de uma variável A como nome de uma variável B. Ou seja, se $A = “teste”, a variável B se chamará $teste. Legal né? Na verdade é muito útil em uma série de situações. Vocês verão conforme programarem seus primeiros projetos… Tá, e como usamos variáveis variantes? Simples: basta usar dois $$. Veja o código:

1
2
3
4
5
<?php
$a = "mensagem";
$$a = "Oi mundo, estou usando variáveis variantes";
echo $mensagem; //O valor impresso será: Oi mundo, estou usando variáveis variantes
?>

Outra coisa importante: quando atribuímos um valor de uma variável “$a” à “$b”, criamos um segundo espaço na memória, onde $b é uma variável independente, ainda que possua o mesmo valor de $a, qualquer modificação em $b não alterará em nada o valor de $a. Veja o código a seguir:

1
2
3
4
5
6
7
8
<?php
$a = "Diego";
$b = $a;
$b = "Maria";
echo $a; //imprime Diego
echo "<br />";
echo $b; //imprime Maria - ou seja, qualquer alteração em $b não modifica $a, apesar de termos igualado seus valores na linha 3
?>

E se quisermos relacionar $a e $b de forma que, qualquer mudança em $b reflita em $a, e vice-versa? Ou seja, se eu quiser relacionar as duas variáveis ao mesmo espaço de memória (variáveis são espaços de memória)? É simples, basta adicionar um & antes de atribuir $a à $b. Veja como ficaria o código:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$a = "Diego";
$b = &$a;
$b = "Maria";
echo $a; //imprime Maria
echo "<br />";
echo $b; //imprime Maria - ou seja, qualquer alteração em $b reflete $a, e vice-versa
$a = "João";
echo $a; //imprime João
echo "<br />";
echo $b; //imprime João
?>

IMPRIMINDO DADOS NA TELA

O PHP possui uma série de comandos de saída de dados, ou seja, para imprimir conteúdo na tela do usuário. O primeiro deles você já viu nos códigos acima: é o comando “echo”. Esse comando imprime o conteúdo de uma ou várias constantes e variáveis na tela do usuário. Usamos “echo” praticamente em todas as vezes que precisamos imprimir conteúdo na tela. Veja o código abaixo:

1
2
3
4
5
6
7
<?php
$nome = "Diego Marques";
echo "Seu nome é ", $nome, ".<br />";
echo 5;
define ("CPMF", 0.05);
echo "A CPMF é de ", CPMF;
?>

Podemos imprimir strings na tela do usuário com a função print(). Veja o código:

1
2
3
4
5
<?php
$nome = "Diego Marques";
print($nome);
print("<p>Seja bem vindo!</p>");
?>

A função var_dump() apresenta o conteúdo de uma variável de forma detalhada, apresentando o tipo e o valor da variável. No caso da análise de um array ou objeto, a função imprimirá todas as posições ou atributos, de forma organizada e alinhada. Veja um exemplo:

1
2
3
4
5
6
7
8
<?php
$nome = "Diego";
var_dump($nome);
$sobrenome = " Marques";
var_dump($nome, $sobrenome);
$nomes = array("Huguinho", "Zezinho", "Luisinho");
var_dump($nomes);
?>

A função print_r() possui um comportamento idêntico ao de var_dump: exibir o conteúdo de uma variável de forma detalhada. O único diferencial é: print_r() apresenta o conteúdo em um formato com maior legibilidade, facilitando o trabalho em certos casos. Veja o código abaixo:

1
2
3
4
5
6
7
8
<?php
$nome = "Diego";
print_r($nome);
$sobrenome = " Marques";
print_r($nome, $sobrenome);
$nomes = array("Huguinho", "Zezinho", "Luisinho");
print_r($nomes);
?>

Tanto var_dump() quando print_r() são funções extremamente úteis para debug de código, uma vez que detalham o conteúdo de variáveis para o programador.

COMENTÁRIOS

Assim como em qualquer outra linguagem o PHP admite o uso de comentários, seções do código que não serão interpretadas pelo servidor web, permitindo que o programador faça anotações no próprio código. É importante realizar comentários no código indicando funcionalidades, início e fim de seções, explicações de scripts etc., para que você não se perca em seu script, e facilite o trabalho de futuras manutenções. Veja o código abaixo:

1
2
3
4
5
6
7
8
9
10
<?php
//Esse é um comentário de uma linha no PHP. Todo o conteúdo escrito nessa linha não será interpretado pelo servidor
 
/*
    Esse é o comentários de várias
    linhas no PHP. Todo o conteúdo
    escrito entre os delimitadores não
    será interpretado pelo servidor.
*/
?>
mar
20
2009
0

Minicurso PHP: 2ª Parte – Configurando Apache + PHP + MySQL

INSTALANDO O APACHE + PHP + MySQL no Windows XP – Módulos separados

Muita gente antes de mim já escreveu tutoriais de instalação e configuração da tríade PHP, Apache e MySQL. Inclusive eu sempre recomendo aos meus alunos o seguinte tutorial do site Linha de Código (uma ótima leitura, diga-se de passagem). Não irei reinventar a roda e criar o meu próprio tutorial. Seria perda de tempo. Ao invés disso vou postar uma vídeo-aula da instalação e configuração dessa tríade, seguindo o artigo do Linha de Código. Em primeiro lugar baixe os programas necessários:

Apache – http://www.baixaki.com.br/download/apache-for-windows.htm
PHP – http://www.baixaki.com.br/download/php.htm
MySQL – http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-noinstall-5.1.32-win32.zip/from/http://mysql.cce.usp.br/

Agora assista as vídeo-aulas e configure a tríade:


Instalando e Configurando PHP + Apache + MySQL – Parte 1 from Diego Marques on Vimeo.


Instalando e Configurando PHP + Apache + MySQL – Parte 2 from Diego Marques on Vimeo.

USANDO UM INSTALADOR AUTOMÁTICO

Se você não conseguir instalar a tríade com o tutorial anterior, pode fazer uso de um instalador automático: um software que instala automaticamente todo o pacote. Se por um lado fica mais fácil instalar o pacote completo, por outro você tem o fato de nem sempre as versões do Apache, PHP e MySQL serem as mais atuais. Mas é uma boa forma de começar a trabalhar, tendo em vista a importância de aprender a usar os módulos de forma separada no futuro. Veja abaixo a lista dos principais instaladores automáticos do mercado:

WAMP – http://www.baixaki.com.br/download/wamp5.htm
EasyPHP – http://www.baixaki.com.br/download/easyphp.htm
XAMPP – http://www.baixaki.com.br/download/xampp.htm

mar
19
2009
0

Minicurso PHP: 1ª Parte – O que é PHP?

O QUE É?

É uma linguagem de programação para sistemas web, uma das mais populares. É usada em vários sites de pequeno e grande porte. É fácil de ser reconhecida devido a extensão “.php” das páginas escritas nessa linguagem. Com PHP podemos construir lojas virtuais, portais de notícias, redes sociais e qualquer outro tipo de site ou aplicação web. Um exemplo de aplicação web de grande porte, escrita em PHP, é a Wikipédia.

HISTÓRIA

Extraído da Wikipédia:

“A linguagem surgiu por volta de 1994, como um pacote de programas CGI criados por Rasmus Lerdof, com o nome Personal Home Page Tools, para substituir um conjunto de scripts Perl que ele usava no desenvolvimento de sua página pessoal. Em 1997 foi lançado o novo pacote da linguagem com o nome de PHP/FI, trazendo a ferramenta Forms Interpreter, um interpretador de comandos SQL.

Mais tarde, Zeev Suraski desenvolveu o analisador do PHP 3 que contava com o primeiro recurso de orientação a objetos, que dava poder de alcançar alguns pacotes, tinha herança e dava aos desenvolvedores somente a possibilidade de implementar propriedades e métodos.

Pouco depois, Zeev e Andi Gutmans, escreveram o PHP 4, abandonando por completo o PHP 3, dando mais poder à máquina da linguagem e maior número de recursos de orientação a objetos. O problema sério que apresentou o PHP 4 foi a criação de cópias de objetos, pois a linguagem ainda não trabalhava com apontadores ou handlers, como é a linguagem Java.

O problema fora resolvido na versão atual do PHP, a versão 5, que já trabalha com handlers. Caso se copie um objeto, na verdade copiaremos um apontador, pois, caso haja alguma mudança na versão original do objeto, todas as outras também sofrem a alteração, o que não acontecia na PHP 4.

Trata-se de uma linguagem extremamente modularizada, o que a torna ideal para instalação e uso em servidores web. Diversos módulos são criados no repositório de extensões PECL (PHP Extension Community Library) e alguns destes módulos são introduzidos como padrão em novas versões da linguagem. É muito parecida, em tipos de dados, sintaxe e mesmo funções, com a linguagem C e com a C++. Pode ser, dependendo da configuração do servidor, embarcada no código HTML. Existem versões do PHP disponíveis para os seguintes sistemas operacionais: Windows, Linux, FreeBSD, Mac OS, OS/2, AS/400, Novell Netware, RISC OS, IRIX e Solaris.

A Wikipédia funciona sobre um software inteiramente escrito em PHP, usando bases de dados MySQL: o MediaWiki.

Construir uma página dinâmica baseada em bases de dados é simples com PHP, (em parte, vale lembrar), este provê suporte a um grande número de bases de dados: Oracle, Sybase, PostgreSQL, InterBase, MySQL, SQLite, MSSQL, Firebird, etc., podendo abstrair o banco com a biblioteca ADOdb, entre outras.

PHP tem suporte aos protocolos: IMAP, SNMP, NNTP, POP3, HTTP, LDAP, XML-RPC, SOAP. É possível abrir sockets e interagir com outros protocolos. E as bibliotecas de terceiros expandem ainda mais estas funcionalidades.

Existem iniciativas para utilizar o PHP como linguagem de programação de sistemas fixos. A mais notável é a PHP-GTK. Trata-se de um conjunto do PHP com a biblioteca GTK, portada do C++, fazendo assim softwares inter-operacionais entre Windows e Linux. Na prática, essa extensão tem sido muito pouco utilizada para projetos reais.”

CLIENT-SIDE & SERVER-SIDE

PHP é uma linguagem SERVER-SIDE. O que isso quer dizer? Uma página web é carregada em um browser (também chamado de navegador). Esse software lê e interpreta código HTML, CSS e JavaScript, apresentando os sites em nossas telas. Essas linguagens interpretadas pelo browser são processadas no computador do usuário, ou seja, no lado cliente: CLIENT-SIDE. Agora, muitas das funcionalidades de um site não são realizadas por essas linguagens: uma busca por um produto, integração do site com o banco de dados e uma série de outros recursos dinâmicos. Isso tudo é processado pelo lado servidor: SERVER-SIDE. É o lado onde ficam armazenadas as páginas do site e softwares necessários para o funcionamento do site: banco de dados, serviços de email etc. Pois bem, é no SERVER-SIDE onde instalamos o servidor web: um software responsável por interpretar os códigos escritos em linguagens de programação de servidor, como o PHP, ASP etc. Código PHP não é interpretado pelo browser, ele precisa ser convertido em HTML pelo servidor, e então esse HTML é enviado para o browser, que por sua vez tem condições de ler essa linguagem (linguagem de formatação, diga-se de passagem). O PHP roda do lado servidor, se comunica com o banco de dados, bibliotecas e outros softwares instalados no server. Processa todas as informações e instruções, gerando código HTML a ser enviado para o browser.

Para saber mais sobre Server-Side, servidores, clientes, Client-Side e afins, visite os links abaixo da Wikipédia:

http://pt.wikipedia.org/wiki/Server-side
http://pt.wikipedia.org/wiki/Servidor
http://pt.wikipedia.org/wiki/Cliente-servidor
http://pt.wikipedia.org/wiki/Servidor_web

REQUISITOS PARA PROGRAMAR EM PHP

PHP é uma linguagem de programação simples de aprender e manusear. Mas para aprendê-la de forma plena e compreender os pormenores desse tutorial, são necessários conhecimentos de Lógica de Programação (Algoritmos). Em muito breve teremos um minicurso de Lógica de Programação, e você poderá vê-lo por aqui. Ninguém quer aprender PHP para deixar a integração com um banco de dados de lado. É óbvio! Então conhecimentos de SQL e MySQL (o banco que usaremos em nossos minicursos) são pré-requisitos para extrair o máximo proveito dessa linguagem, e construir sites e aplicativos eficientes. Teremos minicursos de banco de dados também (em muito breve): Análise e Modelagem de Dados, SQL – Construindo Querys e Gerenciando o MySQL Server.

O QUE É PRECISO PARA RODAR PHP?

Para rodar o PHP é preciso baixar a versão mais recente da linguagem, que você encontra no site oficial, e de um servidor web para carregar o PHP na memória e interpretar os scripts escritos com a linguagem. O servidor web mais usado e preferido entre 9 a cada 10 desenvolvedores PHP é o Apache. É seguro, estável, possui farta documentação, é gratuito, e é o servidor utilizado em praticamente todas as hospedagens web. Tem quem prefira o IIS da Microsoft, mas não é o caso do pessoal desse blog. Aprender a configurar o Apache é parte fundamental do trabalho do Programador Web. Para integrar o PHP ao banco de dados MySQL, será necessário baixar a versão mais recente do MySQL Server no site oficial do desenvolvedor. Como instalar e configurar? Veja no próximo tutorial.

mar
13
2009
10

Conectando ao MySQL com PHP – Parte IV: Ajustes Finais

Olá Pessoal,

Bem, nos tutoriais passados vimos como integrar o PHP ao banco de dados. Criamos um exemplo bem simples de inserção, atualização, exclusão e listagem de conteúdo a partir de dados oriundos do MySQL. Ainda tem muito mais coisa pra se ver sobre esse assunto? Sim, tem. Vou tratar disso hoje? Não. Quero que primeiro esse conteúdo “caia no sangue” de todos vocês. Hoje vamos apenas fazer alguns ajustes naquele micro-sistema que fizemos nos últimos dias. Para começar: repararam que em todas as páginas repetimos as funções de conexão ao banco e seleção de database? Para evitar isso, iremos colocar esse trecho de código em uma página separada, chamada “conexao.php” (salve o arquivo dentro da pasta includes) e iremos chamá-la a partir de um include em todas as páginas que precisem fazer consultas ao banco de dados. Veja como ficarão nossos códigos:

CONEXAO.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
//Conecto-me ao servidor MySQL
$conexao = mysql_connect("localhost", "testeDiego", "123456");
//Verifico se a conexão foi bem sucedida
if ($conexao == true) {
//Seleciono o database
$db = mysql_select_db("conteudo");
//Verifico se houve erro ao selecionar o database
if ($db == false) {
//Imprimo a mensagem de erro
echo "Erro na seleção do database: ".mysql_error();
}
}
else {
//Imprimo a mensagem de erro
echo "Erro na conexão: ".mysql_error();
}
?>

VALIDA.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
//Conecto ao banco
include "includes/conexao.php";
if ($_GET["acao"] == "insere") {
//Monto minha query de inserção de dados - fizemos isso no primeiro tutorial
$sql = "INSERT INTO conteudo(titulo, conteudo) VALUES('".$_POST["titulo"]."', '".$_POST["conteudo"]."')";
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi inserido com sucesso
if ($query == true) {
    echo "Registro inserido com sucesso";
}
else {
    echo "Não foi possível inserir seu registro";
}
}
[...]
?>

LISTA.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
[...]
//Conecto ao banco
include "includes/conexao.php";
//Monto minha query
$sql = "SELECT idconteudo, titulo FROM conteudo";
//Executo a minha query
$query = mysql_query($sql);
if ($query <> false) {
while($dados = mysql_fetch_array($query)) {
echo "<li><strong>".$dados["titulo"]."</strong> <a href='atualiza.php?id=".$dados["idconteudo"]."'>Editar</a> <a href='valida.php?id=".$dados["idconteudo"]."&acao=deleta'>Excluir</a></li>";
}
}
?>

ATUALIZA.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
[...]
//Conecto ao banco
include "includes/conexao.php";
//Monto a query
                $sql = "SELECT idconteudo, titulo, conteudo FROM conteudo WHERE idconteudo = ".$_GET["id"];
                //Executo a query
                $query = mysql_query($sql);
                //Converto o resource para um array, e percorro esse array
                while($dados = mysql_fetch_array($query)) {
                    $id = $dados["idconteudo"];
                    $tit = $dados["titulo"];
                    $cont = $dados["conteudo"];
                }
?>

Bem melhor do que repetir aquele monte de código em todas as páginas, né não? Um outro pequeno ajuste: reparem que na página “valida.php”, escrevemos na tela uma mensagem de sucesso ou erro para inserção, atualização ou exclusão. Que tal se ao invés de escrever uma mensagem simples na tela, a gente redirecionasse o usuário para a página de onde ele veio, escrevendo uma mensagem estilizada e apresentável? Muito mais profissional, não acha? E pra isso vamos precisar apenas da função header(”Location: url_da_pagina”) e passar um parâmetro pela URL. Nada de outro mundo. Veja o resultado final:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
include "includes/conexao.php";
 
if ($_GET["acao"] == "insere") {
//Monto minha query de inserção de dados - fizemos isso no primeiro tutorial
$sql = "INSERT INTO conteudo(titulo, conteudo) VALUES('".$_POST["titulo"]."', '".$_POST["conteudo"]."')";
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi inserido com sucesso
if ($query == true) {
    header("Location: insere.php?msg=sucesso");
}
else {
    header("Location: insere.php?msg=erro");
}
}
 
else if($_GET["acao"] == "deleta") {
//Monto minha query de exclusão de dados
$sql = "DELETE FROM conteudo WHERE idconteudo = ".$_GET["id"];
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi excluído com sucesso
if ($query == true) {
    header("Location: lista.php?msg=sucesso");
}
else {
    header("Location: lista.php?msg=erro");
}
}
 
else if($_GET["acao"] == "atualiza") {
//Monto minha query de exclusão de dados
$sql = "UPDATE conteudo SET titulo = '".$_POST["titulo"]."', conteudo = '".$_POST["conteudo"]."' WHERE idconteudo = ".$_POST["id"];
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi excluído com sucesso
if ($query == true) {
    header("Location: atualiza.php?msg=sucesso&id=".$_POST["id"]);
}
else {
    header("Location: atualiza.php?msg=erro&id=".$_POST["id"]);
}
}
?>

Reparem que estou redirecionando o usuário para a página de onde ele veio, conforme a ação a ser executada, passando um parâmetro MSG, com um valor “sucesso” ou “erro”. Esses valores serão recebidos pela URL, e o sistema fará uma noticação ao usuário. No caso de “atualiza.php” estou retornando o ID como parâmetro adicional, pois a página precisa receber esse valor pela URL para executar uma query (programamos isso no tutorial passado). Veja agora como ficarão as páginas “insere.php”, “lista.php” e “atualiza.php”:

INSERE.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<div id="corpo">
        <?php
            include "includes/topo.php";
            include "includes/menu.php";
        ?>
        <h2>Insere Conteúdo</h2>
        <?php
            if ($_GET["msg"] == "sucesso") {
                echo "<h3>* Inserção realizada com sucesso</h3>";
            }
            else if ($_GET["msg"] == "erro") {
                echo "<h3>* Erro ao inserir seu registro</h3>";
            }
        ?>
        <form id="form" action="valida.php?acao=insere" method="post">
            <label for="titulo">Título: <input type="text" name="titulo" /></label>
            <label for="conteudo">Conteúdo: <textarea name="conteudo"></textarea></label>
            <button type="submit">CADASTRAR</button>
        </form>
        </div>

LISTA.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<div id="corpo">
        <?php
            include "includes/topo.php";
            include "includes/menu.php";
        ?>
        <h2>Insere Conteúdo</h2>
        <?php
            if ($_GET["msg"] == "sucesso") {
                echo "<h3>* Exclusão realizada com sucesso</h3>";
            }
            else if ($_GET["msg"] == "erro") {
                echo "<h3>* Erro ao excluir seu registro</h3>";
            }
        ?>
        <ul id="lista">
            <?php
                //Incluo o arquivo para conexão ao banco de dados - mysql_connect() e mysql_select_db()
                include "includes/conexao.php";
                //Monto a query para selecionar registros no banco
                $sql = "SELECT idconteudo, titulo FROM conteudo";
                //Executar a query $sql. Por ser um SELECT, ela me retornará um resource em caso de sucesso. Um resource é um tipo de dados especial do PHP, onde estarão contidos todas as informações retornadas pelo SELECT. Só que eu não poderei acessar esses dados através do RESOURCE.
                $query = mysql_query($sql);
                //Converter o resource retornado por mysql_query() em um formato legível: um array. Pra isso eu uso a função mysql_fetch_array(). Essa função retornará um array com todos os dados do resource, ou seja, todos os dados do banco. Para percorrer o array eu uso o loop WHILE. Enquanto houver dados no array, o loop irá continuar
                while($dados = mysql_fetch_array($query)) {
                    //Aqui eu imprimo os dados obtidos no banco, sob a forma de uma lista, volta à volta do loop
                    echo "<li><strong>".$dados["titulo"]."</strong><a href='atualiza.php?id=".$dados["idconteudo"]."'>Editar</a><a href='valida.php?id=".$dados["idconteudo"]."&acao=deleta'>Excluir</a></li>";
                }
            ?>
        </ul>
</div>

ATUALIZA.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<div id="corpo">
        <?php
            include "includes/topo.php";
            include "includes/menu.php";
        ?>
        <h2>Atualiza Conteúdo</h2>
        <?php
            if ($_GET["msg"] == "sucesso") {
                echo "<h3>* Atualização realizada com sucesso</h3>";
            }
            else if ($_GET["msg"] == "erro") {
                echo "<h3>* Erro ao atualizar seu registro</h3>";
            }
        ?>
        <form id="form" action="valida.php?acao=atualiza" method="post">
            <?php
                //Conecto ao banco
                include "includes/conexao.php";
                //Monto a query
                $sql = "SELECT idconteudo, titulo, conteudo FROM conteudo WHERE idconteudo = ".$_GET["id"];
                //Executo a query
                $query = mysql_query($sql);
                //Converto o resource para um array, e percorro esse array
                while($dados = mysql_fetch_array($query)) {
                    $id = $dados["idconteudo"];
                    $tit = $dados["titulo"];
                    $cont = $dados["conteudo"];
                }
            ?>
            <label for="titulo">Título: <input type="text" name="titulo" value="<?php echo $tit; ?>" /></label>
            <label for="conteudo">Conteúdo: <textarea name="conteudo"><?php echo $cont; ?></textarea></label>
            <input type="hidden" name="id" value="<?php echo $id; ?>" />
            <button type="submit">ALTERAR</button>
        </form>
</div>

Bem, é isso. Terminamos aqui o nosso tutorial básico/iniciante PHP integrado ao MySQL. Espero ter ajudado vocês a compreender o funcionamento mínimo dessa parte importante do PHP. A partir de agora vou me dedicar a escrever o minicurso de PHP, abordando desde a declaração de variáveis até o que venha a ser classe e objeto. E Orientação a Objetos? Calma cara-pálida! Depois que abordamos o be-a-bá do PHP, SQL, MySQL, JavaScript, XHTML, CSS e DOM (e acredite, isso não vai levar muito tempo), vamos entrar em temas mais complexos como Orientação a Objetos em PHP (com um minicurso à parte etc.). É só aguardar que chegaremos lá.

Abraços,
Diego.

mar
12
2009
8

Conectando ao MySQL com PHP – Parte III: Atualizando e Excluindo registros no banco

Olá Pessoal,

No tutorial passado montamos a página “lista.php”, resgatando do banco os dados da tabela “conteudo”, e exibindo-os sob a forma de uma lista. Nessa lista temos dois links: Editar e Excluir. Esses links nos levarão a duas funcionalidades distintas: Atualização e Exclusão de dados. Reveja o código do ponto onde paramos:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
[...]
//Monto minha query
$sql = "SELECT idconteudo, titulo FROM conteudo";
//Executo a minha query
$query = mysql_query($sql);
if ($query <> false) {
while($dados = mysql_fetch_array($query)) {
echo "<li><strong>".$dados["titulo"]."</strong> <a href='atualiza.php?id=".$dados["idconteudo"]."'>Editar</a> <a href='valida.php?id=".$dados["idconteudo"]."'>Excluir</a></li>";
}
}
?>

Vamos começar a trabalhar com o link EXCLUIR. A idéia é: ao clicar em excluir, o registro selecionado será automaticamente retirado do banco de dados, e desaparecerá da lista. Para excluirmos um registro (uma linha) do banco de dados, será necessário usar o comando DELETE, uma estrutura SQL própria para isso. O DELETE pode registrar um ou mais registros, especificados na cláusula WHERE. No nosso caso iremos excluir apenas uma linha, referente ao conteúdo selecionado na página “lista.php”. Para isso precisaremos da chave-primária referente aquele conteúdo. Essa chave é dada pelo campo “idconteudo”, que é passado pela URL do link EXLCUIR como parâmetro ID: Excluir. Pois bem, cabe agora à página “valida.php” resgatar esse parâmetro passado pelo método GET, e montar a query DELETE. Vamos ao código (iremos trabalhar na página “valida.php” agora – lembre-se que a usamos para fazer a inserção de dados, lá no primeiro tutorial):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
//Conecto-me ao servidor MySQL
$conexao = mysql_connect("localhost", "testeDiego", "123456");
//Verifico se a conexão foi bem sucedida
if ($conexao == true) {
//Seleciono o database
$db = mysql_select_db("conteudo");
//Verifico se houve erro ao selecionar o database
if ($db == false) {
//Imprimo a mensagem de erro
echo "Erro na seleção do database: ".mysql_error();
}
}
else {
//Imprimo a mensagem de erro
echo "Erro na conexão: ".mysql_error();
}
 
//Monto minha query de inserção de dados - fizemos isso no primeiro tutorial
$sql = "INSERT INTO conteudo(titulo, conteudo) VALUES('".$_POST["titulo"]."', '".$_POST["conteudo"]."')";
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi inserido com sucesso
if ($query == true) {
    echo "Registro inserido com sucesso";
}
else {
    echo "Não foi possível inserir seu registro";
}
 
/* -------------------------------------------------------------------
 
INICIO O PROCESSO DE EXCLUSÃO DE DADOS
 
------------------------------------------------------------------- */
 
//Monto minha query de exclusão de dados
$sql = "DELETE FROM conteudo WHERE idconteudo = ".$_GET["id"];
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi excluído com sucesso
if ($query == true) {
    echo "Registro excluído com sucesso";
}
else {
    echo "Não foi possível excluir seu registro";
}
?>

Ok, excluindo ele está. Mas ele irá primeiro tentar inserir dados, não conseguirá e imprimirá uma mensagem de erro, parando o programa. Bem, eu tenho que fazer algo na minha página de validação, para que ela INSIRA ou EXCLUA conforme a vontade do usuário. Como fazer isso? Simples, basta adicionar uma tomada de decisão na página: se o usuário quer inserir dados, executo a query de inserção, caso ele queira excluir dados, executo a query de exclusão. Ok, mas como saber o que usuário quer? Simples também, basta passar um parâmetro pela URL para a página “valida.php”, indicando a ação a ser executada. Vejo como ficará a página de validação:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
//Conecto-me ao servidor MySQL
$conexao = mysql_connect("localhost", "testeDiego", "123456");
//Verifico se a conexão foi bem sucedida
if ($conexao == true) {
//Seleciono o database
$db = mysql_select_db("conteudo");
//Verifico se houve erro ao selecionar o database
if ($db == false) {
//Imprimo a mensagem de erro
echo "Erro na seleção do database: ".mysql_error();
}
}
else {
//Imprimo a mensagem de erro
echo "Erro na conexão: ".mysql_error();
}
 
if ($_GET["acao"] == "insere") {
//Monto minha query de inserção de dados - fizemos isso no primeiro tutorial
$sql = "INSERT INTO conteudo(titulo, conteudo) VALUES('".$_POST["titulo"]."', '".$_POST["conteudo"]."')";
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi inserido com sucesso
if ($query == true) {
    echo "Registro inserido com sucesso";
}
else {
    echo "Não foi possível inserir seu registro";
}
}
 
else if($_GET["acao"] == "deleta") {
//Monto minha query de exclusão de dados
$sql = "DELETE FROM conteudo WHERE idconteudo = ".$_GET["id"];
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi excluído com sucesso
if ($query == true) {
    echo "Registro excluído com sucesso";
}
else {
    echo "Não foi possível excluir seu registro";
}
}
?>

Agora basta voltar nas páginas “lista.php” e “insere.php” para adicionar à URL de chamada de “valida.php”, um parâmetro “acao”. Veja como ficarão os códigos:

LISTA.PHP

1
2
3
4
5
6
7
8
9
10
11
12
<?php
[...]
//Monto minha query
$sql = "SELECT idconteudo, titulo FROM conteudo";
//Executo a minha query
$query = mysql_query($sql);
if ($query <> false) {
while($dados = mysql_fetch_array($query)) {
echo "<li><strong>".$dados["titulo"]."</strong> <a href='atualiza.php?id=".$dados["idconteudo"]."'>Editar</a> <a href='valida.php?id=".$dados["idconteudo"]."&acao=deleta'>Excluir</a></li>";
}
}
?>

INSERE.PHP

1
2
3
4
5
6
7
          [...]
<form id="form" action="valida.php?acao=insere" method="post">
       <label for="titulo">Título: <input type="text" name="titulo" /></label>
       <label for="conteudo">Conteúdo: <textarea name="conteudo"></textarea></label>
       <button type="submit">CADASTRAR</button>
</form>
[...]

Pronto. Agora o nosso sistema inclui, seleciona e exclui registros do banco de dados. Só falta atualizar dados de registros já existentes. Reparem que na página “lista.php” temos um link chamado EDITAR. Esse link aponta para a página “atualiza.php” e envia um parâmetro ID (igual ao enviado no link EXCLUIR). Esse parâmetro é a chave-primária “idconteudo” do item que queremos editar. Na página “atualiza.php” resgataremos o parâmetro ID com $_GET["id"] e faremos uma consulta no banco, pegando os dados do registro cuja chave-primária seja igual a $_GET["id"].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
        <form id="form" action="valida.php?acao=atualiza" method="post">
            <?php
                //Conecto ao banco
$conexao = mysql_connect("localhost", "testeDiego", "123456");
//Verifico se a conexão foi bem sucedida
if ($conexao == true) {
//Seleciono o database
$db = mysql_select_db("conteudo");
//Verifico se houve erro ao selecionar o database
if ($db == false) {
//Imprimo a mensagem de erro
echo "Erro na seleção do database: ".mysql_error();
}
}
else {
//Imprimo a mensagem de erro
echo "Erro na conexão: ".mysql_error();
                 }
                //Monto a query
                $sql = "SELECT idconteudo, titulo, conteudo FROM conteudo WHERE idconteudo = ".$_GET["id"];
                //Executo a query
                $query = mysql_query($sql);
                //Converto o resource para um array, e percorro esse array
                while($dados = mysql_fetch_array($query)) {
                    $id = $dados["idconteudo"];
                    $tit = $dados["titulo"];
                    $cont = $dados["conteudo"];
                }
            ?>
            <label for="titulo">Título: <input type="text" name="titulo" value="<?php echo $tit; ?>" /></label>
            <label for="conteudo">Conteúdo: <textarea name="conteudo"><?php echo $cont; ?></textarea></label>
            <button type="submit">ALTERAR</button>
        </form>

Com isso exibimos os dados do registro dentro dos campos de formulário, de forma que o usuário possa visualizar a versão atual dos dados, e assim fazer as alterações que forem necessárias. Uma vez feita todas as modificações o usuário irá disparar o form para a página “valida.php”, informando o parâmetro “acao” com valor “atualiza”. Agora é preparar a página de validação para realizar um UPDATE – comando SQL que atualiza dados no banco. Veja como ficará o código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
//Conecto-me ao servidor MySQL
$conexao = mysql_connect("localhost", "testeDiego", "123456");
//Verifico se a conexão foi bem sucedida
if ($conexao == true) {
//Seleciono o database
$db = mysql_select_db("conteudo");
//Verifico se houve erro ao selecionar o database
if ($db == false) {
//Imprimo a mensagem de erro
echo "Erro na seleção do database: ".mysql_error();
}
}
else {
//Imprimo a mensagem de erro
echo "Erro na conexão: ".mysql_error();
}
 
if ($_GET["acao"] == "insere") {
//Monto minha query de inserção de dados - fizemos isso no primeiro tutorial
$sql = "INSERT INTO conteudo(titulo, conteudo) VALUES('".$_POST["titulo"]."', '".$_POST["conteudo"]."')";
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi inserido com sucesso
if ($query == true) {
    echo "Registro inserido com sucesso";
}
else {
    echo "Não foi possível inserir seu registro";
}
}
 
else if($_GET["acao"] == "deleta") {
//Monto minha query de exclusão de dados
$sql = "DELETE FROM conteudo WHERE idconteudo = ".$_GET["id"];
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi excluído com sucesso
if ($query == true) {
    echo "Registro excluído com sucesso";
}
else {
    echo "Não foi possível excluir seu registro";
}
}
 
else if($_GET["acao"] == "atualiza") {
//Monto minha query de exclusão de dados
$sql = "UPDATE conteudo SET titulo = '".$_POST["titulo"]."', conteudo = '".$_POST["conteudo"]."' WHERE idconteudo = ";
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi excluído com sucesso
if ($query == true) {
    echo "Registro atualizado com sucesso";
}
else {
    echo "Não foi possível atualizar seu registro";
}
}
?>

Repararam na query $sql? Ela não tem um valor para WHERE idconteudo = … Reparem na página “atualiza.php”, não estamos enviando um valor que corresponda à chave-primária do conteúdo que queremos atualizar. Assim sendo, é impossível dizer ao comando UPDATE qual é a linha que ele deve atualizar. Para resolver esse problema, iremos usar um campo oculto de formulário, para enviar o parâmetro ID junto com os demais dados enviados via POST. Veja o código de “atualiza.php”:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
        <form id="form" action="valida.php?acao=atualiza" method="post">
            <?php
                //Conecto ao banco
$conexao = mysql_connect("localhost", "testeDiego", "123456");
//Verifico se a conexão foi bem sucedida
if ($conexao == true) {
//Seleciono o database
$db = mysql_select_db("conteudo");
//Verifico se houve erro ao selecionar o database
if ($db == false) {
//Imprimo a mensagem de erro
echo "Erro na seleção do database: ".mysql_error();
}
}
else {
//Imprimo a mensagem de erro
echo "Erro na conexão: ".mysql_error();
                 }
                //Monto a query
                $sql = "SELECT idconteudo, titulo, conteudo FROM conteudo WHERE idconteudo = ".$_GET["id"];
                //Executo a query
                $query = mysql_query($sql);
                //Converto o resource para um array, e percorro esse array
                while($dados = mysql_fetch_array($query)) {
                    $id = $dados["idconteudo"];
                    $tit = $dados["titulo"];
                    $cont = $dados["conteudo"];
                }
            ?>
            <label for="titulo">Título: <input type="text" name="titulo" value="<?php echo $tit; ?>" /></label>
            <label for="conteudo">Conteúdo: <textarea name="conteudo"><?php echo $cont; ?></textarea></label>
            <input type="hidden" name="id" value="<?php echo $id; ?>"
            <button type="submit">ALTERAR</button>
        </form>

O campo oculto
não é visualizado pelo usuário, não ocupa espaço no layout, sua função é apenas armazenar informações relevantes para o sistema. No nosso caso o usaremos para passar o valor do campo “idconteudo” do registro em questão. Veja como ficará a página “valida.php” agora:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
//Conecto-me ao servidor MySQL
$conexao = mysql_connect("localhost", "testeDiego", "123456");
//Verifico se a conexão foi bem sucedida
if ($conexao == true) {
//Seleciono o database
$db = mysql_select_db("conteudo");
//Verifico se houve erro ao selecionar o database
if ($db == false) {
//Imprimo a mensagem de erro
echo "Erro na seleção do database: ".mysql_error();
}
}
else {
//Imprimo a mensagem de erro
echo "Erro na conexão: ".mysql_error();
}
 
if ($_GET["acao"] == "insere") {
//Monto minha query de inserção de dados - fizemos isso no primeiro tutorial
$sql = "INSERT INTO conteudo(titulo, conteudo) VALUES('".$_POST["titulo"]."', '".$_POST["conteudo"]."')";
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi inserido com sucesso
if ($query == true) {
    echo "Registro inserido com sucesso";
}
else {
    echo "Não foi possível inserir seu registro";
}
}
 
else if($_GET["acao"] == "deleta") {
//Monto minha query de exclusão de dados
$sql = "DELETE FROM conteudo WHERE idconteudo = ".$_GET["id"];
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi excluído com sucesso
if ($query == true) {
    echo "Registro excluído com sucesso";
}
else {
    echo "Não foi possível excluir seu registro";
}
}
 
else if($_GET["acao"] == "atualiza") {
//Monto minha query de exclusão de dados
$sql = "UPDATE conteudo SET titulo = '".$_POST["titulo"]."', conteudo = '".$_POST["conteudo"]."' WHERE idconteudo = ".$_POST["id"];
//Executo a minha query
$query = mysql_query($sql);
//Verifico se o registro foi excluído com sucesso
if ($query == true) {
    echo "Registro atualizado com sucesso";
}
else {
    echo "Não foi possível atualizar seu registro";
}
}
?>

Pronto! Agora nosso sistema insere, lista, exclui e atualiza dados no banco. O básico do PHP com MySQL está aí. Veremos na última parte desse tutorial como fazer alguns ajustes operacionais nesse pequeno arquivo. Iremos nos próximos posts, retomar esse assunto, de maneira a aprofundar nossos conhecimentos, e fazer algumas coisas mais legais, e conhecer umas funções novas. Ah! Na próxima parte eu vou postar alguns exercícios para vocês praticarem o que viram até agora. Assim, com um nível mínimo de prática iremos avançar no conteúdo.

Abraços,
Diego.

Powered by WordPress | Theme: Aeros 2.0 by TheBuckmaker.com