Páginas

domingo, 1 de maio de 2011

PHP + MySql (Iniciando)

É pessoal, em pleno dia do trabalhador eu aqui postando no blog. O legal é que o blog pra mim também é uma diversão e isso facilita as coisas. :) Hoje vamos falar um pouco sobre a integração entre PHP e o banco de dados MySql. Como vocês devem saber, o MySql é um banco de dados relacional, extremamente leve e cheio de funcionalidades muito úteis para o programador/dba. O PHP tem uma série de funções relacionadas ao MySql, abrindo um leque de opções para o programador trabalhar nessa integração.

Para começar, criamos o banco de dados no MySql:
CREATE DATABASE websteps

Antes de criar a tabela, indicamos que queremos usar o banco que acabamos de criar:
USE websteps

Agora, imaginemos a seguinte tabela:
Tabela: dados
Campos: id --- nome --- idade

Que é criada desta forma:
CREATE TABLE dados (
`id` TINYINT NOT NULL AUTO_INCREMENT,
`nome` VARCHAR (100) NOT NULL,
`idade` TINYINT (3) NOT NULL,
PRIMARY KEY(`id`), UNIQUE(`id`)) TYPE=MyISAM

Onde:
O tipo de tabela (MyISAM) é indicado se os dados não forem atualizados frequentemente. Também é bom lembrar que MyISAM não pode ser usado para restringir chaves estrangeiras, ou seja, se for usar tabelas para se relacionar com outras de forma segura, use InnoDB e não MyISAM.
id é o nome do campo, este campo é geralmente criado em todas as tabelas existentes do banco pelos programadores, e serve para gerenciar melhor os registros da tabela, pois fatalmente um campo id será PRIMARY KEY e campos desse tipo são indexados, com um dado único (UNIQUE) para cada registro que não seja nulo ou vazio. Além disso, cada registro da tabela, pode conter muitos campos, com diversas informações e fica mais rápido e fácil nos referenciarmos a um registro pelo número id. TINYINT é o tipo de campo (inteiro), NOT NULL define que esse campo nunca poderá ser nulo ou vazio, AUTO_INCREMENT o sistema se encarregará de preenchê-lo numa sequência numérica inteira sempre incremental (1, 2, 3, 4...).

Os campos nome e idade são intuitivos e creio que não mereçam explicação.

Agora, iremos popular a tabela criada, com o comando SQL INSERT:
/* Abaixo, inserimos 'Julio Bernardo' no campo nome e '29' no campo idade na tabela dados  (e assim por diante) */
INSERT INTO dados (nome, idade) values ('Julio Bernardo', 29);
INSERT INTO dados (nome, idade) values ('Paulo Pereira', 22);
INSERT INTO dados (nome, idade) values ('Ana Carolina', 54);
INSERT INTO dados (nome, idade) values ('Fernando Lima', 44);

Com a tabela pronta para ser consultada, vamos ao PHP:
<?php
//Abre uma conexao MySql
$con = mysql_connect("127.0.0.1","root","") or die (mysql_errno()." - ".mysql_error());
//Selecionando o Banco de Dados do MySql
$db = mysql_select_db("blog") or die (mysql_errno()." - ".mysql_error());
//Comando SQL que cria uma consulta requisitando todos os registros da tabela 'dados'
$sql = "SELECT nome, idade FROM dados";
//Executando a consulta criada anteriormente 
$query = mysql_query($sql) or die (mysql_errno()." - ".mysql_error());
//Agora faremos um loop para recuperar a consulta que foi executada na linha anterior
//mysql_fetch_array traduz os valores recuperados para uma array, que é exibida a seguir.
while ($row = mysql_fetch_array($query)) {
 echo "<p>";

//Exibindo nome e idade
 echo "Nome: ".$row["nome"]."<br>";
 echo "Idade: ".$row["idade"]."<br>";
 echo "</p>";
}

//Fecha a conexao MySql
mysql_close($con);
?>

