• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.

Workshop de PHP

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Artigos práticos sobre a programação de páginas com PHP, uma linguagem de programação de sites do lado do servidor muito potente como o qual poderemos criar aplicações muito interessantes.




Capítulos do manual


1.- Gestão de ficheiros através de PHP
Copilámos algumas funções básicas para a gestão de ficheiros com PHP.


2.- Upload de ficheiros com PHP
Realizamos umas páginas que recebem um ficheiro desde o disco rígido do visitante e o transferem ao servidor remoto.


3.- Verificar a existência de uma URL
A través da função fopen de PHP verificamos a existência de uma página externa.


4.- Leitura sequencial de ficheiros com PHP
Aprende a utilizar a função fgets para ler ficheiros de texto com um exemplo prático.


5.- Escritura em ficheiros com PHP
Como e para que utilizar a função fwrite.


6.- Gestão de directórios com PHP
Aprendemos a navegar a través dos paths dos directórios do sistema de ficheiros do servidor.


7.- Função que escreve um campo select com valores de uma base de dados
Uma dica para escrever dados de uma BD num formulário.


8.- Receber o último ID de uma inserção com PHP e MySQL
Veremos um código bastante útil para obter o último ID de uma inserção.


9.- Recolher dados de um Select Multiple com PHP
Este script ensina-nos a técnica necessária para aceder aos elementos seleccionados num select multiple.


10.- Enviar e-mails pelo PHP
Explicamos a maneira de enviar correios através de páginas PHP, exemplos simples e complexos para realizar a tarefa.


11.- Validar um endereço email em PHP
Verificar a validez de um endereço de correio electrónico, isto é, verificar que um email está bem relatado.


12.- Loop para receber todas as variáveis por POST em PHP
Uma maneira simples de receber todas as variáveis de um formulário, enviado por POST, com PHP.


13.- Enviar um formulário por mail com PHP
Exemplo de como enviar um formulário por correio electrónico através de PHP.


14.- Paginação de resultados com PHP e MySQL
Amostra de técnica de paginação, para mostrar em diferentes páginas os resultados de uma consulta à base de dados. O exemplo está desenvolvido em PHP e MySQL.


15.- Usuários ativos com PHP
Veremos como mostrar os usuários ativos em cada momento na nossa página.

 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
16.- Listas de elementos com cores alternas em PHP
Explicamos como listar informação com cores alternas.


17.- Programas de livre distribuição em PHP
Falamos sobre os programas de livre distribuição mais úteis.


18.- phpMyAdmin
Um projecto de código aberto em PHP para administrar a base de dados MySQL através de uma interface web. Descrição, funcionalidades e ajudas para a instalação.


19.- Formatação de uma cadeia
Script PHP que formata uma cadeia para introduzir numa base de dados, para assegurarmos que não estraga uma sentença SQL.


20.- Cálculo dos dias de um mês em PHP
Realizamos uma função que calcula o número de dias de um mês em PHP, que poderemos utilizar no calendário em PHP.


21.- Contador simples para páginas PHP
Criamos um contador, programado em PHP, que leva a conta das impressões que foram realizadas numa página web, utilizando um arquivo de texto como apoio.


22.- Avaliações dos usuários em PHP
Sistema criado em PHP e MySQL para implementar a possibilidade de que os usuários possam votar uma página web.


23.- Rastrear os robôs de buscadores
Código para fazer um rastreamento do comportamento de um buscador ou sua interatividade com nossa web.


24.- Recomendar um site usando PHP
Script que recomenda a um usuário a visitar o site, via e-mail.


25.- Criação de um log de erros
Como criar um arquivo que armazena os erros que foram produzidos durante a execução de um programa, acrescentar um log de erros a nossa página.


26.- Comprimir página PHP
Para abreviar o tempo de carregamento de nossas páginas geradas com PHP, podemos envia-las ao navegador comprimidas com Gzip.


27.- Contador PHP com imagens
Criação de um contador simples de visitas a uma página com a linguagem PHP, que utiliza imagens para mostrar o número de acessos.


28.- Editor PHP Maguma Studio
Apresentamos o editor de PHP Maguma Studio Light. Mostramos como configurá-lo para poder utilizar o debugger, muito útil para depurar nossos códigos PHP.


29.- SiteMaps de Google em PHP
Como criar um arquivo XML para nosso "São Google" usando PHP e não morrer na tentativa.


30.- Teste de velocidade de conexão à Internet
Como obter um reflexo aproximado da conexão à internet, medida em Kbps.


 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
31.- Mostrar Conteúdo de acordo com o país em PHP
O seguinte script para PHP envia o código do país e da linguagem quando o navegador o solicita.


32.- Conteúdos em banco de dados com PHP
Como colocar nossos conteúdos em um banco de dados e chamá-lo pela Url.


33.- Problemas com as datas em timestamp Unix de PHP
Algumas das funções de cálculo de datas de PHP utilizam o timestamp Unix que está restringido a datas compreendidas entre determinados anos. Explicamos a maneira de utilizar uma gama de anos muito maior.


34.- Contar o número de linhas e caracteres em arquivo PHP
Script que abre um arquivo de texto e realiza uma conta do número de linhas e de caracteres que tem.


35.- Transformação Doc, Odt ou Rtf para PDF
Uma necessidade que está surgindo é a criação de arquivos doc, odt ou rtf para pdf. Veremos como faze-lo.


36.- Preencher um arquivo RTF e gerar o PDF
Explicaremos como preencher dinamicamente um arquivo rtf e gerar o seu PDF.


37.- Converter arquivos ods ou xls para pdf
Vremos agora como transformar um arquivo ods ou xls em pdf.


38.- PHP isam, ferramenta Web para Arquivos Planos
Neste capítulo fazemos uma descrição de como fazer transferências de dados usando o modelo de Arquivos Planos, para aquelas aplicações que necessitem seu processamento.


39.- Undefined variable ou Undefined index
O que significa a mensagem do PHP "Notice: Undefined variable ou Undefined index" e como evitar esse tipo de erro.


40.- Agregar carinhas ao sistema
O código necessário para agregar expressões ou carinhas ao nosso sistema.


41.- Paginator, script para paginação com PHP e MySQL
Comentamos as características de um script para realizar paginação de resultados com PHP e MySQL, e que ainda é gratuito.


42.- Executar scripts PHP automaticamente através do cron com CURL
Como podemos executar uma página PHP como uma tarefa programada utilizando CURL.


43.- Uso do FTP com PHP
Explicamos as funções para realizar transferência de arquivo, utilizando o protocolo FTP, através de páginas PHP. Exemplo de código para aprender a transferir arquivos ao servidor.


44.- Instalação de One or Zero PHP Helpdesk
Detalhe passo a passo da instalação e configuração do sistema PHP para Helpdesk e planificação de tarefas de One or Zero.


45.- Portal PHP Nuke
Todo o necessário para a criação de um portal PHP Nuke, desde a instalação de Apache e PHP, até a do próprio sistema web-portal.

 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
46.- Gerando feed RSS de notícias em PHP
Como criar um sistema RSS em PHP para publicar a informação das novidades ou notícias de nosso web site ou blog.


47.- Blasten blt-SEARCH 1.0.5
Um sistema buscador, realizado em PHP e MySQL, que é capaz de indexar conteúdos de um ou de vários web sites, oferecer resultados ordenados por importância e se configurar para diversos usos ou designs.


48.- Classes e Objetos em PHP
Vemos o tipo de sintaxe com o qual se define uma classe.


49.- Recuperando a qualidade de uma imagem JPEG
Nas imagens trabalhadas automaticamente com Php, enfrentamos a perda da cor e a qualidade das mesmas.


50.- Comprovar se existe o domínio do correio
Workshop de PHP no qual vamos utilizar uma série de funções que nos permitirão verificar se existe o domínio de um correio dado.


51.- Tutorial de BBCode
Ensinamos a criar seu próprio BBCode com PHP.


52.- Função em PHP para o cálculo de minutos transcorridos em duas horas dadas
Função que nos permite averiguar as horas ou minutos entre dois tempos dados de um mesmo dia.


53.- Criação de gráficos em PHP com JpGraph
Apresentação da biblioteca JpGraph, que serve para gerar imagens com todo tipo de gráficos de dados em PHP.


54.- Gerar documentos de Word RTF com PHP
Criar arquivos RTF combinando um documento com dados armazenados na Intranet/Extranet.


55.- Introdução ao Symfony
Veremos um framework chamado Symfony que é completo e projetado para otimizar o desenvolvimento de aplicações web.


56.- Arredondar decimais em PHP
Realizamos uma função para arredondar decimais em PHP, ou seja, formatar um float para que tenha um número de decimais qualquer que se deseje.


57.- Envio de boletins a e-mails de um banco de dados MySQL
Código em PHP para o envio de boletins a e-mails armazenados em um banco de dados.


58.- Htaccess e páginas dinâmicas
Forma de fazer com que as url tenham um bom aspecto, sem que apareçam todos os parâmetros que se passam pela url.


59.- Criando imagens com PHP
É possível criar imagens com apenas o PHP. Basta ter a biblioteca GD instalada no PHP do seu servidor.


