Você está na página 1de 4

PHP - Mdulo 3: Funes, Strings e Bancos de Dados

Por Valdir Dias

Depois do script que envia e-mail, vamos fazer um outro que guarde as informaes de um formulrio HTML em um banco de dados. Vamos usar o MySQL como banco de dados. Sugiro que voc d uma olhada no site http://www.tcx.se e leia um pouco sobre este servidor SQL. Vale a pena, pois ele muito bom. Funes As funes no PHP no diferem muito das outras linguagens. Algumas caractersticas das funes: Devem ser declaradas antes de serem usadas. Podem receber parmetros por valor ou por referncia. Podem ter quantidade varivel de parmetros (Apenas a partir da verso 4). Os parmetros podem ser declarados com um valor default. Uma vez definida, uma funo no poder ser "redefinida". Alguns exemplos de funes: /* Esta funo retorna TRUE ou FALSE, dependendo da validade ou no do e-mail informado. */ function verifica_email($email){ if strpos ($email, "@") = 0 { return false; } else { return true; } } /* Neste exemplo calculamos o valor lquido, tendo o valor bruto e o desconto a ser aplicado. Se o desconto no for informado, utilizaremos 10% como padro. */ function valor_liquido($valor_bruto, $desconto = 10) { return ($valor_bruto - ($valor_bruto * $desconto/100)); } Os dois exemplos acima receberam seus parmetros por valor. Isso significa que as alteraes de variveis realizadas dentro da funo s tero efeito no contexto da funo, e estas mudanas no refletiro no resto do script. Em alguns casos pode ser interessante que os valores dos parmetros sejam alterados pela funo, e que seus novos valores reflitam no script como um todo. Para conseguir isto, usamos a tcnica de passagem de parmetro por referncia. Vamos ver um exemplo: function completaURL(&$v_URL) { $v_URL .= "http://".$v_URL; } $URL = "www.ibestmasters.com.br"; completaURL($URL); echo "A URL completa fica assim: $URL\n"; Daqui a pouco vamos ver um pouco mais sobre funes. Strings No mdulo 2, foram vistas algumas operaes com string. Vamos completar com estas, que so muito teis no uso com banco de dados e para formatar a sada HTML: addslashes(str): Esta funo insere uma barra antes dos caracteres ', ", \ e NULL. Deve ser usada para formatar valores que sero inseridos em um banco de dados, pois estes caracteres, em especial o primeiro, podem causar erros no momento da insero Exemplo: $sql = "insert into dados (produto, descricao) values ('".addslashes($prod) . ", '".addslashes($descr). "')"; Usando a funo addslashes teremos certeza que a varivel $sql estar formatada de acordo com a especificao da clusula INSERT

