Escolar Documentos
Profissional Documentos
Cultura Documentos
I V Doc41.3
I V Doc41.3
CEFET Roraima
Professor: Talles Dino Monteiro Figueiredo
Tecnologias Web
SUMÁRIO
1. PHP: Princípios Básicos
1.1 O que é o PHP?
1.2 A História do PHP
2. Razões para utilizar o PHP
2.1 Custo
2.2 Código fonte aberto
2.3 Licença
2.4 Adequação
3. O PHP é rápido
4. Adicionando PHP à HTML
5. Comentários, Variáveis e Impressão
6. Tipos no PHP
7. Controle
8. Utilizando e definindo funções
9. Strings
10. Arrays
11. Operadores
12. Banco de dados MySQL
13. Instalando o PHP
13.1 Windows
14. O PHP na prática
14.1 Criando as tabelas
14.2 Área administrativa
2
PHP também tem como uma das características mais importantes o suporte a
um grande número de bancos de dados, como dBase, Interbase, mSQL, mySQL,
Oracle, Sybase, PostgreSQL e vários outros. Construir uma página baseada em um
banco de dados torna-se uma tarefa extremamente simples com PHP.
2.1 Custo
PHP não custa nada, ele é um produto totalmente FREE. A maioria das pessoas
obtém o PHP via downloads gratuitos, mas é possível ter pago por ele como parte de
uma distribuição Linux, de um livro técnico ou de algum outro produto.
Como pode-se ver o PHP é o único que não tem custo nenhum tanto para
desenvolvimento quanto para o servidor pois eles são totalmente gratuitos bastando
apenas que se baixe da Internet.
De uma vez por todas é tempo de rever alguns conceitos. Atualmente o mundo
se encontra no meio de um turbilhão de mudanças no negócio de software. Hoje,
muitos dos mais importantes (se não a maioria) dos softwares de consumidor são
distribuídos sem custo: clientes de correio eletrônico, navegador da Web, jogos e até
conjuntos completos de serviços de escritórios estão sendo distribuídos tão
rapidamente quanto seus criadores podem criar versões de Web ou configurar
servidores de FTP.
O software para consumidor é visto cada vez mais, como um líder perdido, a
flor que atrai a abelha polinizadora em outras palavras, uma maneira de vender mais
hardware de servidor, sistemas operacionais, conectividade, anúncios publicitários,
utensílios opcionais ou ações da bolsa. Portanto, o preço de varejo total de um
software não é mais uma medida confiável de sua qualidade, nem do nível de
exigência do usuário.
2.3 Licença
A liberdade de código-fonte aberto e software gratuito é garantida por um
grupo de esquemas de licença, sendo o mais famoso a GPL (GNU General Public
License) ou "copyleft". O PHP costumava ser liberado tanto sob a licença de GPL como
por sua própria licença, com cada usuário livre para escolher entre eles. Entretanto,
recentemente isso mudou: agora o programa como um todo é distribuído sob sua
licença extremamente "laissez-faire" do PHP4; ao passo que Zend como um produto
independente é distribuído sob a Q Public License (essa cláusula aplica-se comente se
você separar a Zend do PHP e tentar vendê-lo).
A maioria das pessoas obtém o PHP via downloads gratuitos, mas talvez você
possa ter pagado por ele, seja como parte da distribuição do Linux, de um livro técnico
ou de algum outro produto. Nesse caso, pode-se pensar sobre essa afirmação de que o
PHP não custa nada. Eis o "x" da questão: embora nenhuma taxa seja necessária para
a maioria dos softwares de código-fonte aberto, você pode cobrar a entrega deste
software em um formato mais conveniente como colocá-lo em um disco e despachar o
6
disco para o cliente. Pode-se também cobrar qualquer coisa que o mercado esteja
disposto a pagar por querer realizar certos serviços ou aceitar os riscos que a equipe
de desenvolvimento não quer correr. Por exemplo, pode-se cobrar para garantir que
cada cópia do software que você distribui esteja livre de vírus ou com uma qualidade
razoável, assumindo o risco de ser processado caso um grupo de clientes obtém os
CD-ROM ruins com vírus que apagam a unidade de disco rígido.
2.4 Adequação
Somente a pessoa envolvida ao projeto poderá decidir se o PHP será a
linguagem de sua escolha, seja um desenvolvedor de sites pessoais e comerciais em
larga ou pequena escala. O PHP é flexível, rápido e simples em seus requisitos, no
entanto poderoso nos resultados.
Pode-se afirmar com absoluta certeza que irá utilizar sempre o mesmo servidor
da Web em nível de software e hardware? Se não for, deve-se pesquisar alguma
plataforma neutra e disponível para múltiplos servidores de Web: PHP.
3. O PHP é rápido
O PHP é surpreendente veloz em sua execução, especialmente quando
compilado um módulo Apache.
O PHP 5 é rápido em quase todas as aplicações, com exceção dos scripts de
CGI. Embora sofra uma ligeira queda de desempenho por ser interpretado em vez de
compilado, isso é de longe superado pelos benefícios que o PHP deriva de seu status
como um módulo de servidor Web. Quando compilado dessa maneira, o PHP torna-se
parte do próprio daemon de http. Como não há nenhuma transferência para e a partir
de um servidor de aplicação separado (como há, por exemplo, com o ColdFusion), as
solicitações podem ser atendidas de maneira mais eficiente possível.
Embora nenhum benchmark sistemático e formal tenha comparado os dois,
muitos comentários e muitos pequenos benchmarks sugerem que o PHP é pelo menos
tão rápido quanto o ASP ou JSP na maioria das aplicações.
Para inserir uma aspas simples(como um apóstrofo) em uma string entre aspas
simples, “escape” a aspa simples com uma barra invertida:
$literalmente=‘mike\’s homepage’;
6. Tipos no PHP
6.1. Os tipos simples:
Os tipos simples do PHP (inteiro, números de dupla precisão, booleanos, NULL e
strings) devem ser em sua maioria familiar àqueles com experiência em programação.
Inteiros: Inteiros são o tipo mais simples e correspondem ainteiros simples,
tanto positivos como negativos.
Formatos de leitura: Os inteiros podem ser lidos em 3 formatos, que
correspondem à base: decimal, octal e hexadecimal. O formato decimal é o padrão.
Para a maioria das plataformas o maior número inteiro é 2.147.483.647 e o mesmo
corresponde ao valor negativo.
Números de dupla precisão: São os números de ponto flutuante.
Booleanos: O PHP fornece um par de constantes especialmente para utilização
como booleanos: TRUE e FALSE.
10
7. Controle
7.1. Operadores:
7.1.1. Lógicos: and, or, &&, ||.
7.1.2. Comparação: ==, !=, <, >, <=, >= e ===.
7.2. Desviando: if-else(ou elseif, para seqüências em cascata) e switch.
7.3. Fazendo Loops: While, do-while(teste no final), for.
Break e continue:
Exemplo:
Break: Encerra o loop mais interno que o contém.
for ($x = 1; $x < 10; $x++)
{
// se $x é ímpar, interrompe
if ($x % 2 != 0)
break;
print("$x ");
}
Continue: Pula para o fim da repetição atual do loop mais interno que o contém. O
efeito da instrução é pular a impressão de qualquer número ímpar.
for ($x = 1; $x < 10; $x++)
{
// se $x é ímpar, interrompe
if ($x % 2 != 0)
continue;
print("$x ");
}
Qualquer código PHP válido pode estar contido no interior de uma função. Como
a checagem de tipos em PHP é dinâmica, o tipo de retorno não deve ser declarado,
sendo necessário que o programador esteja atento para que a função retorne o tipo
desejado. É recomendável que esteja tudo bem documentado para facilitar a leitura e
compreensão do código. Para efeito de documentação, utiliza-se o seguinte formato de
declaração de função:
Este formato só deve ser utilizado na documentação do script, pois o PHP não
aceita a declaração de tipos. Isso significa que em muitos casos o programador deve
estar atento ao tipos dos valores passados como parâmetros, pois se não for passado
o tipo esperado não é emitido nenhum alerta pelo interpretador PHP, já que este não
testa os tipos.
Valor de retorno
Toda função pode opcionalmente retornar um valor, ou simplesmente executar
os comandos e não retornar valor algum.
Não é possível que uma função retorne mais de um valor, mas é permitido fazer
com que uma função retorne um valor composto, como listas ou arrays.
Argumentos
É possível passar argumentos para uma função. Eles devem ser declarados logo
após o nome da função, entre parênteses, e tornam-se variáveis pertencentes ao
escopo local da função. A declaração do tipo de cada argumento também é utilizada
apenas para efeito de documentação.
Exemplo:
function imprime($texto){
echo $texto;
}
imprime(“teste de funções”);
12
Exemplo:
function mais5($numero) {
$numero += 5;
}
$a = 3;
mais5($a); //$a continua valendo 3
$a = $b = 1;
mais5($a, $b); /* Neste caso, só $num1 terá seu valor alterado, pois a
passagem por referência está definida na declaração da função. */
teste(azul);
/* A função não vai funcionar da maneira esperada, ocorrendo um erro no
interpretador. A declaração correta é: */
teste2(azul);
Contexto
Escopo
O escopo de uma variável em PHP define a porção do programa onde ela pode
ser utilizada. Na maioria dos casos todas as variáveis têm escopo global. Entretanto,
em funções definidas pelo usuário um escopo local é criado. Uma variável de escopo
global não pode ser utilizada no interior de uma função sem que haja uma declaração.
Exemplo:
$php = “Testando”;
function Teste() {
echo $php;
}
Teste();
O trecho acima não produzirá saída alguma, pois a variável $php é de escopo
global, e não pode ser referida num escopo local, mesmo que não haja outra com
nome igual que cubra a sua visibilidade. Para que o script funcione da forma desejada,
a variável global a ser utilizada deve ser declarada.
Exemplo:
$php = “Testando”;
function Teste() {
global $php;
echo $php;
}
Teste();
Uma declaração “global” pode conter várias variáveis, separadas por vírgulas.
Uma outra maneira de acessar variáveis de escopo global dentro de uma função é
utilizando um array pré-definido pelo PHP cujo nome é $GLOBALS. O índice para a
variável referida é o próprio nome da variável, sem o caracter $. O exemplo acima e o
abaixo produzem o mesmo resultado:
Exemplo:
$php = "Testando";
function Teste() {
echo $GLOBALS["php"]; // imprime $php
echo $php; // não imprime nada
}
Teste();
15
Nota: Não há nenhum problema nas strings se tornarem muito grandes. Não há
nenhum limite para o tamanho de strings imposta pelo PHP, então não há razão para
se preocupar com strings longas.
Sintaxe
apóstrofo
aspas
sintaxe heredoc
Apóstrofos
A maneira mais simples para especificar uma string é delimitá-la entre apóstrofos
(o caracter ').
Para especificar um apóstrofo. você precisará "escapá-la" com uma contra barra
(\), como em muitas outras linguagens. Se uma contra barra precisa ocorrer antes de
um apóstrofo ou no final da string, você precisa duplicá-la. Note que se você tentar
escapar qualquer outro caracter, a contra barra também será impressa! Então
geralmente não é necessário escapar a própria contra barra.
Nota: No PHP 3, um aviso com nível E_NOTICE será emitido quando isto acontecer.
16
Nota: Diferentemente das duas outras sintaxes, variáveis não serão substituídas
quando elas ocorrerem dentro de strings delimitadas por apóstrofes.
Aspas
Seqüências de escape
Seqüência Significado
\n fim de linha (linefeed ou LF ou 0x0A (10) em ASCII)
\r retorno de carro (carriage return ou CR ou 0x0D (13) em ASCII)
\t TAB horizontal (HT ou 0x09 (9) em ASCII)
\\ contra barra ou barra invertida
\$ sinal de cifrão
\" aspas
a seqüência de caracteres batendo a expressão regular dos caracteres
\[0-7]{1,3}
em notação octal
\x[0-9A-Fa-f] a seqüência de caracteres batendo a expressão regular de um
{1,2} caracter em notação hexadecimal
Novamente se você tentar escapar qualquer outro caracter, a contra barra será
impressa também!
Mas o mais importante dado a respeito de strings delimitadas por aspas está no
fato de que nome de variáveis serão substituídos.
Heredoc
Atenção
Textos heredoc se comportam como strings delimitadas por aspas, com apenas uma
diferença. Você não precisa escapar apóstrofos e aspas em seus heredocs, mas você ainda
pode continuar utilizando os códigos de escape listados acima. Variáveis são substituídas,
mas o mesmo cuidado precisa ser tomado quando expressando variáveis complexas dentro
de heredocs assim como nas strings.
<?php
$str = <<<EOD
Exemplo de uma string
distribuída em várias linhas
utilizando a sintaxe heredoc.
EOD;
function foo()
{
$this->foo = 'Foo';
$this->bar = array('Bar1', 'Bar2', 'Bar3');
}
}
echo <<<EOT
Meu nome é "$name". Eu estou imprimindo $foo->foo.
Agora, eu estou imprimindo {$foo->bar[1]}.
Isto deve imprimir um 'A' maiúsculo: \x41
18
EOT;
?>
Interpretação de variáveis
A sintaxe completa foi introduzida no PHP 4, e pode ser reconhecida por chaves
({}) envolvendo a expressão.
Sintaxe simples
$cerveja = 'Heineken';
echo "O sabor das '$cerveja's é otimo"; // funciona, "'" é um caracter inválido para
nome de variáveis
echo "Ele bebeu algumas $cervejas"; // não funciona, 's' é um caracter válido para
nome de variáveis
echo "Ele bebeu algumas ${cerveja}s"; // funciona
Para qualquer coisa mais complexa, você precisa utilizar a sintaxe complexa.
De fato, você pode incluir qualquer valor no que esteja no espaço de nomes dentro
de strings com esta sintaxe. Você simplesmente escreve a expressão da mesma maneira que
faria fora da string, e então incluí-la entre chaves. Desde que você não pode escapar '{', esta
sintaxe somente será reconhecida quando o $ é imediatamente seguido de um {. (Utilize "{\
$" ou "\{$" para obter um literal "{$"). Alguns exemplos para tornar isso mais claro:
$maravilhoso = 'fantástico';
echo "Isto é { $maravilhoso}"; // não funciona, imprime: Isto é { fantástico}
echo "Isto é {$maravilhoso}"; // funciona, imprime: Isto é fantástico
echo "Este quadrado tem {$square->width}00 centímetros de lado.";
echo "E isto funciona: {$arr[4][3]}";
Nota: Para manutenção de compatibilidade, você ainda pode utilizar colchetes. Entretanto,
esta sintaxe for marcada como em extinção desde o PHP 4.
<?php
/* Assimilando uma string. */
$str = "Isto é uma string";
20
/* Anexando a ela. */
$str = $str . " com uma pouco mais de texto";
10. Arrays
10.1. O uso de arrays: Para acessar o conteúdo de uma variável, o nome é utilizado.
Se a variável é um array, o seu conteúdo é acessado usado o nome e a chave do
índice. A chave indica que podemos acessar o seu conteúdo. O índice está posicionado
entre colchetes depois do nome do array. Tipo $products[0] e $products[1]. O
elementos zero é a primeira posição do array. O PHP segue o mesmo esquema de
numeração do C, C++, Java e outras linguagens.
10.2. Usando Loops para acessar um Array: Como o array é indexado por uma
seqüência de números, nós podemos usar um loop “for” para simplificar a exibição dos
dados do array:
For ( $i = 0; $i<3; $i++)
echo “$products[$i]”;
11. Operadores
11.1. Operadores aritméticos: +, -, *, / e % (resto)
11.3. Operadores de incremento: ++.
11.4. Operadores de atribuição: =, +=, -=, /= e %=
10.5. Operadores de comparação: ==, !=, <, >, <=, >= e ===.
21
mysql_select_db("BD_PHP5",$_con);
if($_con===FALSE) {
echo "Não foi possivel conectar ao Banco de Dados " .
mysql_error();
exit;
}
?>
mysql_query(comando_SQL,conexão)
Para executar qualquer consulta no banco de dados, devemos utilizar a função
conforme exemplo acima. O parâmetro conexão é opcional e se não for informado, a
função utiliza a última conexão aberta com o MySQL. O resultado dessa função em
caso de fracasso é falso e em caso de sucesso depende do tipo de comando que foi
enviado ao banco de dados. Após e execução de mysql_query, pode-se obter o número
de linhas retornadas no caso de comandos que retornam um identificador.
$_sql .= "(NULL,'raimundo','antonio','mundico',5,'mundico@tutorial.com.br'),";
$_res = mysql_query($_sql,$_con);
mysql_fetch_array(identificador,tipo)
Retorna um array, com índices tanto numéricos quanto como chaves
associativas, do registro atual da consulta.
<?while($array_cliente = mysql_fetch_array($_res)) {?>
<tr bgcolor="ebebeb">
<td width="19%" height="25"><font face="Arial" size="2">
<?echo $array_cliente['inclusao_user'];?>
</font></td>
<td width="33%" height="25"><font face="Arial" size="2">
<?echo $array_cliente['nome_user'];?>
</font></td>
http://localhost/
Cadastro de clientes
24
tb_clientes
- id_user Número auto – incremento, vai ser a chave primária
- inclusao_user Data e horário do cadastro do cliente
- user apelido do cliente
- senha senha do cliente
- nome_user Nome completo
- end_user Endere
- bairro_user Bairro
- email_user Email
- tel_user Telefone
- cidade_user Cidade
- estado_user Código do Estado
tb_user – Essa tabela contém os usuários que tem permissão para mexer na área
administrativa
- id_user Número auto – incremento, vai ser a chave primária
- apelido apelido do usuário que vai ter acesso ao sistema.
- senha senha do usuário que vai ter acesso ao sistema.
Arquivo: conecta.php
<?
class bd {
var $bd;
var $id;
function bd($sgbd="PostgreSQL"){
$this->bd=$sgbd;
}
function conecta($bd,$srv,$prt,$usr,$senha){
if($this->bd=="PostgreSQL"){
$this->id = pg_connect($srv,$prt,$usr,$senha,$bd);
}else {
$this->id = mysql_connect($srv,$usr,$senha);
if($this->id){
mysql_select_db($bd,$this->id);
28
}else
$this->id=0;
}
}
}
?>
session_destroy.php
<?php
session_start();
session_unset();
29
session_destroy();
header("Location:index.php");
?>
Código fonte:
<?
include "conecta.php";
$con = new bd(mySQL);
$con->conecta("clientes","127.0.0.1","","root","12345"); //Conecta com o banco de dados MySQL
if(($apelido_login) AND ($senha_login)) { //Ele entra nessa condição se as duas variáveis não estiverem
vazia
if(mysql_num_rows($sql) > 0) {
$id_user = mysql_result($sql,0,"id_user");
$apelido_user = mysql_result($sql,0,"apelido");
$senha_user = mysql_result($sql,0,"senha");
<tr>
<td width="33%" height="25"><font face="Arial" size="2">Apelido:</font></td>
<td width="67%" height="25"><font face="Arial" size="2">
<input type="text" name="apelido_login"></font></td>
</tr>
<tr>
<td width="33%" height="25"><font face="Arial" size="2">Senha:</font></td>
<td width="67%" height="25"><font face="Arial" size="2"><input type="password"
name="senha_login"></font></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="entrar" value="Entrar"></td>
</tr>
</table>
</form>
</body>
</html>
Caso elas não estejam, é colocada uma mensagem na tela dizendo que: Essa é
uma área restrita.
As opções são:
1. Cadastrar clientes;
2. Gerenciar clientes;
3. Logout
Código fonte:
<?
include "conecta.php";
$con = new bd(mySQL);
$con->conecta("clientes","127.0.0.1","","root","12345"); //Conecta com ao banco de dados MySQL
include "ver_sessao.php"; //Verifica se a sessão está ativa
?>
<html>
<head>
<title>PHP & MySQL</title>
</head>
<?
if($acao == 'cadastrar') { /*Cadastra o cliente depois que o formulário for enviado */
//Verifica os dados enviados
if(empty($nome_user)) {
$erros++;
$campo_vazio = $campo_vazio."<br>Nome";
}
if(empty($end_user)) {
$erros++;
$campo_vazio = $campo_vazio."<br>Endereço";
}
if(empty($bairro_user)) {
$erros++;
$campo_vazio = $campo_vazio."<br>Bairro";
}
if(empty($email_user)) {
33
$erros++;
$campo_vazio = $campo_vazio."<br>Email";
}
if(empty($tel_user)) {
$erros++;
$campo_vazio = $campo_vazio."<br>Telefone";
}
if(empty($cidade_user)) {
$erros++;
$campo_vazio = $campo_vazio."<br>Cidade";
}
if(empty($estado_user)) {
$erros++;
$campo_vazio = $campo_vazio."<br>Estado";
}
if($erros == 0) {
$sql = mysql_query("INSERT INTO
tb_clientes(inclusao_user,nome_user,end_user,bairro_user,email_user,
tel_user,cidade_user,estado_user) VALUES(now(),'$nome_user','$end_user','$bairro_user',
'$email_user','$tel_user','$cidade_user','$estado_user')")
or die("Erro no comando SQL:".mysql_error());
<?
if($acao == 'entrar') { /*Mostra o formulário de cadastro de clientes */
<tr>
<td height="25" width="24%"><font face="Arial" size="2">Email:</font></td>
<td height="25" width="76%"><font face="Arial" size="2">
<input type="text" name="email_user" size="35"></font></td>
</tr>
<tr>
<td height="25" width="24%"><font face="Arial" size="2">Telefone:</font></td>
<td height="25" width="76%"><font face="Arial" size="2">
<input type="text" name="tel_user" size="20"></font></td>
</tr>
<tr>
<td height="25" width="24%"><font face="Arial" size="2">Cidade:</font></td>
<td height="25" width="76%"><font face="Arial" size="2">
<input type="text" name="cidade_user" size="35"></font></td>
</tr>
<tr>
<td height="25" width="24%"><font face="Arial" size="2">Estado:</font></td>
<td height="25" width="76%"><font face="Arial" size="2">
<select name="estado_user">
<option value="0"><< Selecione o estado >></option>
<?while($array = mysql_fetch_array($sql_estados)) {?>
<option value="<?echo $array['id_estado'];?>"><?echo $array['estado'];?></option>
35
<?}?>
</select></font></td>
</tr>
<tr>
<td height="25" colspan="2">
<div align="center">
<input type="submit" name="cadastrar" value="Cadastrar cliente >>"></div></td>
</tr>
</table>
</form>
<?} /*fecha acao=entrar */?>
</body>
</html>
Código fonte:
<?
include "conecta.php";
$con = new bd(mySQL);
$con->conecta("clientes","127.0.0.1","","root","12345"); //Conecta ao banco de dados MySQL
include "ver_sessao.php"; //Verifica se a sessão está ativa
?>
<html>
<head>
<title>PHP & MySQL<title>
</head>
if($pesquisar == 'sim')
$sql_cliente = $sql_cliente." AND nome_user LIKE '%$pesq%'";
?>
<br>
<table width="60%" border="0" cellspacing="0" cellpadding="0" align="center">
37
<tr>
<td height="60">
<div align="center"><font face="Arial" size="4"><b>Gerenciamento de
Clientes</b></font></div></td>
</tr>
</table>
<br>
<form name="frm_pesq" method="post" action="<?echo $PHP_SELF?>">
<table width="75%" border="0" cellspacing="1" cellpadding="0" align="center">
<tr bgcolor="#6699CC">
<td colspan="2">
<div align="center"><font face="Arial" size="2"><b>Pesquisa</b></font></div></td>
</tr>
<tr bgcolor="ebebeb">
<td width="32%"><font face="Arial" size="2">Nome a ser procurado:</font></td>
<td width="68%"> <font face="Arial" size="2"><input type="text" name="pesq" size="25">
<input type="submit" name="pesq" value="Pesquisar >>">
<input type="hidden" name="pesquisar" value="sim"></font></td>
</tr>
</table>
</form>
<br>
<?if(mysql_num_rows($sql_cliente) > 0) {?>
<td width="13%">
<div align="center"><b><font face="Arial" size="2">Alterar </font></b></div>
</td>
<td width="12%">
<div align="center"><b><font face="Arial" size="2">Excluir</font></b></div>
</td>
</tr>
<?while($array_cliente = mysql_fetch_array($sql_cliente)) {?>
<tr bgcolor="ebebeb">
<td width="19%" height="25"><font face="Arial" size="2">
<?echo $array_cliente['inclusao_user'];?>
</font></td>
<td width="33%" height="25"><font face="Arial" size="2">
<?echo $array_cliente['nome_user'];?>
</font></td>
<td width="23%" height="25"><font face="Arial" size="2">
<?echo $array_cliente['cidade_user'];?>
/
<?echo $array_cliente['uf'];?>
</font></td>
<td width="13%" height="25">
<div align="center"><font face="Arial" size="2">[ <a href='altclientes.php?id_cliente=<?echo
$array_cliente['id_user'];?>&acao=entrar'>Alterar</a>
]</font></div>
</td>
<td width="12%" height="25">
<div align="center"><font face="Arial" size="2">[ <a href='excluirclientes.php?id_cliente=<?echo
$array_cliente['id_user'];?>'>Excluir</a>
]</font></div>
</td>
</tr>
<?}?>
</table>
<?}/* fecha mysql_num_rows > 0 */
else{
echo "<br><br><div align=center><font face=Arial size=2>
Desculpe, mais não achei nada<br><br></font></div>";
}?>
<br><div align=center><font face=Arial size=2>
<a href='opcoes.php'>[ Voltar para o menu de opções ]</a></font></div>
</body>
</html>
if($pesquisar == 'sim')
$sql_cliente = $sql_cliente." AND nome_user LIKE '%$pesq%'";
Para fazer a pesquisa usamos no SQL a opção LIKE. Note, que formatamos a
saída da data usando date_format().
Código fonte:
<?
include "conecta.php";
$con = new bd(mySQL);
$con->conecta("clientes","127.0.0.1","","root","12345"); //Conecta com o banco de dados MySQL
include "ver_sessao.php"; //Verifica se a sessão está ativa
?>
<html>
<head>
<title>PHP & MySQL</title>
</head>
<td height="60">
<div align="center"><font face="Arial" size="4"><b>Alterar dados do Cliente</b></font></div>
</td>
</tr>
</table>
<br>
<?
if($acao == 'alterar') { /*Cadastra o cliente depois que o formulário for enviado */
//Verifica os dados enviados
if(empty($nome_user)) {
$erros++;
$campo_vazio = $campo_vazio."<br>Nome";
}
if(empty($end_user)) {
$erros++;
$campo_vazio = $campo_vazio."<br>Endereço";
}
if(empty($bairro_user)) {
$erros++;
$campo_vazio = $campo_vazio."<br>Bairro";
}
if(empty($email_user)) {
$erros++;
$campo_vazio = $campo_vazio."<br>Email";
}
if(empty($tel_user)) {
$erros++;
$campo_vazio = $campo_vazio."<br>Telefone";
}
if(empty($cidade_user)) {
$erros++;
$campo_vazio = $campo_vazio."<br>Cidade";
}
if(empty($estado_user)) {
$erros++;
$campo_vazio = $campo_vazio."<br>Estado";
}
41
if($erros == 0) {
$sql = mysql_query("UPDATE tb_clientes SET nome_user='$nome_user',end_user='$end_user',
bairro_user='$bairro_user',email_user='$email_user',tel_user='$tel_user',
cidade_user='$cidade_user',estado_user='$estado_user' WHERE id_user='$id_cliente'")
or die("Erro no comando SQL:".mysql_error());
<?
if($acao == 'entrar') { /*Mostra o formulário de alteração dos dados do cliente */
<tr>
<td height="25" width="24%"><font face="Arial" size="2">Endereço:</font></td>
<td height="25" width="76%"><font face="Arial" size="2">
<input type="text" name="end_user" size="30" value="<?echo
$array_cliente['end_user'];?>"></font></td>
42
</tr>
<tr>
<td height="25" width="24%"><font face="Arial" size="2">Bairro:</font></td>
<td height="25" width="76%"><font face="Arial" size="2">
<input type="text" name="bairro_user" size="30" value="<?echo
$array_cliente['bairro_user'];?>"></font></td>
</tr>
<tr>
<td height="25" width="24%"><font face="Arial" size="2">Email:</font></td>
<td height="25" width="76%"><font face="Arial" size="2">
<input type="text" name="email_user" size="35" value="<?echo
$array_cliente['email_user'];?>"></font></td>
</tr>
<tr>
<td height="25" width="24%"><font face="Arial" size="2">Telefone:</font></td>
<td height="25" width="76%"><font face="Arial" size="2">
<input type="text" name="tel_user" size="20" value="<?echo
$array_cliente['tel_user'];?>"></font></td>
</tr>
<tr>
<td height="25" width="24%"><font face="Arial" size="2">Cidade:</font></td>
<td height="25" width="76%"><font face="Arial" size="2">
<input type="text" name="cidade_user" size="35" value="<?echo $array_cliente['cidade_user'];?
>"></font></td>
</tr>
<tr>
<td height="25" width="24%"><font face="Arial" size="2">Estado:</font></td>
<td height="25" width="76%"><font face="Arial" size="2">
<select name="estado_user">
<option value="0"><< Selecione o estado >></option>
<?
while($array = mysql_fetch_array($sql_estados)) {
$estado_cliente = $array_cliente['estado_user'];
$cod_estado = $array['id_estado'];
$estado = $array['estado'];
if($estado_cliente == $cod_estado)
echo "<option value='$estado_cliente' selected>$estado</option>";
else
echo "<option value='$cod_estado'>$estado</option>";
43
}?>
</select></font></td>
</tr>
<tr>
<td height="25" colspan="2">
<div align="center">
<input type="submit" name="alterar" value="Alterar dados >>">
<input type="hidden" name="id_cliente" value="<?echo $array_cliente['id_user'];?>">
</div></td>
</tr>
</table>
</form>
<?} /*fecha acao=entrar */?>
</body>
</html>
Sendo que na cláusula WHERE, aquele id_cliente é o código do cliente que está
sendo modificado.
Código fonte:
<?
include "conecta.php";
$con = new bd(mySQL);
$con->conecta("clientes","127.0.0.1","","root","12345"); //Conecta com o banco de dados MySQL
include "ver_sessao.php"; //Verifica se a sessão está ativa
?>
São padrões que correspondem strings. Elas são muito utilizadas para criar
testes true/false complexos em strings e também para extrair substrings e fazer
substituições complexas.
‘www.ibm.com’
‘www.zend.com’
E não as seguintes:
‘java.sun.com’
‘www.php.net’
45
‘www.IBM.com’
‘www. Qualquer coisa.com’
^www\.[a-z]+\.com$
Nessa expressão temos o símbolo ‘^’, que informa que a parte www deve estar
no início da string. A seguir vem o ponto (.), precedido por barras invertidas que
informa que realmente queremos um ponto, não o caractere curinga ‘.’. A seguir,
temos um intervalo incluído entre colchetes de todas as letras alfabéticas em letras
minúsculas. O + seguinte indica que queremos corresponder qualquer número dessas
letras minúsculas em seqüência, contanto que tenhamos pelo menos um deles. E
então outro ‘.’ Literal, o com e o caractere especial $ que informa que com é o final da
string procurada.
Código fonte:
<?
function simple_dot_com($url)
{
return(ereg('^www\\.[a-z]+\\.com$',$url));
}
$urls_to_test = array('www.ibm.com',
'www.sun.com',
'www.zend.com',
'www.java.sun.com',
'java.sun.com',
'www.IBM.com',
'www.php.net',
'www.isto nao é um endereço web.com',);
while ($test=array_pop($urls_to_test)){
if (simple_dot_com($test))
print("\"$test\" é uma url simples<br>");
46
else
print("\"$test\" não é uma url simples<br>");
}
?>