60.- Programar um buscador com PHP e MySQL
Passos a seguir para a criação de um buscador com PHP e MySQL.


61.- Loop para receber todos os dados de uma fila de um recordset com PHP
Realizamos uma função que recebe uma fila de um conjunto de registros vindo desde um banco de dados e declara variáveis globais com todos os dados da fila.


62.- Criação de BBcode em PHP
Para começar com a categoria PHP, vou ensinar-lhes como criar uma simples função para poder colocar BBcode que inclua a opção de por um texto em negrito, em cursiva, sublinhado, links e imagens.


63.- Incluir feeds em sua web em 5 passos
Dada a crescente oferta de conteúdos em RSS e, sobretudo, a gratuidade de muitos deles, é uma opção muito tentadora para todo webmaster incluir em sua página web uma seção de títulos de notícias, blogs, etc.


64.- Calcular dias entre duas datas com PHP
Script PHP para calcular os dias de diferença que há entre duas datas.


65.- Exemplo de conexão com banco de dados Access em PHP
Um pequeno exemplo para mostrar o modo de conectar de um banco de dados Access com PHP por meio de ODBC.

 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
66.- Utilizar Curl para copiar uma imagem de uma web em nosso disco rígido
Vamos ver um exemplo de utilização da biblioteca CURL para copiar uma imagem que está em uma página web ao nosso disco rígido.


67.- Controle da saída em PHP
PHP dispõe de funções para controlar na saída de dados para o cliente. Pode-se armazenar a saída em um buffer, para enviá-la ao cliente quando se desejar.


68.- Controle de saída em PHP II
Vejamos outras funcionalidades interessantes do controle da saída em PHP, para trabalhar com um buffer de saída. Eliminamos o buffer e executamos funções antes de mostrá-lo.


69.- Mostrar código PHP de um arquivo com cores ressaltadas
Função de PHP para mostrar um arquivo com código PHP com formato e cores ressaltadas para uma leitura mais cômoda.


70.- Propagar o identificador de sessão de PHP por cookies ou URL
O identificador da sessão aberta se pode propagar em uma cookie ou como parâmetro na URL. Vemos as diferenças e como configurar PHP para cada caso.


71.- Como converter páginas com extensão .PHP à extensão que desejar
Este artigo oferece uma solução no caso em que por algum motivo se queira converter as extensões PHP de seu site em outro tipo de extensão já seja alguma conhecida como .htm ou qualquer outra. Neste exemplo utilizaremos .wii.


72.- Estilos CSS diferentes a uma página com PHP e cookies
Fazemos uma página PHP onde o usuário pode escolher o estilo e o salvamos em uma cookie para memorizá-lo nos seguintes acessos.


73.- Canonizar as URL de um domínio com PHP, escolher utilizar ou não as www.
Como canonizar os nomes de domínios, para obrigar que sempre se visite um site com as 3w www…, fazendo redirecionamento com PHP.


74.- Formato de números em PHP
Explicações e exemplos sobre formato de números em PHP. Aprendemos a formatar números em PHP com pontos entre os milhares e comas em decimais.

 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Gestão de ficheiros através de PHP


Copilámos algumas funções básicas para a gestão de ficheiros com PHP.
Por Miguel Angel Alvarez - Tradução de JML





O tratamento de ficheiros torna-se uma prática muito comum em qualquer sitio web. É habitual termos a necessidade de processar um texto para lhe mudar o formato, procurar uma cadeia no seu interior ou qualquer outro tipo de operação.

PHP propõe montes de funções para a gestão de ficheiros que vão desde as mais básicas como por exemplo apertura, leitura e fecho a outras mais complicadas como cálculo de espaço no disco rígido, tamanho do ficheiro, gestão de direitos de acesso...

Neste artigo pretendemos mostrar-vos quais são as funções mais importantes para o tratamento de ficheiros para posteriormente exemplifica-las nuns scripts que vos podem ser úteis:

Funções de gestão de ficheiros

Função Descrição Sintaxe
copy Copia um ficheiro copy($origem,$destino)
rename Muda o nome do ficheiro de $antes a $depois rename($antes,$depois)
unlink Apaga o ficheiro unlink($ficheiro)

Funções para a leitura de ficheiros

Função Descrição Sintaxe
fopen Abre um ficheiro e atribui-lhe um identificador id. Veremos o modo mais a frente. $id = Fopen($archivo, $modo)
fgets Lê uma linha de um ficheiro até um número máximo de caracteres. fgets($id,$max)
fwrite Escreve uma cadeia dentro do ficheiro fwrite($id, $cadeia)
fseek Avança ou retrocede o ponteiro do ficheiro um certo número de posições. fseek($id,$posicoes)
feof Verifica se o ponteiro que lê o ficheiro chegou ao fim. feof($id)
fpassthru Lê completamente o ficheiro e mostra-o. fpassthru($id)
fclose Fecha o ficheiro aberto previamente. fclose($id)

As operações mais básicas, cópia, apagado e mudança de nome, requerem unicamente o nome (e path) do ficheiro sobre o qual se faz a operação. Para operações mais complexas, como a leitura de linhas ou a escritura de texto dentro de um ficheiro, requere-se de uma apertura prévia do ficheiro ao qual lhe atribuímos um identificador $id.

Uma vez aberto o ficheiro, poderemos mover-nos através dele por meio de um ponteiro imaginário que avança ou retrocede pelas linhas de texto e mediante o qual nos situaremos no lugar escolhido para inserir, modificar ou simplesmente copiar uma cadeia.

Existem diversos modos de apertura que nos permitem definir as acções que podemos realizar sobre o ficheiro. Aqui mostramos as diferentes maneiras, que como podem observar, são muito variadas:

Modos de apertura de ficheiros

Sintaxe Descrição
'r' Só leitura
'r+' Leitura e escritura
'w' Só escritura
'w+' Leitura e escritura. Apaga o conteúdo anterior se se escreve. O ficheiro é criado se não existe.
'a' Só escritura. O ficheiro é criado se não existe e o ponteiro coloca-se no fim.
'a+' Leitura e escritura. O ficheiro é criado se não existe e o ponteiro coloca-se no fim.

Se estivermos a trabalhar com ficheiros em binário temos de colocar uma b a frente do modo (ex. Ba, bw+,...)

Relembramos que esta lista não é mais do que uma compilação e que muitas outras funções relacionadas podem ser-nos úteis.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Upload de ficheiros com PHP


Realizamos umas páginas que recebem um ficheiro desde o disco rígido do visitante e o transferem ao servidor remoto.
Por Miguel Angel Alvarez - Tradução de JML




Em PHP temos muitas funcionalidades desenvolvidas desde o principio e sem a necessidade de instalar nada no nosso servidor. É o caso de fazer upload de ficheiros a um servidor web através de HTTP e através de uma página com um formulário, onde se permite seleccionar o ficheiro que queremos carregar do nosso disco rígido.

O exemplo está bem documentado numa data de páginas para programadores, como por exemplo na página da própria tecnologia: PHP: Manejo de envío de archivos - Manual. Nós neste caso vamos tentar ir um pouco mais longe, realizando umas quantas comprovações ao sibir o ficheiro e combinando no mesmo formulário campos de tipo file e tipo text.

O formulário para fazer upload e seleccionar os ficheiros

É um formulário qualquer, mas tem uma serie de peculiaridades e campos file, que não costumamos utilizar habitualmente.

<form action="sobeficheiro.php" method="post" enctype="multipart/form-data">
<b>Campo de tipo texto:</b>
<br>
<input type="text" name="cadeiatexto" size="20" maxlength="100">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
<br>
<br>
<b>Enviar um novo ficheiro: </b>
<br>
<input name="userfile" type="file">
<br>
<input type="submit" value="Enviar">
</form>

Para começar vemos que se colocou um atributo novo no formulário: enctype="multipart/form-data", necessário para subir no mesmo formulário dados e ficheiros.

Também temos o campo hidden MAX_FILE_SIZE, que serve para indicar o tamanho em bytes dos ficheiros a fazer upload. Este campo em alguns navegadores não funciona. Para além disso, é fácil saltar esta protecção, pelo que devemos comprovar nas próprias páginas PHP comprovar que o ficheiro tem o tamanho que desejamos.

Em último lugar, temos o campo tipo file, onde se seleccionará o ficheiro a subir. Também colocámos um campo de tipo text, para subir dados através de POST de tipo texto acompanhando aos dados binários do ficheiro.

Página que sobe os ficheiros

Esta página deve fazer as comprovações necessárias para saber se as características do ficheiro são as que desejamos e realizar a cópia do ficheiro num directório do servidor.

Para fazer as comprovações, PHP cría-nos uma serie de variáveis que podemos aceder com a informação do ficheiro enviado.

$HTTP_POST_FILES['userfile']['name']
O nome original do ficheiro na máquina cliente.

$HTTP_POST_FILES['userfile']['type']
O tipo mime do ficheiro (se o navegador o proporciona). Um exemplo poderia ser "image/gif".

$HTTP_POST_FILES['userfile']['size']
O tamanho em bytes do ficheiro recebido.

$HTTP_POST_FILES['userfile']['tmp_name']
O nome do ficheiro temporal que se utiliza para armazenar no servidor o ficheiro recebido.