O código acima faz uma simples consulta na tabela indicada (dados) e exibe os seguintes dados na tela:
Nome: Julio Bernardo
Idade: 29

Nome: Paulo Pereira
Idade: 22

Nome: Ana Carolina
Idade: 54

Nome: Fernando Lima
Idade: 44

Como vocês podem ver, é bem simples fazer uso do MySql com PHP. Qualquer dúvida, é só perguntar.

Um abraço a todos, até a próxima.

sexta-feira, 29 de abril de 2011

Métodos GET e POST

Olá pessoal, esta é a minha primeira postagem no blog. Pretendo fazer daqui um lugar de ajuda para os programadores web, com o uso de uma linguagem simples para facilitar a vida dos que tem necessidades básicas até as mais avançadas.
Bem, vamos ao que interessa. Hoje vou falar sobre os métodos GET e POST.

Imagine que você tenha na seguinte página um formulário:
<form name="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="GET">
<label for="txtNome">Nome:</label>
<input type="text" name="txtNome" value="Julio">
<label for="txtSobreNome">Sobrenome:</label>
<input type="text" name="txtSobreNome" value="Bernardo">
<button type="submit">Enviar</button>
</form>


O atributo 'action' da tag <form> está dizendo que ao enviar este formulário, os dados contidos nele ('value' dos inputs neste caso) serão enviados para a própria página (atual), então, o código PHP ao invés de ser escrito numa página a parte, será escrito no fim da própria página. O atributo 'method' da tag <form> diz qual método usaremos para envio dos dados. Neste caso, usaremos primeiro o método GET.

Com o HTML pronto, façamos agora o código PHP.
<?php
    if ( isset($_GET["txtNome"]) && $_GET["txtSobreNome"] ) {
        echo "Nome: ".$_GET["txtNome"]."<br>";
        echo "Sobrenome: ".$_GET["txtSobreNome"];
    }
?>


a função isset() verifica se a variável $_GET está setada (com qualquer valor). Essa verificação é mais usada para validação de campos via PHP, pois caso o campo esteja vazio, nada vai ser impresso no código interno do IF. Em seguida, imprimo os valores na tela contidos no 'form1' ('value' dos inputs neste caso) enviados anteriormente.

Então, o código PHP vai imprimir:
Nome: Julio
Sobrenome: Bernardo

Pronto, você passou dados de um formulário para uma página PHP. Você pode notar também que, os dados enviados, agora estão visíveis na sua barra de endereços (?txtNome=Julio&txtSobreNome=Bernardo). Isso pode ser um problema, principalmente quando você precisa passar algo sigiloso (senha, id de tabela) com segurança.

A melhor solução para tanto é usarmos o método POST:
<form name="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<label for="txtNome">Nome:</label>
<input type="text" name="txtNome" value="Julio">
<label for="txtSobreNome">Sobrenome:</label>
<input type="text" name="txtSobreNome" value="Bernardo">
<button type="submit">Enviar</button>
</form>


Note que apenas o método do <form> mudou, para POST.
<?php
    if ( isset($_POST["txtNome"]) && $_POST["txtSobreNome"] ) {
        echo "Nome: ".$_POST["txtNome"]."<br>";
        echo "Sobrenome: ".$_POST["txtSobreNome"];
    }
?>


E agora mudamos para $_POST ao invés de $_GET as variáveis PHP e está feito! O PHP recebe os dados via método POST e os valores na barra de endereços agora já não são mais exibidos.
Como você pode ver, o método POST é seguro para envio de formulários, mas o método GET também se faz necessário, por exemplo em casos de envio de variáveis via URL diretamente chamando a sua página PHP. Neste caso deve ser recuperada com a variável $_GET. Outra coisa interessante é que as variáveis $_GET / $_POST são arrays, e sendo assim, quando se possuir muitos campos em um formulário, pode ser melhor fazer um loop para se recuperar os valores, mas vamos deixar isso para uma próxima oportunidade.

Um abraço a todos.