Dicas Vas-y.com

Menu

3. Criando os primeiros scripts

Primeiro Exemplo

Neste exemplo, criaremos um script com uma saída simples, que servirá para testar se a instalação foi feita corretamente:

<html>
<head><title>Aprendendo PHP</title></head>
<body>
<?php
echo " Primeiro Script ";
?>
</body>
</html>

Salve o arquivo como " primeiro.php3 " no diretorio de documentos do Apache (ou o Web Server escolhido). Abra uma janela do navegador e digite o endereço " http://localhost/primeiro.php3 ". Verificando o código fonte da página exibida, temos o seguinte:

<html>
<head><title>Aprendendo PHP</title></head>
<body>
Primeiro Script
</body>
</html>

Isso mostra como o PHP funciona. O script é executado no servidor, ficando disponível para o usuário apenas o resultado. Agora vamos escrever um script que produza exatamente o mesmo resultado utilizando uma variável:

<html>
<head><title>Aprendendo PHP</title></head>
<body>
<?php
$texto = " Primeiro Script ";
echo $texto;
?>
</body>
</html>

Utilizando formulários HTML

Ao clicar num botão " Submit " em um formulário HTML as informações dos campos serão enviadas ao servidor especificado para que possa ser produzida uma resposta. O PHP trata esses valores como variáveis, cujo nome é o nome do campo definido no formulário. O exemplo a seguir mostra isso, e mostra também como o código PHP pode ser inserido em qualquer parte do código HTML:

<html>
<head><title>Aprendendo PHP</title></head>
<body>
<?php
if ($texto != " ")
echo " Você digitou \ "$texto\ "<br><br> ";
?>
<form method=post action= "<? echo $PATH_INFO; ?> ">
<input type= "text " name= "texto " value= " " size=10>
<br>
<input type= "submit " name= "sub " value= "Enviar! ">
</form>
</body>
</html>

Ao salvar o arquivo acima e carregá-lo no browser, o usuário verá apenas um formulário que contém um espaço para digitar o texto, como visto na figura 01. Ao digitar um texto qualquer e submeter o formulário, a resposta, que é o mesmo arquivo PHP (indicado pela constante $PATH_INFO, que retorna o nome do arquivo) será como na figura 02:

figura 01figura 02

Isso ocorre porque o código PHP testa o conteúdo da variável $texto. Inicialmente ele é uma string vazia, e por isso nada é impresso na primeira parte. Quando algum texto é digitado no formulário e submetido, o PHP passa a tratá-lo como uma variável. Como no formulário o campo possui o nome " texto ", a variável com seu conteúdo será $texto. Assim, no próximo teste o valor da variável será diferente de uma string vazia, e o PHP imprime um texto antes do formulário.

Interagindo com o browser

PHP também permite interagir com informações do browser automaticamente. Por exemplo, o script a seguir mostra informações sobre o browser do usuário. As figuras 03 e 04 mostram o resultado visto no Netscape Communicator e o Microsoft Internet Explorer, respectivamente.

<html>
<head><title>Aprendendo PHP</title></head>
<body>
<? echo $HTTP_USER_AGENT; ?>
</body>
</html>

figura 03figura 04

Observe que o resultado mostra características de cada browser, como a versão, e no caso do Communicator até o idioma ( "en "). Com isso, se você criar uma página com recursos disponíveis somente no Internet Explorer, por exemplo, pode esconder o código dos outros browsers, com um código semelhante ao seguinte:

<html>
<head><title>Aprendendo PHP</title></head>
<body>
<?
if (strpos($HTTP_USER_AGENT, "MSIE 5 ") != 0) {
echo " Você usa Internet Explorer ";
} else {
echo " Você não usa Internet Explorer ";
}
?>
</body>
</html>

Neste exemplo, será apenas exibido um texto informando se está sendo utilizado o Microsoft Internet Explorer ou não, mas para outras funções poderia ser utilizado algo semelhante.