<?
//tomo o valor de um elemento de tipo texto do formulário
$cadeiatexto = $_POST["cadeiatexto"];
echo "Escreveu no campo de texto: " . $cadeiatexto . "<br><br>";

//dados do ficheiro
$nome_ficheiro = $HTTP_POST_FILES['userfile']['name'];
$tipo_ficheiro = $HTTP_POST_FILES['userfile']['type'];
$tamanho_ficheiro = $HTTP_POST_FILES['userfile']['size'];
//vejo se as características do ficheiro são as desejadas
if (!((strpos($tipo_ficheiro, "gif") || strpos($tipo_ficheiro, "jpeg")) && ($tamanho_ficheiro < 100000))) {
echo "A extensão ou o tamanho dos ficheiros não é correcta. <br><br><table><tr><td><li>Permitem-se ficheiros .gif ou .jpg<br><li>Permitem-se ficheiros de 100 Kb máximo.</td></tr></table>";
}else{
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $nombre_archivo)){
echo "O ficheiro foi carregado correctamente.";
}else{
echo "Erro ao subir o ficheiro. Não se pode guardar o ficheiro.";
}
}
?>

Para começar, recolhemos o campo de texto enviado por POST, da forma habitual. Ainda que isto não tenha nada a ver com subir ficheiros, é normal que no mesmo formulário desejemos misturar vários tipos de informação.

A seguir, obtêm-se os dados necessários do ficheiro, tal como o seu nome, extensão e tamanho para, no seguinte if, verificar que a extensão seja .gig ou .jpg e que o tamanho é menor que 100000 bytes.

Se o ficheiro tinha as características desejadas, pode-se subir ao servidor. Para isso utiliza-se a função move_uploaded_file(), que recebe o nome do ficheiro temporal que se deseja subir e o nome de ficheiro que se lhe deseja dar.

Quando se faz upload do ficheiro, o servidor copia-o num path temporal para que sejamos nós os que escolhamos a posição definitiva onde queremos que se armazene. Se não o copiamos a nenhum sitio, depois da execução da página, apagar-se-á da sua localização temporal.

A função move_uploaded_file() utiliza-se para mover o ficheiro à posição definitiva. Recebe por um lado o nome temporal do ficheiro e por outro o nome que desejamos dar-lhe definitivamente e, se assim o desejarmos, o path para chegar ao directório onde queremos guarda-lo. No caso do exemplo só se indica o nome do ficheiro, por isso o ficheiro subirá-se ao mesmo directório onde estão as páginas PHP que fazem o upload. Esta função retorna um boleano que indica se houve ou não êxito ao subir o ficheiro.

Nota: É importante assinalar que o upload de ficheiros é um processo crítico que pode dar lugar a erros e buracos de segurança. Por exemplo, se os directórios destino estão protegidos contra escritura, obteremos um erro. Podemos ver os erros mais comuns relatados na página de PHP.

Recomendamos mais uma vez ampliar esta informação na página de PHP: PHP: Manejo de envío de archivos - Manual
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Verificar a existência de uma URL


A través da função fopen de PHP verificamos a existência de uma página externa.
Por Miguel Angel Alvarez - Tradução de JML





Já vimos as funções de gestão de ficheiros mais utilizadas em PHP. Vamos utilizar a mais clássica delas, fopen, para criar um script que verifique a existência de uma URL.

Este tipo de script pode ser utilizado para vários propósitos: Detectar se os links não funcionam, verificar uma etapa de inscrição num formulário...

Neste caso, simplificámos ao máximo o seu conteúdo de modo a por em evidencia o seu funcionamento. Outro tipo de melhoramento assim como a verificação da extensão do ficheiro (.asp, .php, ...) ou do protocolo de transferência (http, ftp, ...) podem ser introduzidas com o fim de configurar a sua utilização para diferentes aplicações.

A continuação podem ver como ficaria o script:

<?
function verificar_url($url)
{
//abrimos o ficheiro em leitura
$id = @fopen($url,"r");
//fazemos as verificações
if ($id) $aberto = true;
else $aberto = false;
//fechamos o ficheiro
fclose($id);
//retornamos o valor
return $aberto;
}
?>
<html>
<head>
<title>Verificação de URL</title>
</head>
<body>
<?
if (!isset($url))
{
?>
<form action="linkl.php" method="post">
Indica a tua URL:<br>
<input type="Text" size="25" maxlength="100" name="url" value="http://">
<input type="Submit" value="Verificar!">
</form>
<?
}
else
{
$abierto = verificar_url($url);
if ($abierto)
echo "A URL existe!";
else
echo "A URL não existe ou é inacessível...";
}
?>
</body>
</html>

Introduzimos no mesmo script que se encarrega de verificar a URL o formulário que se encarrega de recolhe-la. Assim, podemos dividir o script em duas partes: Uma primeira que se encarrega de recolher a URL num campo texto e uma segunda que é a que verdadeiramente avalia a existência da URL.

Para fazer mais aplicável o script deixámos a avaliação propriamente dita em forma de função, a qual se pode copiar e pegar na vossa livraria particular. Como podem ver, o modo de operar é extremamente simples:

•Abrimos o ficheiro remoto através da função fopen em modo só leitura. Repara que introduzimos um símbolo arroba @ cuja função é ignorar o possível erro produzido pela sentença. Isto evita-nos ver a mensagem de erro que nos é mostrado quando a URL não existe.


•Verificamos que o identificador de apertura $id não está vazio. É neste ponto onde podemos implementar à nossa função os melhoramentos dos que falamos, os quais lhe dão a verdadeira utilidade.


•Retornamos um valor true ou false dependendo do êxito da conexão.

Como podem ver o script não tem nenhuma dificuldade e pode ser de grande utilidade.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Leitura sequencial de ficheiros com PHP

Aprende a utilizar a função fgets para ler ficheiros de texto com um exemplo prático.
Por Miguel Angel Alvarez - Tradução de JML





Continuemos com a nossa aprendizagem prática do uso de ficheiros em PHP. Já vimos como abrir um ficheiro através da função fopen com um exemplo prático de como verificar uma URL. O seguinte passo é aprender a ler o conteúdo do ficheiro, tarefa que levaremos a cabo por meio da função fgets.

Esta função encarrega-se de ler linha a linha o conteúdo de um ficheiro de texto pelo que a sua utilização tem de ser incluída dentro de uma estrutura de tipo loop.

No exemplo que veremos a seguir utilizámos esta leitura sequencial para localizar dentro de um texto uma cadeia qualquer a que, a seguir, lhe mudaremos o formato para a por em negrito através da etiqueta <b>. Isto pode-nos ser útil se precisamos de efetuar procuras internas no nosso site e queremos ver claramente a cadeia que procurávamos no texto da página encontrada.

Evidentemente, a utilidade de fgets é muito mais ampla. Podemos emprega-la, por exemplo, com ficheiros remotos para extrair as etiquetas meta ou para outras muitas coisas das que nos possamos lembrar.

Vejamos o seguinte script:

<?
function negrito($path,$cadeia)
{
//Iniciamos a variável
$texto = "";
//Abrimos o ficheiro em modo leitura
$fp = fopen($path,"r");
//Lemos linha a linha o conteúdo do ficheiro
while ($linha= fgets($fp,1024))
{
//Substituímos as ocorrência da cadeia que procurávamos
$linha = str_replace($cadeia,"<b>$cadeia</b>",$linha);
//Acrescentamos a linha modificada ao texto
$texto .= $linha;
}
return $texto;
}
//Definimos o path e l cadeia
$path="escreve o caminho de acesso ao teu ficheiro";
$cadeia = "escreve a tua cadeia";
//Chamamos à função
$texto = negrito ($path,$cadeia);
//Mostramos o texto
echo $texto;
?>

Podem ver o resultado desta função numa variante do script onde incluímos um formulário para receber o parâmetro cadeia e que procura as ocorrências dentro do texto deste artigo:


Introduz a cadeia de procura:


O script é utilizado em forma de função para facilitar-nos na hora de utiliza-la e armazena-la. O seu modo de operar é o seguinte:


•Inicia a variável texto na qual iremos armazenando as linhas lidas no loop.
•Abre o ficheiro (local ou remoto) em modo leitura com da função fopen.
•Lê uma a uma as linhas do ficheiro até um comprimento de 1024 caracteres e muda as possíveis ocorrências da cadeia que procuramos pela mesma cadeia colocada entre as etiquetas e por meio da função str_replace. O texto, modificado ou não, é armazenado numa variável texto.
•Retornamos a variável texto como resultado da função.

O resto do script é simplesmente um exemplo de chamada a função onde os parâmetros path e cadeia tem de ser especificados.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Escritura em ficheiros com PHP


Como e para que utilizar a função fwrite.
Por Miguel Angel Alvarez - Tradução de JML




Continuando com a gestão de ficheiros através de PHP, neste artigo veremos os passos básicos para a criação e escritura de um ficheiro de texto através de esta tecnologia do lado do servidor. Depois de ter visto como funciona a leitura sequencial de um ficheiro, podemos imaginar que escrever sobre ele não deve ser muito mais complicado.