INTO. Se alguma das variveis ($prod ou $descr) possuir acima, a funo cuida de inserir uma barra (\) antes deles, para que a sentena seja entendida pelo banco. htmlspecialchars(string): Funo muito til, pois "traduz" alguns caracteres nos seus equivalentes em HTML, conforme a tabela abaixo Caracter & " & quot; < & lt; > & gt; nl2br(string): Converte os caracteres CRLF, que indicam quebra de linha, em <BR>, que tambm indica quebra de linha, na linguagem HMTL. rawurlencode(string): Formata uma string de acordo com a especificao RFC1738, que padroniza as URLs. Se quiser saber mais sobre as RFCs, veja em http://www.rfc.org. Basicamente, o que esta funo faz substituir os caracteres no alfanumricos em seus correspondentes hexadecimais, visando o uso em URLs. Exemplo: $palavra = "aafro ou tmara"; $url = "http://server/pesquisa.php3?p=".rawurlencode($palavra); Esta funo muito til quando queremos passar parmetros via URL, como mostra o exemplo acima. No script do prximo mdulo voltaremos a us-la. ucwords (string): Converte os primeiros caracteres de strings em maisculo. Exemplo: $nome = ucwords("valdir henrique dias leite"); echo($nome); //Esta linha exibir Valdir Henrique Dias Leite Acesso banco de dados Como foi dito na apresentao do PHP, o acesso banco de dados um dos pontos fortes desta linguagem. Ele possui acesso nativo a ADABAS, ORACLE, SYBASE, SQL SERVER, DBASE, INFORMIX, mSQL, MySQL, POSTGRESQL, alm de suportar ODBC, fazendo com que o PHP possa trabalhar praticamente com todos os bancos de dados existentes. Neste mdulo vamos ver apenas as apenas as funes relativas ao banco MySQL, pois esta dupla PHP/MySQL est sendo preferida por uma boa parte dos desenvolvedores, particularmente no ambiente Linux/Apache. O MySQL um servidor SQL e portanto devemos seguir alguns procedimentos e regras para acesso aos seus dados. Se voc est acostumado com o Oracle ou SQL Server no ter dificuldades, mas se voc usa somente bancos de dados do tipo Access ou DBF, poder ter dificuldades em entender o mecanismo usado pelo MySQL, mas vou tentar ser o mais didtico possvel. E aguarde, pois estou preparando um tutorial apenas sobre servidores SQL... A primeira regra ter um banco de dados cadastrado e um usurio com acesso este banco de dados. Vale lembrar que o MySQL no um banco de dados, e sim um servidor de dados. Tenha isto em mente para entender o exemplo. Digamos que temos um banco de dados Clientes com o usurio admin e senha admin. O primeiro passo "logar" ao servidor. Para isso usamos o comando mysql_connect e informamos o servidor, login (usurio) e senha. Veja abaixo: $conn = mysql_connect ("localhost" , "admin" , "admin"); Este comando abrir uma conexo com o MySQL da mquina local (localhost), usando o usurio admin cuja senha tambm admin. Uma refrncia a esta conexo ser gravada na varivel $conn. Depois de conectados ao servidor, devemos conectar ao banco de dados propriamente dito, usando o comando mysql_select_db, que precisa de dois parmetros: O nome do banco de dados e a conexo. Caso a conexo no seja informada, ele tentar usar a ltima criada. Em nossos exemplos, iremos sempre informar os dois parmetros. $db = mysql_select_db("clientes", $conn); Neste ponto j temos uma conexo com o servidor e j criamos um link com o banco de dados. Agora podemos enviar os comandos SQL htmlspecialchars() & amp;

de desejarmos. Se voc no souber SQL, volte a este site em algumas semanas que voc vai encontrar um tutorial de SQL. Agora segue nosso exemplo prtico: Vamos usar o script do mdulo passado e alter-lo de modo que os dados digitados no formulrio sejam gravados no banco de dados clientes antes de enviar o e-mail. <?php $erro = ""; # Verificar se o campo NOME est vazio. if ($nome == "") { erro .= "Digite seu Nome\n"; } # Verificar a quantidade de caracteres no campo TELEFONE. if ((strlen($telefone) > 8) or (strlen($telefone) < 7)) { $erro .= "O nmero do telefone deve ter 7 ou 8 caracteres\n"; } # Testar vamor do campo E-mail, verificando o caracter "@" if strpos ($email, "@") = 0 { $erro .= "O e-mail digitado no vlido\n"; } # Cabealho de resposta. echo("\n"); echo("<center>\n"); if ($erro == "") { ;$conn = mysql_connect("localhost" , "admin" , "admin"); $db = mysql_select_db("clientes", $conn); $sql = mysql_query("insert into dados (nome, email, telefone) values ('".addslashes($nome). "','".addslashes($email)."', '".addslashes($email)."')" or die("No foi possvel atualizar a tabela"); mysql_connect($conn); mail("valdirleite@ig.com.br", "Dados do Formulrio"," Nome: $nome\n E-mail: $email\n Telefone: $telefone\n","From: $email\nDate: $date\n"); echo("Obrigado por enviar este formulrio!\n"); } else { echo("No foi possvel enviar o formulrio! Verifique as mensagens abaixo: \n"); echo("<b>$erro </b>\n"); echo("<br><br><a href=form.htm>Voltar\n"); } echo("</center>"); As linhas em negrito foram acrescentadas para que o script possa gravar os dados do formulrio na tabela DADOS do banco de dados CLIENTES, que est no mesmo servidor onde est sendo rodado o script (LOCALHOST). Este o procedimento padro para usar servidores de banco de dados com o PHP: Conectar ao servidor Abrir o banco de dados (um servidor SQL pode ter mais de um banco de dados) Enviar os comandos SQL Fechar o banco de dados Desconectar ao servidor A novidade deste exemplo fica por conta do comando die que finaliza o script caso a funo que o precede no possa ser executada. Veja no prximo mdulo No prximo mdulo, vamos discutir um pouco mais sobre banco de dados e ver funes avanadas do PHP, como tratamento de erros, upload de arquivos, autenticao de usurios alm de funes de FTP e HTTP.

Pgina 1 | 2 | 3 | 4

Você também pode gostar