É bom notar o surgimento de mais uma função no código anterior: strpos(string1,string2). Essa função retorna a posição da primeira aparição de string2 em string1, contando a partir de zero, e não retorna valor algum se não ocorrer. Assim, para testar se a string $HTTP_USER_AGENT contém a string " MSIE ", basta testar se strpos devolve algum valor.

Acessando Bancos de Dados

Neste documento todos os exemplos referentes a acesso de bancos de dados utilizarão o gerenciador de banco de dados MySQL, que pode ser copiado gratuitamente no site http://www.mysql.org.

Para interagir com uma base de dados SQL existem três comandos básicos que devem ser utilizados: um que faz a conexão com o servidor de banco de dados, um que seleciona a base de dados a ser utilizada e um terceiro que executa uma " query " SQL.

Conexão com o servidor

A conexão com o servidor de banco de dados mySQL em PHP é feita através do comando mysql_connect, que tem a seguinte sintaxe:

int mysql_connect(string /*host [:porta]*/ , string /*login*/ , string /*senha*/ );

Os parâmetros são bastante simples: o endereço do servidor(host), o nome do usuário (login) e a senha para a conexão. A função retorna um valor inteiro, que é o identificador da conexão estabelecida e deverá ser armazenado numa variável para ser utilizado depois. No nosso exemplo, temos como servidor de banco de dados a mesma máquina que roda o servidor http, como login o usuário " root " e senha " phppwd ":

$conexao = mysql_connect( "localhost ", " root ", " phppwd ");

Assim, se a conexão for bem sucedida (existir um servidor no endereço especificado que possua o usuário com a senha fornecida), o identificador da conexão fica armazenado na variável $conexão.

Seleção do banco de dados

Uma vez conectado, é preciso selecionar o banco de dados existente no servidor com o qual desejamos trabalhar. Isso é feito através da função int mysql_select_db, que possui a seguinte sintaxe:

int mysql_select_db(string /*nome_base*/, int /*conexao*/ );

O valor de retorno é 0 se o comando falhar, e 1 em caso de sucesso. O nome da base de dados a selecionar é o primeiro parâmetro fornecido, seguido pelo identificador da conexão. Se este for omitido, o interpretador PHP tentará utilizar a última conexão estabelecida. Recomenda-se sempre explicitar esse valor, para facilitar a legibilidade do código. No nosso exemplo, a base de dados a ser selecionada possui o nome " ged ":

mysql_select_db( "ged ", $conexao);

Após a execução desse comando qualquer consulta executada para aquela conexão utilizará a base de dados selecionada.

Execução de queries SQL

Após estabelecida a conexão e selecionada a base de dados a ser utilizada, quase toda a interação com o servidor mySQL pode ser feita através de consultas escritas em SQL (Structured Query Language), com o comando mysql_query, que utiliza a seguinte sintaxe:

int mysql_query(string consulta, int [conexao] );

O valor de retorno é 0 se falhar ou 1 em caso de sucesso. Sucesso aqui significa que a consulta está sintaticamente correta e foi executada no servidor. Nenhuma informação sobre o resultado é retornada deste comando, ou até mesmo se o resultado é o esperado. No caso da consulta ser um comando SELECT, o valor de retorno é um valor interno que identifica o resultado, que poderá ser tratado com a função mysql_result() e outras. A string query não deve conter ponto-e-vírgula no final do comando, e o identificador da conexão é opcional. Vamos criar uma tabela como exemplo:

$cria = " CREATE TABLE exemplo (codigo INT AUTO_INCREMENT PRIMARY KEY, nome CHAR(40), email CHAR(50)) ";
mysql_query($cria, $conexao);

Agora vejamos como ficou o código completo para executar uma query SQL numa base de dados mySQL, com um exemplo que cria uma tabela chamada exemplo e adiciona alguns dados:

$conexao = mysql_connect( "localhost ", " root ", " phppwd ");
mysql_select_db( "ged ", $conexao);
$cria = " CREATE TABLE exemplo (codigo INT AUTO_INCREMENT PRIMARY KEY, nome CHAR(40), email CHAR(50)) ";
$insere1 = " INSERT INTO exemplo (nome,email) VALUES ( "Mauricio costa ", "costa@usa.net ");
$insere2 = " INSERT INTO exemplo (nome,email) VALUES ( "Jose da Silva ", "jose@teste.com ");
$insere3 = " INSERT INTO exemplo (nome,email) VALUES ( "Fernando Henrique Cardoso ", "fhc@planalto.gov.br ");
$insere4 = " INSERT INTO exemplo (nome,email) VALUES ( "Bill Clinton ", "president@whitehouse.gov ");
mysql_query($cria, $conexao);
mysql_query($insere1, $conexao);
mysql_query($insere2, $conexao);
mysql_query($insere3, $conexao);
mysql_query($insere4, $conexao);

Tratamento de resultados de query SELECT

Ao executar uma query SQL SELECT através do comando mysql_query, o identificador do resultado deve ser armazenado numa variável que pode ser tratada de diversas formas. Duas maneiras interessantes de fazê-lo usam o comando mysql_result e o comando mysql_fetch_row, respectivamente.

O comando mysql_result tem a seguinte sintaxe:

int mysql_result(int resultado, int linha, mixed [campo]);

Onde resultado é o identificador do resultado, obtido com o retorno da função mysql_query, linha especifica a tupla a ser exibida, já que uma query SELECT pode retornar diversas tuplas, e campo é o identificador do campo a ser exibido, sendo o tipo descrito como mixed pela possibilidade de ser de diversos tipos (neste caso, inteiro ou string). Vejamos um exemplo utilizando a tabela criada anteriormente:

$consulta = " SELECT nome, email FROM exemplo WHERE email LIKE ‘costa’ ";
$resultado = mysql_query($consulta, $conexao);
printf( "Nome: " , mysql_result($resultado,0, "nome "), " <br>\n ");
printf( "e-mail: " , mysql_result($resultado,0, "email "), "<br> ");
Com o exemplo acima, o resultado será:
Nome: Mauricio costa<br>
e-mail: costa@usa.net<br>

É importante notar que a utilização desta função é um pouco trabalhosa, já que no caso de um resultado com várias linhas é preciso controlar o número de linhas para tratá-las (pode-se utilizar a função mysql_num_rows(int resultado), que retorna o número de linhas de um resultado), e no caso de uma alteração no nome do campo é preciso alterar também a maneira de tratá-lo. Por isso é mais aconselhável que se use uma outra função, como por exemplo mysql_fetch_row, que possui a seguinte sintaxe:

array mysql_fetch_row(int result);

A variável resultado é o identificador da memória de resultados, obtido como retorno da função mysql_query. O resultado produzido por esta função é de retirar a primeira linha da memória de resultados, se houver, e colocá-la num array. Assim torna-se mais fácil tratar um resultado com várias linhas, e sem utilizar os nomes dos campos na rotina de tratamento do resultado:

$consulta = " SELECT nome, email FROM exemplo ";
$resultado = mysql_query($consulta, $conexao);
echo " <table border=1>\n ";
echo " <tr><td>Nome</td><td>e-mail</tr>\n ";
while ($linha = mysql_fetch_row($resultado)) {
printf( "<tr><td>$linha[0]</td> ");
printf( "<td>$linha[1]</td></tr> ");
}
echo " </table>\n ";

O código acima irá imprimir todos os registros da tabela exemplo numa tabela html. Se o programador desejar " pular " alguma(s) linha(s) do resultado, poderá utilizar a função mysql_data_seek, que tem por objetivo definir qual será a próxima linha da memória de resultados a ser impressa. Sua sintaxe é:

int mysql_data_seek(int resultado, int linha);

Sendo resultado o identificador do resultado e linha o numero da linha. Retorna 0 em caso de falha, e um valor diferente de zero em caso de sucesso.

Existem diversas outras funções para o tratamento de resultados, que armazenam as linhas em arrays e objetos, assim como outras funções para administrar o banco de dados, mas como este documento trata-se de uma introdução, inicialmente não tratará tópicos mais avançados.

voltar