Por outro lado, as possibilidades que estas duas operações nos podem oferecer conjuntamente são realmente surpreendentes. Por exemplo, escrever e ler ficheiros pode de certo modo muito por encima substituir a uma base de dados. De feito, se por diversos motivos (hosting, econômico, conhecimentos...) nos é difícil por a funcionar uma base de dados básica, sempre podemos resolver o inconveniente armazenando os nossos dados num ficheiro que depois poderão ser lidos. Claro que este método não tem nada de seguro nem de versátil e só é válido para um site sem informação confidencial e com pouca quantia de dados.

Também podemos pensar em criar documentos dinâmicos a partir de dados introduzidos em formulários:cartas, páginas HTML, etc...

Outro exemplo particularmente prático é a criação dinâmica de ficheiros que nos poupem recursos do servidor. Imaginemos que temos uma página, o ficheiro, no nosso site que se carrega muito freqüentemente e que realiza constantemente chamadas a base de dados ou executa scripts mais ou menos grandes. Se o conteúdo que estamos a mostrar é o mesmo pra todos os usuários e não tem porque ser actualizado constantemente, podemos contentar-nos com criar um script que execute uma só vez o script principal e que armazene o resultado em forma de ficheiro HTML que será na realidade o que mostraremos aos nossos visitantes. Desta forma, evitamos por uma parte a execução massiva de um mesmo script com o que estamos a poupar recursos e por outra automatizamos a actualização de uma determinada página ou secção executando periodicamente o script.

A escritura de ficheiros necessita, como é de esperar, uma apertura do ficheiro da maneira apropriada. Uma vez aberto, o seguinte passo será introduzir através da função fwrite (ou fput), a cadeia de desejamos incluir no nosso ficheiro.

Para exemplificar esta nova função de escritura e combina-la com a de leitura, fgets, proporcionamos-vos este contador inspirado numa nota da página oficial de PHP:

<?
function incremento_contador($archivo)
{
// $archivo contém o numero que actualizamos
$contador = 0;
//Abrimos el archivo y leemos su contenido
$fp = fopen($ficheiro,"r");
$contador = fgets($fp, 26);
fclose($fp);
//Incrementamos o contador
++$contador;
//Actualizamos o ficheiro com o novo valor
$fp = fopen($ficheiro,"w+");
fwrite($fp, $contador, 26);
fclose($fp);
echo "Este script foi executado $contador vezes";
}
?>



Como em outros exemplos, o script é expressado em forma de função para que seja mais facial a sua reutilização. As etapas pelas que passamos são verdadeiramente curtas e compreensíveis:


•Iniciamos a variável contador.
•Abrimos o ficheiro em modo leitura e extraímos o valor actual do contador lendo a primeira e única linha. Fechamos o ficheiro.
•Aumentamos em uma unidade o valor do contador.
•Abrimos o ficheiro e sobrescrevemo-lo (modo +w) com o valor do contador modificado.

Para que este tipo de scripts funcionem, o ficheiro ao qual queremos aceder tem de estar autorizado para leitura e escritura.

A função fwrite pode ser utilizada também para enviar dados a outro tipo de aperturas como são as de sockets ou de programas. Mas isto já é outra história...
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Gestão de directórios com PHP



Aprendemos a navegar a través dos paths dos directórios do sistema de ficheiros do servidor.
Por Miguel Angel Alvarez - Tradução de JML



Continuando com a saga de artigos referentes a utilização de ficheiros através de PHP, vamos apresentar algumas funções que nos podem ser muito úteis na navegação de directórios. Este tipo de funções poderiam, por exemplo, servir-nos para criar exploradores de ficheiros no nosso navegador.

Funções de gestão de directórios

Função-------------------- Descrição--------------------- Sintaxe
opendir ---Abre um directorio situado em $path e atribui-lhe um identificador --$dir $dir = opendir($path)
readdir--- Lê um elemento do directório $dir aberto previamente com opendir e move o ponteiro ao elemento seguinte.--- readdir($dir)
rmdir ----Elimina o directório------ $dir rmdir($dir)
mkdir ----Cria um directório situado em $path com os direitos de acesso $direitos (inteiro) -----------mkdir($path, $direitos)
rewinddir------ Poe o ponteiro de leitura do directório $dir no primeiro elemento.------- rewinddir($dir)
closedir------- Fecha o directório $dir aberto previamente com opendir ------------------------closedir($dir)

A forma de tratar com estas funções é similar a que já vimos para a leitura sequencial de ficheiros. Podemos falar de três etapas básicas:


•Apertura do directorio através da função opendir atribuindo-lhe ao mesmo tempo um identificador
•Realização das tarefas necessárias em relação com esse directório.
•Clausura do identificador através da função closedir.
Repara que, para que um directório possa ser apagado, é necessário eliminar previamente cada um dos elementos que contem o directório. Para isso, podemos utilizar a função unlink, apresentada noutro artigo.

Por outro lado, a criação de um directório a través da função mkdir requer a definição dos direitos de acesso através de um número inteiro. Esperamos poder explicar melhor o funcionamento destes direitos em breve.

Como exemplo simples do que podemos fazer com estas funções, aqui vos apresentamos um pequeno script de leitura que vos permite visualizar o conteúdo de um directório:

<?
//definimos o path de acesso
$path = "meu/caminho";
//abrimos o directório
$dir = opendir($path);
//Mostramos as informações
while ($elemento = readdir($dir))
{
echo $elemento."<br>";
}
//Fechamos o directório
closedir($dir);
?>

Outra maneira de abordar a gestão de directórios é através da classe dir que permite a criação de um objecto sobre o qual podemos aplicar uma serie de métodos equivalentes às funções previamente vistas. Se estás familiarizado com a programação orientada a objectos, é possível que esta modalidade se torne mais fácil.

Neste caso, a forma de operar é análoga:


•Criamos um objecto $dir com o comando: $dir=$dir($path)
•Realizamos as tarefas necessárias chamando aos métodos da classe dir
•Fechamos o directório com o método close
Alguns dos métodos que podemos utilizar com esta classe são os seguintes:

Métodos da classe dir

Método -----------------Descripción------------------ Sintaxis
path-------------- Indica o path do directório------- $objeto->path
read-------------- Lê um elemento do directório--------- $objeto->read
rewind------- Poe o ponteiro de leitura do directório $dir no primeiro elemento.----------------------------------------- $objeto->rewind
close -------------Fecha o directório------------------- $objeto->close

Como exemplo, temos aqui o script equivalente ao utilizado para o caso das funções, esta vez usando a classe dir:

<?
//definimos o path de acesso
$path="meu/caminho/";
//criamos o objeto
$dir=dir($path);
//Mostramos as informações
echo "Directorio ".$dir->path.":<br><br>";
while ($elemento = $dir->read())
{
echo $elemento."<br>";
}
//Fechamos o directório
$dir->close();
?>

Os scripts aqui mencionados não mais do que exemplos simples do que estas funções nos podem oferecer. Fica nas vossas mãos o combinar estas funções com outras de modo a criar aplicações que giram os ficheiros e directórios do vosso servidor.

Relembramos que esta lista só é uma compilação e que existem muitas outras funções relacionadas que podem ser-nos muito úteis.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Função que escreve um campo select com valores de uma base de dados



Uma dica para escrever dados de uma BD num formulário.
Por Miguel Angel Alvarez - Tradução de JML




Durante o trabalho com formulários em PHP, as vezes temos um campo select cujos valores possíveis obtêm-se de uma base de dados, por exemplo, os paises. Neste capitulo vamos mostrar uma função que é capaz de escrever num formulário um campo select, obtendo os valores de uma tabela da base de dados. Com esta função podemos esquecer-nos da dificuldade de mostrar um campo select. Simplesmente chamamos à função, enviando os parâmetros, e encarrega-se de mostrar o campo.

No caso dos paises, pode ser uma boa ideia ter uma tabela com a lista de paises do mundo. No formulário o habitual é permitir escolher um pais da lista e enviar o código do pais. Deste modo, podemos ter a certeza que todos os usuários escolheram um pais da lista, entre todos os possíveis.

A tabela de paises poderia conter algo parecido a isto:

id_pais------ nome_pais
1 -----------Portugal
2 -----------Brasil
3----------- Angola
4 -----------Moçambique
5 -----------Cabo Verde
...----------- ...

Este é o código HTML de um possível formulário cujo campo paises foi extraído da anterior tabela:

<form>
Nombre: <input type=text name="nome">
<br>
País:
<select name=id_pais>
<option value=1>Portugal
<option value=2>Brasil
<option value=3>Angola
<option value=4>Moçanbique
<option value=5>Cabo Verde
</select>

Função saca_menu_dinamico()

Agora vamos ver como se faria uma função que recorre a tabela da base de dados para mostrar o select do pais. Para começar vamos ver uma lista dos parâmetros que aceita.


•ssql: sentença SQL que permita extrair os dados das possiveis opções do select. A sentença SQL teria uma forma como esta "select id_pais, nome_pais from pais". Na primeira coluna dos registos seleccionados com esta sentença, espera-se o value dos option (neste caso id_pais). Na segunda coluna espera-se o texto das option.
•valor: Neste parámetro recebe-se o valor pré-definido que deve aparecer no select. Este valor compara-se com o primeiro campo da sentença SQL. (Se desejamos que o valor pré-definido seja Portugal, devíamos por um 1 como valor)
•nome: É o nome que se da ao campo select do formulário
O código da função é o seguinte:

function saca_menu_dinamico($ssql,$valor,$nome){
echo "<select name='$nome'>";
$resultado=mysql_query($ssql);
while ($fila=mysql_fetch_row($resultado))
{
if ($fila[0]==$valor){
echo "<option selected value='$fila[0]'>$fila[1]";
}
else{
echo "<option value='$fila[0]'>$fila[1]";
}
}
echo "</select>";
}

Escreve-se o campo do formulário select, indicando o nome do campo que se recebeu por parâmetro. A seguir, realiza-se uma procura na base de dados, executando a sentença SQL recebida por parâmetro.

Mais tarde faz-se um recorrido do conjunto de registos que se encontraram na base de dados e escrevem-se em cada um deles. Para cada um dos registros comprova-se que o seu identificador é igual ao que se deseja marcar como valor pré-definido. No caso de o ser, escreve-se o option com o atributo selected.

Um detalhe importante é que a função necessita ter uma conexão aberta com a base de dados, pois em caso contrario não se poderia executar a sentença SQL.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Receber o último ID de uma inserção com PHP e MySQL



Veremos um código bastante útil para obter o último ID de uma inserção.
Por Miguel Angel Alvarez - Tradução de JML




Criámos este artigo para responder uma dúvida que nos perguntaram alguma vez no nosso correio. Trata sobre como obter o último identificador de um registo inserido na base de dados, programando com PHP e com a base de dados MySQL.

Realmente é uma dúvida muito simples de resolver, graças ao amplo conjunto de funções de PHP para trabalhar com bases de dados MySQL. Existe uma função que nos retorna directamente o identificador da última inserção, utilizando a conexão à base de dados que se lhe passe por parâmetro, ou a última conexão no caso de que não se lhe indique nenhum parâmetro.

mysql_insert_id($connectid)

Exemplo de utilização

Vejamos um exemplo da utilização desta função, na que se realizam as acções necessárias para inserir um elemento na base de dados. Neste exemplo utilizaremos uma base de dados chamada "teste" e a tabela "cliente".

//conecto com a base de dados
$connectid = mysql_connect("localhost","root","");

//selecciono a base de dados a utilizar
mysql_select_db("test",$connectid);

//Sentença de inserção do elemento
$ssql = " INSERT INTO cliente (nome_cliente, BI, morada, email) VALUES ('xxx Nome empresa', 'B3331113', 'Rua Corona 2', 'eepe@relll.com')";

//inserto-o na base de dados
if (mysql_query($ssql,$connectid)){

//recebo o último id
$ultimo_id = mysql_insert_id($connectid);
echo $ultimo_id;
}else{
echo "A inserção não se realizou";
}

Em primeiro lugar fazemos a conexão com MySQL e selecciona-se a base de dados a utilizar. A seguir, gera-se uma sentença SQL de inserção numa suposta tabela de clientes. Se a execução desta sentença é correcta recebe-se o último ID com a função insert_id(). Se a execução da sentença falha, mostra uma mensagem de erro.

Reparem que insert_id() recebe o identificador da conexão, retornado por mysql_connect() e não o identificador do resultado da consulta, que retorna mysql_query() quando se executam sentenças de selecção na base de dados.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Recolher dados de um Select Multiple com PHP


Este script ensina-nos a técnica necessária para aceder aos elementos seleccionados num select multiple.
Por José Lorenzo Escudero




Talvez um problema que podemos ter algum dia ao trabalhar com PHP, é querer obter os dados de um select multiple. Relembramos que um select multiple é um campo de formulário onde se podem seleccionar vários elementos ao mesmo tempo.

Nota: Para seleccionar vários elementos de um campo select multiple, temos de utilizar o botão de "control" e fazer click sobre cada um dos elementos que desejamos seleccionar. É mito importante que este ponto fique claro para os usuários das vossas páginas, pois as vezes não sabem como faze-lo.

Para compreender melhor o que desejamos fazer, é muito interessante ver a página que contem o exemplo. Vejamos o código do exemplo...

<form action="trataformulario.php" method="POST">
Nome: <input type="text" name="nome"><br>
Apelidos: <input type="text" name="apelidos"><br>
Email: <input type="text" name="email"> <br>
Cerveja: <br>
<select multiple name="cerveja">
<option value="Super Bock">Super Bock</option>
<option value="Sagres">Sagres</option>
<option value="Heineken">Heineken</option>
<option value="Carlsberg">Carlsberg</option>
<option value="Antartica">Antartica</option>
...
</select><br>
<input type="submit" value="Enviar dados!" >
</form>

Temos este formulário na nossa página e queremos recolher os dados introduzidos pelo usuário. Para os campos "nome", "apelidos" e "email" não temos nenhum problema, fazemo-lo através do método habitual, isto é:

<?php
echo "Nome: ". $_POST["nome"];
echo "<br>Apelidos: ". $_POST["apelidos"];
echo "<br>E-mail: ". $_POST ["email"];
?>

A questão é, e porque não pôr "$cerveja=$_POST["cerveja"]"? O problema está em que os option do select multiple têm todos o mesmo nome e no caso de ter vários elementos seleccionados só obteríamos o último elemento. E como podemos então resolver isto? A solução ao nosso problema é bem simples. Basta com pôr no final do nome do campo select multiple uns "[]", por exemplo no nosso caso sería alg9o assim como "cerveja[]".Deste modo PHP interpreta o campo em questão como um array com tantas posições como elementos tenham sido seleccionados no select multiple. Vejamos como ficaria o nosso exemplo:

<form action="trataformulario.php" method="POST">
Nome: <input type="text" name="nome"><br>
Apelidos: <input type="text" name="apelidos"><br>
Email: <input type="text" name="email"> <br>
Cerveja: <br>
<select multiple name="cerveja[]">
<option value="Super Bock">Supre Bock</option>
<option value="Sagres">Sagres</option>
<option value="Heineken">Heineken</option>
<option value="Carlsberg">Carlsberg</option>
<option value="Antartica">Antartica</option>
...
</select><br>
<input type="submit" value="Enviar dados!" >
</form>

E para recolhes a informação actuariamos da seguinte maneira...

<?php
echo "Nome: ". $_POST["nome"];
echo "<br>Apelidos: ". $_POST["apelidos"];
echo "<br>E-mail: ". $_POST ["email"];
$cervejas=$_POST["cerveja"];

//recorremos o array de cervejas seleccionadas. Não esquecer que a primeira posição de um array é a 0
for ($i=0;$i<count($cervejas);$i++)
{
echo "<br> Cerveja " . $i . ": " . $cervejas[$i];
}
?>

Nota: Ao pôr este tipo de nomes (acabados em "[]") a um campo de um formulário e se usamos funções JavaScript para validálos, utilizálos, etc... devemos acrescentar a esse campo, para além do nome, o atributo HTML "id" e utilizar este último atributo como identificador do campo, em vez do nome que se tenha colocado no atributo "name" como se costuma fazer. Em caso contrario teríamos problemas com JavaScript...

O código completo deste exemplo poderia ser o seguinte. Reparem que colocamos todo o código num ficheiro PHP. Este código tem um formulário reentrante, isto é, a página chama-se a si mesma para processar o formulário.

<?
if (!$_POST){
?>
<form action="select_multiple.php" method="POST">
Nome: <input type="text" name="nome"><br>
Apelidos: <input type="text" name="apelidos"><br>
Email: <input type="text" name="email"> <br>
Cerveja: <br>
<select multiple name="cerveja[]">
<option value="Super Bock">Super Bock</option>
<option value="Sagres">Sagres</option>
<option value="Heineken">Heineken</option>
<option value="Carlsberg">Carlsberg</option>
<option value="Antartica">Antartica</option>
</select><br>
<input type="submit" value="Enviar dados!" >
</form>
<?
}else{
echo "Nome: ". $_POST["nome"];
echo "<br>Apelidos: ". $_POST["apelidos"];
echo "<br>E-mail: ". $_POST ["email"];
$cervejas=$_POST["cerveja"];

//recorremos o array de cervejas seleccionadas. Não esquecer que a primeira posição de um array é a 0

for ($i=0;$i<count($cervejas);$i++)
{
echo "<br> Cerveja " . $i . ": " . $cervejas[$i];
}
}
?>
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Enviar e-mails pelo PHP



Explicamos a maneira de enviar correios através de páginas PHP, exemplos simples e complexos para realizar a tarefa.
Por Miguel Angel Alvarez - Tradução de JML





Para enviar correios electrónicos utilizando PHP dispomos de uma função bastante potente, incluída em todas as versões de PHP, sem a necessidade de instalar mais nada, em contra do que acontecia com ASP.

Em concreto, em PHP dispomos de uma função chamada mail() que permite configurar e enviar mensagens de correio. A função chama-se mail() e recebe três parâmetros obrigatórios e dois opcionais. Retorna true se o mail se enviou com êxito e false em caso contrario.

Parâmetros necessários em todos os casos

Destinatário: o endereço de correio ou endereços de correio que vão receber a mensagem. Se incluirmos vários endereços devemos separa-las por uma virgula.

Assunto: para indicar uma cadeia de caracteres que queremos que seja o assunto do correio electrónico a enviar.

Corpo: o corpo da mensagem, o que queremos que tenha escrito o correio.

Exemplo de envío de um mail simples

<?
mail("ze@criarweb.com,maria@criarweb.com","assunto","Este é o corpo da mensagem")
?>

Parámetros opcionais do envio de correio

Headers: Cabeçalhos do correio. Dados como o endereço de resposta, os possíveis endereços que receberão copia da mensagem, os endereços que receberão cópia oculta, se o correio está em formato HTML, etc.

Additional_parameters: esta opção não costuma utilizar-se e só está disponível a partir da versão 4.0.5 e desde PHP 4.2.3 está desabilitado em modo seguro. Pode usar-se para passar parâmetros adicionais ao programa configurado para enviar o correio, quando se manda o mail usando a opção de configuração sendmail_path. Podemos obter mais informação na documentação de PHP para a função mail().

Exemplo complexo de envio de correio

Vamos enviar um correio com formato HTML a ze@criarweb.com, com cópia a manel@criarweb.com e com uma cópia oculta para vinnie@criarweb.com e joao@criarweb.com. O endereço de resposta será configurado a xuxe@criarweb.com.

<?
$destinatario = "ze@criarweb.com";
$assunto = "Esta mensagem é um teste";
$corpo = '
<html>
<head>
<title>Teste de correio</title>
</head>
<body>
<h1>Olá amigos!</h1>
<p>
<b>Bem-vindos ao meu correio electrónico de teste</b>. Estou contente de ter tantos leitores.
</p>
</body>
</html>
';

//para o envio em formato HTML
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html;
charset=iso-8859-1\r\n";

//endereço do remitente
$headers .= "From: Xuxé <xuxe@criarweb.com>\r\n";

//endereço de resposta, se queremos que seja diferente a do remitente
$headers .= "Reply-To: mariano@desarrolloweb.com\r\n";

//endereços que receberão uma copia $headers .= "Cc: manel@desarrolloweb.com\r\n";
//endereços que receberão uma copia oculta
$headers .= "Bcc: vinnie@criarweb.com,joao@criarweb.com\r\n";
mail($destinatario,$assunto,$corpo,$headers)
?>

Nota: Antes de pôr em funcionamento o script no vosso servidor, por favor, mudem os dados das configurações dos endereços de correio que vão receber a mensagem e coloquem uns endereços que sejam vossos e onde possam verificar se as mensagens se enviaram correctamente.

Conclusão e download

Pensamos e esperamos que depois deste artigo compartam a nossa opinião, que o envio de mails em PHP é uma tarefa simples. É de muito agradecer que todas as versões de PHP incluam uma função para o envio de mails.

Nota: Para o envio de correio através de PHP é necessário que este tenha uma correta configuração.

Se a nossa web está num servidor de um provedor de hosting provavelmente já tenham configurado o PHP para o envio de mails. Se estamos a trabalhar desde um servidor próprio, temos de configurar PHP.

PHP configura-se editando o ficheiro php.ini onde devemos especificar dados como o servidor de correio de saída que deve utilizar PHP para transferir as mensagens.

Dentro do php.ini, devemos procurar o epigrafe [mail function]. Dependendo do nosso sistema deveremos configura-lo de uma maneira ou de outra.

Em sistemas Windows encontraremos o php.ini no directório windows ou dentro deste, no subdirectório system32 ou similar. Neste sistema deveremos indicar o domínio do servidor de smtp, algo parecido a smtp.meudominio.com. Se é o PC local o que faz de servidor, poderemos por "localhost" como máquina que enviará o correio. Também podemos especificar o endereço desde donde queremos que pareça que se envia a mensagem no caso de que não se indique outra durante o envio.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Loop para receber todas as variáveis por POST em PHP



Uma maneira simples de receber todas as variáveis de um formulário, enviado por POST, com PHP.
Por Miguel Angel Alvarez - Tradução de JML




Vamos ver uma forma muito rápida de receber todas as variáveis de um formulário, enviado por POST, na linguagem PHP. É uma pequena porção de código que vos poupará escrever uma data de linhas de código.

Quem não se viu na horrível tarefa de receber uma data de dados de um formulário, atribuindo uma por uma todas as variáveis em PHP? Isso fazia-se com linhas como estas:

$nome = $_POST["nome"];
$idade = $_POST["idade"];
$cidade = $_POST["cidade"];
....

Se o formulário tivesse 10 elementos não seria muito chato escrever as 10 linha de código, mas se fossem 50 ou 100 a situação seria muito menos agradável. O código que vamos ver a seguir tornará problema mais fácil.

foreach($_POST as $nome_campo => $valor){
$comando = "\$" . $nome_campo . "='" . $valor . "';";
eval($comando);
}

Realiza-se um loop foreach que vai recorrendo cada um dos elementos POST. Em cada iteração, vão-se acedendo a todos os elementos do POST e vão-se guardando em $nome_campo o nome do campo recebido para o formulário e em $valor, o valor que se tinha introduzido no formulário.

Tudo o anterior deduz-se da primeira linha. As seguintes em cada iteração, cada uma dos comandos que deveríamos ter escrito manualmente. Isto é, na variável comando guardaremos uma linha de código PHP que realiza a declaração da variável do formulário dentro de PHP e a sua inicialização com o valor que se tinha escrito.

Na seguinte linha, onde está a função eval(), executa-se a sentença gerada no passo anterior. A função eval() de PHP executa o conteúdo de uma cadeia de caracteres como se fosse um comando de PHP.
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Enviar um formulário por mail com PHP



Exemplo de como enviar um formulário por correio electrónico através de PHP.
Por Miguel Angel Alvarez - Tradução de JML




Para começar, seria muito útil que aprendêssemos a enviar correios eletrônicos com PHP, para o qual já temos um artigo em CriarWeb.

Esquema de funcionamento

Neste caso vamos utilizar a variável $_POST, que deveria conter o formulário, para saber se recebemos ou não dados desde um formulário. Essa variável vamos utiliza-la num enunciado if (!$_POST), que se for positivo (não temos nada em $_POST), significa que não se recebeu nada desde um formulário. Nesse caso, mostro o formulário de contato.

Em caso contrário (quando temos algo em $_POST), quer dizer que estamos a receber dados através de um formulário e nesse caso, recolhemos os dados e compomos o corpo da mensagem.

Vejamos o código da página para criar o formulário , recebe-lo e compor o corpo da mensagem que vai ser enviada. No mesmo código poderemos encontrar também a chamada à função que envia o correio.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Envie-nos os seus comentários</title>
</head>

<body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060">
<?
if (!$_POST){
?>
<form action="envia_form_php.php" method=post>
Nome: <input type=text name="nome" size=16>
<br>
Email: <input type=text name=email size=16>
<br>
Comentários: <textarea name=coment cols=32 rows=6></textarea>
<br>
<input type=submit value="Enviar">
</form>
<?
}else{
//Estou a receber o formulário, componho o corpo
$corpo = "Formulário enviado\n";
$corpo .= "Nome: " . $_POST["nome"] . "\n";
$corpo .= "Email: " . $_POST["email"] . "\n";
$corpo .= "Comentários: " . $_POST["coment"] . "\n";

//envio o correio...
mail("admin@seudominio.com","Formulário recebido",$corpo);

//agradeço pelo envio
"Obrigado por preencher o formulário. Foi enviado corretamente.";
}
?>
</body>
</html>
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Paginação de resultados com PHP e MySQL



Amostra de técnica de paginação, para mostrar em diferentes páginas os resultados de uma consulta à base de dados. O exemplo está desenvolvido em PHP e MySQL.
Por Miguel Angel Alvarez - Tradução de JML





Em muitas ocasiões, quando se apresentam numa página web registos de uma base de dados, deveriam-se mostrar demasiados registos como para colocá-los todos numa única página. Nestas ocasiões costumasse paginar os resultados, talvez centenas, em diferentes páginas com conjuntos de registos muito menos numerosos. Por exemplo, poderíamos apresentar os resultados em páginas de 10 elementos ou 20, dependendo do que queremos fazer e do tipo de dados que se estejam a visualizar. Este efeito podemos observa-lo inúmeras vezes nos portais mais representativos.

Poderíamos desenvolver diversos scrips para paginar resultados em PHP. Neste artigo vamos explicar uma possibilidade baseada na utilização de uma base de dados MySQL e sentenças SQL as que indicaremos o conjunto de registos que queremos mostrar em cada página. Os comandos SELECT da linguagem SQL, na base de dados MySQL e muitas outras, têm uma clausula chamada LIMIT, com a que podemos indicar os registos a mostrar, por exemplo, 10 registos começando pelo registo 180.

select * from pais limit 180,10

Como vemos LIMIT tem dois argumentos, o primeiro indica-nos por onde começar os resultados e o segundo o número de resultados a seleccionar no conjunto de registos resultantes.

Deste modo, neste exercício de paginação a clausula LIMIT será a chave para mostrar os registos em grupos do tamanho desejado.

Podemos ver o resultado que vamos obter neste artigo agora e assim teremos mais facilidade para identificar as diferentes partes de código que vamos ver.

Código de paginação

Existem varias partes do código que servirão especificamente para implementar a paginação. O primeiro é saber qual é a página que se deseja mostrar. Em principio mostraria-se a primeira página de resultados, mas se um visitante selecciona com os links de baixo outra página diferente da primeira, teríamos de a mostrar também. O índice da página a mostrar, se não for a primeira vez que se acede, recebe-se por parâmetro na URL.

//Limito a busqueda
$TAMANHO_PAGINA = 10;

//examino a página a mostrar e o inicio do registo a mostrar
$pagina = $_GET["pagina"];
if (!$pagina) {
$inicio = 0;
$pagina=1;
}
else {
$inicio = ($pagina - 1) * $TAMANHO_PAGINA;
}

Estou a definir o tamanho da página. A seguir tento receber a página por parâmetro na URL. Se não se recebeu nada, entende-se que a página a ser mostrada é a primeira, e a variável &inicio, que guarda o primeiro registo a mostrar (para indica-lo na sentença SQL), será zero. Se tínhamos recebido algo como página, calculo o inicio com uma simples multiplicação da página a mostrar vezes o tamanho de página definido antes.

É habitual nestas páginas de resultados informar um pouco sobre a quantidade de registos encontrados e os dados da página que estamos a ver. Estes dados podem-se obter com umas poucas contas.

//vejo o número total de campos que há na tabela com essa busqueda
$ssql = "select * from pais " . $criterio;
$rs = mysql_query($ssql,$conn);
$num_total_registos = mysql_num_rows($rs);
//calculo o total de páginas
$total_paginas = ceil($num_total_registos / $TAMANHO_PAGINA);

//ponho o número de registos total, o tamanho de página e a página que se mostra
echo "Número de registos encontrados: " . $num_total_registos . "<br>";
echo "Mostram-se páginas de " . $TAMANO_PAGINA . " registos cada uma<br>";
echo "A mostrar a página " . $pagina . " de " . $total_paginas . "<p>";

Nota: Este código poderia mostrar uma informação como esta: Número de registos encontrados: 256 Mostram-se páginas de 10 regisros cada uma A mostrar a página 19 de 26

O primeiro a fazer é uma busqueda na base de dados com o critério que se esteja a utilizar para saber quantos registos se obtêm em total sem a paginação (a seguir veremos de onde obtemos a variável $critério).

A continuação posso calcular o número total de páginas de resultados para gerar a busqueda. A função ceil() aproxima números em virgula flutuante ou reais para cima, isto é, retorna o inteiro por cima mais próximo.

As seguintes linhas, onde se utiliza echo, têm como objetivo mostrar os dados na página.

Agora veremos o código que realiza a búsqueda na base de dados, extraindo e mostrando só aqueles registos que correspondem com a página a mostrar.

//construo a sentença SQL
$ssql = "select * from pais " . $criterio . " limit " . $inicio . "," . $TAMANHO_PAGINA;
$rs = mysql_query($ssql);
while ($fila = mysql_fetch_object($rs)){
echo $fila->nome_pais . "<br>";
}
//fechamos o conjunto de resultado e a conexão com a base de dados
mysql_free_result($rs);
mysql_close($conn);


Constroi-se a sentença SQL para obter os dados com o critério, que veremos mais tarde de onde se obtém, mas que em principio podemos toma-la como uma cadeia vazia. Também se utiliza LIMIT, como já se indicou: ponde os valores definidos antes como inicio e tamanho de página.

O resto é um recorrido típico através de um conjunto de registos, neste caso os países da nossa base de dados, onde se vão mostrando todos os elementos desde o principio até ao fim. Finalizado este recorrido não vamos realizar mais nenhuma acção com a base de dados, pelo qual podemos fechar o resultado da busqueda e a conexão com a base de dados.

Agora podemos ver o código que mostra a parte de baixo os números de todas as páginas que são geradas pela busqueda, para que o visitante possa seleccionar uma página e mover-se entre os resultados.

//mostro os diferentes índices das páginas, se é que há várias páginas
if ($total_paginas > 1){
for ($i=1;$i<=$total_paginas;$i++){
if ($pagina == $i)
//se mostro o índice da página actual, não coloco link
echo $pagina . " ";
else
//se o índice não corresponde com a página mostrada actualmente, coloco o link para ir a essa página
echo "<a href='index.php?pagina=" . $i . "&criterio=" . $txt_criterio . "'>" . $i . "</a> ";
}
}

A primeira linha verifica se realmente há várias páginas de resultados, se assim não for, não mostra nada. Se efectivamente há várias páginas para mostrar recorrem-se todas e para cada uma delas mostra-se o índice.

O índice a mostrar pode que seja o da página que se está a visualizar nesse momento e nesse caso simplesmente pomos o numero, mas não o link para ir a esse documento, pois já estamos nele. No caso de que seja uma página de resultados diferente, mostra-se um link para ir a essa página, onde se inclui passando por parâmetro tanto o índice da página que se deseja ver como o critério da busca que se estava a realizar.

Até aqui temos o código imprescindível para a paginação, mas ainda vamos ver mais alguma coisa.

Código de busca

Para fazer um workshop um pouco mais complete e poder oferecer uma página de amostra com funcionalidades de busca, criámos a possibilidade de acrescentar um critério para encontrar só elementos relacionados com ele. Para além do mais, os códigos de paginação costumam utilizar-se em situações nas que se estão a realizar buscas em bases de dados.

O critério poderá ser definido numa caixa de texto e teremos um botão de procurar que chame à mesma página mas passando o texto com as palavras a ser procuradas na base de dados.

<form action="index.php" method="get">
Criterio de búsqueda:
<input type="text" name="criterio" size="22" maxlength="150">
<input type="submit" value="Buscar">
</form>

Reparamos que o método pelo que passámos este formulário é GET. Isto porque não queremos complicar o código e como estamos a utilizar GET noutros sítios, utilizamos o mesmo método.

Colocamos o formulário debaixo, mas haverá também um bocado de código que recolherá a informação e a tratará para adapta-la a uma sentença de busca na base de dados. Colocaremos este código na parte de cima da página.

//inicio o critério e recebo qualquer cadeia que se deseje procurar
$criterio = "";
if ($_GET["criterio"]!=""){
$txt_criterio = $_GET["criterio"];
$criterio = " where nome_pais like '%" . $txt_criterio . "%'";
}

Inicia-se o critério com uma cadeia vazia e depois verificamos se se recebeu algo pelo método GET no campo critério. Em caso afirmativo podemos recolher o texto recebido e construir o critério, que é uma clausula WHERE onde se procuram os elementos, neste caso paises, cujo nome contenham por algum sitio as letras que se receberam como texto do critério.

Base de dados

Tal e como dissemos, está-se a utilizar uma base de dados MySQL. No Manual de programação em PHP de CriarWeb.com mostra-se a maneira de trabalhar com bases de dados.

No nosso exemplo falta-nos por indicar as sentenças para conectar com MySQL e seleccionar a base de dados a utilizar. Seriam umas parecidas a estas.

//conecto com a base de dados
$conn = mysql_connect("servidor","usuario","password");
mysql_select_db("nome_bbdd",$conn);

Pode-se ver aqui o exemplo em funcionamento.

Para aqueles que quiserem esclarecer melhor o método de paginação, o código completo deste exercício é o seguinte:

<form action="pag_php_mysql_ex.php" method="get">
Criterio de busca:
<input type="text" name="criterio" size="22" maxlength="150">
<input type="submit" value="Buscar">
</form>
<?
//inicio o critério e recebo qualquer cadeia que se deseje procurar
$criterio = "";
if ($_GET["criterio"]!=""){
$txt_criterio = $_GET["criterio"];
$criterio = " where nome_pais like '%" . $txt_criterio . "%'";
}
//conecto com a base de dados
$conn = mysql_connect("servidor","usuario","password");
mysql_select_db("nome_bbdd",$conn);
//Limito a busca
$TAMANHO_PAGINA = 10;
//examino a página a mostrar e o inicio do registro a mostrar
$pagina = $_GET["pagina"];
if (!$pagina) {
$inicio = 0;
$pagina=1;
}
else {
$inicio = ($pagina - 1) * $TAMANHO_PAGINA;
}
//vejo o número total de campos que há na tabela com essa busca
$ssql = "select * from pais " . $criterio;
echo "
$ssql</p>";
$rs = mysql_query($ssql,$conn);
$num_total_registos = mysql_num_rows($rs);
//calculo o total de páginas
$total_paginas = ceil($num_total_registos / $TAMANHO_PAGINA);
//ponho o número de registros total, o tamanho de página e a página que se mostra
echo "Número de registros encontrados: " . $num_total_registros . "<br>";
echo "Mostram-se páginas de " . $TAMANHO_PAGINA . " registros cada uma<br>";
echo "A mostrar a página " . $pagina . " de " . $total_paginas . "<p>";
//construo a sentença SQL
$ssql = "select * from pais " . $criterio . " limit " . $inicio . "," . $TAMANHO_PAGINA;
$rs = mysql_query($ssql);
while ($fila = mysql_fetch_object($rs)){
echo $fila->nome_pais . "<br>";
}
//fechamos o conjunto de resultado e a conexão com a base de dados
mysql_free_result($rs);
mysql_close($conn);
//mostro os diferentes índices das páginas, se é que há várias páginas
if ($total_paginas> 1){
for ($i=1;$i<=$total_paginas;$i++){
if ($pagina == $i)
//se mostro o índice da página atual, não coloco link
echo $pagina . " ";
else
//se o índice não corresponde com a página mostrada atualmente, coloco o link para ir a essa página
echo "<a href='pag_php_mysql_ex.php?pagina=" . $i . "&criterio=" . $txt_criterio . "'>" . $i . "</a> ";
}
}
?>
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Usuários ativos com PHP




Veremos como mostrar os usuários ativos em cada momento na nossa página.
Por Miguel Angel Alvarez - Tradução de JML





No nosso manual de PHP abordámos a utilização de sessões e demos algum exemplo práctico no que este tipo de variáveis podiam ser usadas para dar ao nosso site um aspeto mais dinâmico.

Muitos de vocês podem ter visto em certos sites um contador de usuários que se encontram nesse momento a navegar pelas mesmas páginas que vocês. Se repararam bem, podem ter observado que, na maioria dos casos (por não dizer todos), o site em questão está programado em ASP como linguagem de servidor.

Efetivamente, ASP permite uma gestão mais acessível das sessões através do famoso ficheiro global.asa. Mas isto não quer dizer que PHP seja incapaz de o fazer, o que acontece é, que temos de trabalhar um bocadinho mais para o fazer. A verdade é que todas as linguagens têm os seus pros e os seus contras, e neste caso a verdade é que ASP torna-se mais versátil do que PHP. Mesmo assim, temos de comentar que , com a sua versão 4, PHP melhorou bastante no que diz respeito a sessões.

Aqui mostramos uma maneira simples de contabilizar os usuários ativos do vosso site usando para este propósito uma tabela (array). Dentro desta tabela, iremos armazenando os diferentes endereços IP dos visitantes do nosso site e na hora e data na que o visitante executou por última vez o script.

Deste modo, a tabela tem de ir apagando progressivamente as sessões que não tenham sido renovadas num tempo que nós consideremos limite. Nós fixámos o limite em 24 minutos pois é o tempo pré-definido em PHP para suprimir os dados de uma sessão. Para modificar este tempo de vida máxima de uma sessão pode fazer-se no php.ini a partir do parâmetro sesion.gc_maxlifetime onde expressaremos o valor que queremos em segundos. Atenção, este tempo máximo é restaurado ao seu valor inicial cada vez que o usuário realiza uma petição ao servidor, isto quer dizer que um visitante poderá navegar o tempo que bem entender mantendo a mesma sessão sempre e quando não fique mais de 24 minutos sem realizar nenhum tipo de acção (petição ao servidor).

Para o correcto funcionamento do script, é necessário criar uma tabela na nossa base de dados. Estas sentença SQL pode ajudar-nos na tarefa:

CREATE TABLE control_ip (ip VARCHAR(15) NOT NULL,data INT(14) UNSIGNED NOT NULL,INDEX (ip));

Como podem ver, o campo ip, que armazena o endereço IP do visitante, está indexado. Isto vai nos permitir uma selecção rápida. Em contrapartida, como todos os campos indexados, o seu tamanho em memória será dobrado o qual não tem muita importância pois a tabela terá um numero de registos bastante limitado. O importante é que este script se execute rapidamente sem consumir demasiados recursos do servidor, sobretudo se temos em conta que se trata de um código que será sistematicamente executado em cada uma das páginas do site.

Passemos a seguir a mostrar o script que utilizaremos:

<?
////////////////////////////////////////////
//USUARIOS ATIVOS
//Calcula o número de usuários ativos
////////////////////////////////////////////

function usuarios_ativos()
{
//permitimos o uso da variável portadora do numero ip na nossa função
global $REMOTE_ADDR;
//atribuímos um nome memotecnico à variável
$ip = $REMOTE_ADDR;
//definimos o momento actual
$agora = time();
//conectamos à base de dados
//Usem os vossos próprios parâmetros!!
$conn = mysql_connect($host,$user,$password);
mysql_select_db($db,$conn);
//actualizamos a tabela
//apagamos os registros das ip inactivas (24 minutos)
$limite = $agora-24*60;
$ssql = "delete from control_ip where data < ".$limite;
mysql_query($ssql);
//vemos se o ip do visitante existe na nossa tabela
$ssql = "select ip, data from control_ip where ip = '$ip'";
$result = mysql_query($ssql);
//se existe actualizamos o campo data
if (mysql_num_rows($result) != 0)
$ssql = "update control_ip set data = ".$agora." where ip = '$ip'";
//se não existe inserimos o registro correspondente à nova sessão
else $ssql = "insert into control_ip (ip, data) values ('$ip', $agora)";
//executamos a sentença sql mysql_query($ssql);
//calculamos o número de sessões
$ssql = "select ip from control_ip";
$result = mysql_query($ssql);
$usuarios = mysql_num_rows($result);
//liberamos memória mysql_free_result($result);
//retornamos o resultado return $usuarios;}
?>

Podem observar, como vem sendo habitual, que o script é expressado em forma de função. Depois de definir a IP e o momento no que o script está a ser executado, passamos a interaccionar com a base de dados. Dentro deste processo, podemos diferenciar diferentes fases:
•Conexão com a base de dados
•Recorrido da tabela para eliminar os registos obsoletos.
•Inserção ou actualização de um registo dependendo de se o visitante é novo ou não.
•Contagem do número de registos da tabela

A função finaliza liberando o espaço de memória utilizada nas suas consultas e enviado o resultado do cálculo efectuado.

Em linhas gerais o script é de fácil compreensão. Pode que alguma das funções utilizadas vos seja desconhecida. Se assim for, acudam à página oficial de PHP onde poderão encontrar mais detalhes.

Para obter o valor proporcionado pela função ao nosso script principal teremos de realizar uma chamada clássica do tipo:

$active_users = usuarios_ativos();

Em definitiva, aqui temos um script simples que pode dar ao vosso site uma imgem um pouco mais dinâmica. Para alem disso, podem utiliza-lo e melhora-lo para criar o vosso próprio sistema de estatísticas internas. Isso fica com vocês...
 

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
Listas de elementos com cores alternas em PHP



Explicamos como listar informação com cores alternas.
Por Miguel Angel Alvarez - Tradução de JML





Vamos ver como criar uma lista de elementos numa tabela criada por filas com cores alternas. Isto é, vamos mostrar uma lista de elementos mostrados num conjunto de filas que podem ter uma das duas cores e que vão alternando, primeiro um, a seguir o outro... Para perceber melhor o exercício seria interessante ver o efeito procurado noutra página.

Esta disposição em filas de diferentes cores pode dar um aspecto um pouco pais completo ao nosso design e servir de guia visual para a que a tabela se perceba mais facilmente e se conheça melhor quais são os dados que pertencem a cada fila.

Para conseguir as cores alternas vamos utilizar uma variável que terá armazenada o número de filas e se a fila é impar mostra uma cor diferente a se a fila for par. Para descobrir se uma fila é par ou impar podemos dividir o número de filas entre 2 e se o resto de essa divisão é igual a 0, é que o número é par e se é diferente de 0 significa que o número é impar.

O operador %

Para obter o resto de uma divisão utilizamos o operador %, chamado operador de módulo. Insistimos: % retorna o resto de uma divisão entre dois valores que se aplique à operação. Por exemplo 2 % 2 retornará 0, e a operação 6 % 5 retornará 1.

Loop com filas de cores alternas

Vejamos agora o código de um loop no que se utilizam filas com cores alternas.

O recorrido será parecido a outros que realizámos com os elementos de uma consulta SQL contra uma base de dados. A única tarefa a realizar que não vimos antes nos artigos de PHP publicados neste site, consiste em que se leva a conta do número de filas e por cada fila vemos se é par ou impar. Se é par coloca-se uma cor, e se não coloca-se outra.

O código é o seguinte.

<? //crio a sentença SQL para atacar a base de dados.
$ssql = "SELECT * FROM livrovisitas_php";
$ssql .= " ORDER BY id_livrovisitas_php limit 10";

//executo a sentença para extrair um conjunto de resultados
$resultid = mysql_query($ssql,$conn);

//coloco o cabeçalho da tabela
?>
<table width=500 align=center>
<tr bgcolor="bbbbbb" align=center>
<td><b>Nome</b></td>
<td><b>Email</b></td>
<td><b>Valoração</b></td>
</tr>
<?
//crio e inicio a variável para contar o número de filas
$num_fila = 0;

//loop para mostrar os resultados
while ($damefila=mysql_fetch_object($resultid)){
echo "<tr ";
if ($num_fila%2==0)
echo "bgcolor=#dddddd"; //se o resto da divisão é 0 ponho uma cor
else
echo "bgcolor=#ddddff"; //se o resto da divisão NÂO é 0 ponho outra cor
echo ">";
?>
<td><?echo $damefila->nome;?></td>
<td><?echo $damefila->email;?></td>
<td><?echo $damefila->valoracao;?></td>
</tr> <?
//aumentamos em um o número de filas
$num_fila++;
} //fecho o while
?>
</table>

 
Topo