Aplicativos em PHP/Referências/PHP/PHP2
CURSO DE PHP EM 61 VÍDEO AULAS GRÁTIS
O curso está em espanhol. São 61 vídeo aulas com uns 20 minutos cada somando ao todo mais de 1GB de curso. Contendo uma gama muito grande de assuntos relacionados ao PHP, do básico ao avançado.
http://www.illasaron.com/html/modules.php?name=Downloads&d_op=viewdownload&cid=70
Faça o registro gratuito em - http://www.illasaron.com/html/modules.php?name=Your_Account
Baixe todo o conteúdo em um único arquivo ISO de 1GB - http://www.illasaron.com/html/modules.php?name=Downloads&d_op=getit&lid=1004
Caso baixe em arquivos separados:
- Ao final baixe também o índice
- Descompacte tudo
- Copie todos os subdiretório php* para o subdiretório "Curso PHP-MySQL\videos" do arquivo de índice.
- Após isso apenas abra o arquivo index1.html para assistir a todo o curso.
Trabalho muito bom, conteúdo invejável. Parabéns ao Angel Bernal (autor do curso).
ALERTA - PHP4 chegando ao fim da linha
Alerta para que quem ainda não migrou para o PHP 5 inicie sua migração:
Depois de 3 anos de PHP5 e com o PHP 6 chegando, a versão 4 será descontinuada a partir do ano que vem. Bugs críticos ainda serão corridos até o final de agosto de 2008.
Enviado por Marcos Alexandre Lemos Rodrigues para o br-linux (marcosalexandre·rodriguesΘgmail·com)
Notícia original em ingles:
PHP 4 end of life announcement
[13-Jul-2007]
Today it is exactly three years ago since PHP 5 has been released. In those three years it has seen many improvements over PHP 4. PHP 5 is fast, stable & production-ready and as PHP 6 is on the way, PHP 4 will be discontinued.
The PHP development team hereby announces that support for PHP 4 will continue until the end of this year only. After 2007-12-31 there will be no more releases of PHP 4.4. We will continue to make critical security fixes available on a case-by-case basis until 2008-08-08. Please use the rest of this year to make your application suitable to run on PHP 5.
For documentation on migration for PHP 4 to PHP 5, we would like to point you to our migration guide. There is additional information available in the PHP 5.0 to PHP 5.1 and PHP 5.1 to PHP 5.2 migration guides as well.
Documentos para ajudar na migração:
Migration Guide - http://www.php.net/manual/en/migration5.php Também - http://www.php.net/manual/en/migration51.php e http://www.php.net/manual/en/migration52.php
- Estruturas de Controle
As principais estruturas para controlar o fluxo dos scripts PHP.
if, else, elseif, while, do... while, for, break, consinue e switch.
Um script PHP é formado por instruções (cada instrução termina com ;).
Uma instrução pode ser:
- uma atribuição - uma chamada de função - um laço (loop) - uma instrução condicional - até uma instrução nula (;;).
As instruções podem ser agrupadas com chaves, formando blocos.
if
Uma construção muito importante e versátil. Permite a execução condicional de fragmentos de código.
Sintaxe:
if (expressao) { instrucoes; }
expressao - é avaliada como TRUE ou FALSE
- Se TRUE as instrucoes serão executadas
- Se FALSE as instrucoes serão ignoradas
Exemplos:
<?php $a = 5; $b = 3; if ($a > $b){ echo "a é maior que b"; } ?>
Muito cuidado:
<?php $a = 3; $b = 5; if ($a = $b){ echo "a é maior que b"; } ?>
Sempre exibirá "a é maior que b", mesmo que não seja. Por que?
Porque o teste está errado. Está apenas atribuindo o valor de $b a $a. O teste correto deve ser assim:
if ($a == $b) //Checa apenas se ambas as variáveis têm o mesmo valor
ou então assim:
if ($a === $b) //Checa se ambas as variáveis têm o mesmo valor e também se são do mesmo tipo
Veja este exemplo:
if (1 == "1") retornará TRUE
mas
if (1 === "1") retornará FALSE, pois 1 é numérico e "1" é string.
else
Executa instrucoes2 caso expressao seja FALSE.
Sintaxe:
if (expressao) { instrucoes; } else { instrucoes2; }
Exemplos:
<?php $a = 3; $b = 5; if ($a > $b){ echo "a é maior que b"; } else { echo "a NÃO é maior que b"; } ?>
elseif
É uma combinação de if com else. Caso a expressao do if seja FALSE então o elseif testa a expresao2, se esta for TRUE instrucoes2 serão executadas, caso contrário instrucoes3 serão executadas.
Sintaxe:
if (expressao) { instrucoes; } elseif (expressao2) { instrucoes2; } else { instrucoes3; }
<?php $a = 3; $b = 3; if ($a > $b){ echo "a é maior que b"; } elseif ($a==$b){ echo "a é igual a b"; } else { echo "a NÃO é maior que b nem igual a b"; } ?>
while
Executa instruções várias vezez, enquanto uma expressão for verdadeira (TRUE).
Sintaxe:
while (expressao) { instrucoes; }
Em cada iteração expressao é avaliada, se TRUE instrucoes serão executadas, se FALSE, serão ignoradas.
Exemplos:
<?php $i = 1; while ($i <= 10) { echo $i++; /* o valor impresso será $i depois do acréscimo (post-increment) */ } ?>
do ... while
Semelhante ao while, diferindo no fato da expressão condicional ficar ao final das iterações.
No do ... while a primeira iteração sempre executará as instruções incondicionalmente.
Sintaxe:
do { instrucoes; } while (expressoes); // Atentar para o ponto e vírgula ao final
Exemplos:
<?php // Executa pelo menos uma vez incondicionalmente $i = 6; $fator = 2; $minimo = 10; do { if ($i < 5) { echo "\$i não é grande o suficiente"; break; } $i *= $fator; if ($i < $minimo) { break; } echo "\$i está Ok e vale " . $i; } while (0); /* Exemplo simples $i = 0; do { echo $i; } while ($i > 0); */ ?>
for
Laço composto por 3 instruções. A primeira é a de inicialização da variável, a segunda será avaliada a cada iteração e a terceira é a de incremento. As 3 separadas por ponto e vírgula. Todas as 3 são opcionais e caso a segunda seja nula o loop será infinito.
Sintaxe:
for (expr1; expr2; expr3) { instrucoes; }
- expr1 será avaliada uma única vez incondicionalmente;
- expr2 será avaliada no início de cada iteração:
- Se TRUE o laço continua e as instruções serão executadas
- Se FALSE o laço termina.
- expr3 é avaliada ao final de cada iteração, no caso incrementa a variável
Exemplos:
<?php /* exemplo 1 - Controla o fluso no for*/ echo "<br><br>1- "; for ($i = 1; $i <= 10; $i++) { echo $i; } echo "<br><br>2- "; /* exemplo 2 - Controle o fluxo no if interno*/ for ($i = 1; ; $i++) { if ($i > 10) { break; } echo $i; } echo "<br><br>3- "; /* exemplo 3 - Controle o fluxo no if interno*/ $i = 1; for (; ; ) { if ($i > 10) { break; } echo $i; $i++; } echo "<br><br>4- "; /* exemplo 4 */ for ($i = 1; $i <= 10;$i++); echo $i; ?>
foreach
Laço para varrer os elementos de uma matriz (array).
Atentar para o fato de que o foreach não requer reset() antes, pois quando é executado o ponteiro interno do array já é zerado automaticamente.
Sintaxe:
foreach (expressao_array as $valor){ instrucoes; } foreach (expressao_array as $chave => $valor) { instrucoes; }
Exemplos:
<?php //Você pode ter notado que os seguintes itens são funcionalmente idênticos: $arr = array("um", "dois", "três"); reset ($arr); // Aponta para o primeiro elemento while (list(, $value) = each ($arr)) { echo "Valor: $value<br />"; } foreach ($arr as $value) { echo "Valor: $value<br />"; } //Os seguintes também são funcionalmente idênticos: $arr = array("one", "two", "three"); reset($arr); while (list($key, $value) = each ($arr)) { echo "Chave: $key; Valor: $value<br />"; } foreach ($arr as $key => $value) { echo "Chave: $key; Valor: $value<br />"; } /* exemplo foreach 1: somente valores */ $a = array(1, 2, 3, 17); foreach ($a as $v) { echo "Valor atual de \$a: $v.<br>"; } /* exemplo foreach 2: valores (com as chaves impressas para ilustração) */ $a = array(1, 2, 3, 17); $i = 0; /* para exemplo somente */ foreach ($a as $v) { echo "\$a[$i] => $v.<br>"; $i++; } /* exemplo foreach 3: chaves e valores */ $a = array ( "um" => 1, "dois" => 2, "três" => 3, "dezessete" => 17 ); foreach ($a as $k => $v) { echo "\$a[$k] => $v.<br>"; } ?>
break
Cancela a execução de laços: for, foreach, while, do ... while ou switch.
break n é suportado, onde n é o número de estruturas a serem canceladas.
Sintaxe:
break; break n;
Exemplos:
Exemplo simples
for ($x = 1; $x < 10; $x++){ if($x == 5){ break; } echo $x; }
Imprimirá 1234, pois quando $x for 5 sairá do laço.
Exemplo sofisticado
<?php $arr = array('um', 'dois', 'três', 'quatro', 'PARE', 'cinco'); while (list (, $val) = each ($arr)) { if ($val == 'PARE') { break; /* Você poderia colocar 'break 1;' aqui. */ } echo "$val<br />"; } echo "<br />"; /* Utilizando o argumento opcional. */ $i = 0; while (++$i) { switch ($i) { case 5: echo "No 5<br />"; break 1; /* Sai somente do switch. */ case 10: echo "No 10; saindo<br />"; break 2; /* Sai do switch e while. */ default: break; } } ?>
continue
Sai da atual iteração de um loop para continuar na próxima iteração.
Sintaxe:
continue; continue n;
Enquanto o break encerra definitivamente um laço, o continue encerra somente a iteração atual.
Exemplos:
Exemplo simples
for ($x = 1; $x < 10; $x++){ if($x == 5){ continue; } echo $x; }
Imprimirá 12346789, pois quando $x for 5 sairá da iteração e continuará na próxima que é o 6.
Exemplo sofisticado
<?php $arr = array(1,2,3,4,5,6,7,8); while (list ($key, $value) = each ($arr)) { if (!($key % 2)) { // pula itens pares, ou seja, processa somente ímpares continue; } echo ($value); } echo "<br>"; $i = 0; while ($i++ < 5) { echo "Fora<br />"; while (1) { echo " Meio<br />"; while (1) { echo " Dentro<br />"; continue 3; } echo "Isto nunca será exibido.<br />"; } echo "Nem isso.<br />"; } // Outro exemplo for ($i = 0; $i < 5; ++$i) { if ($i == 2) continue print "$i\n"; } ?>
switch
Similar a uma série de construções if seguidas.
Sintaxe:
switch (variavel) { case valor1: instrucoes; break; case valor2: instrucoes2; break; case valorN; instrucoesN; break; default: instrucoesDefault; break; }
Exemplos:
<?php $i = 1; // Estrutura com if if ($i == 0) { echo "\$i igual a 0"; } elseif ($i == 1) { echo "\$i igual a 1"; } elseif ($i == 2) { echo "\$i igual a 2"; } echo "<br>"; // Estruturas com switch switch ($i) { case 0: echo "\$i igual a 0"; break; case 1: echo "\$i igual a 1"; break; case 2: echo "\$i igual a 2"; break; } echo "<br>"; $i = 2; // Executará todos, falta o break switch ($i) { case 0: echo "\$i igual a 0"; case 1: echo "\$i igual a 1"; case 2: echo "\$i igual a 2"; } echo "<br>"; // Simulando intervalos switch ($i) { case 0: case 1: case 2: echo "\$i é menor que 3 mas não negativo"; break; case 3: echo "\$i é 3"; } echo "<br>"; // Valor default switch ($i) { case 0: echo "\$i igual a 0"; break; case 1: echo "\$i igual a 1"; break; case 2: echo "\$i igual a 2"; break; default: echo "\$i não é igual a 0, 1 ou 2"; } ?>
Estruturas em Obsolescência
Devemos evitar, pois em futuras versões não mais serão utilizados.
Funções com nomes antigos, tipo:
pg_numrown, pg_fecharray e similares.
Caso se faça uma busca por estas funções no site do PHP nada será retornado.
As funções atuais tem nomes com espaço separando palavras, como:
pg_num_rown, pg_fech_array e similares.
Algumas funções agora tem outro nome, por exemplo:
pg_exec agora deve ser substuida por pg_query
Algumas estruturas de controle usavam os dois pontos:
while: ... endwhile, if: ... endif, devemos preferir:
while(){ ... }, if(){ ... }
Evitar o uso do comentário tipo shell #.
Estruturas do tipo $HTTP_POST_VARS e similares foram substituídas por: $_POST e similares.
Formatando Números
number_format
number_format -- Formata um número com os milhares agrupados
string number_format ( float number [, int decimals] )
string number_format ( float number, int decimals, string dec_point, string thousands_sep )
number_format() retorna uma versão formatada de number. Esta função aceita um, dois ou quatro parâmetros (não três):
Se apenas um parâmetro é dado, number será formatado sem decimais, mas com uma virgula (",") entre cada grupo de milhar.
Se dois parâmetros são dados, number será formatado com o número de casas decimais especificadas em decimals com um ponto (".") na frente, e uma vírgula (",") entre cada grupo de milhar.
Se todos os quatro parâmetros forem dados, number será formatado com o número de casas decimais em decimals, dec_point ao invés do ponto (".") antes das casas decimais e thousands_sep ao invés de uma vírgula (",") entre os grupos de milhares.
Somente o primeiro caractere de thousands_sep é usado. Por exemplo, se você usar foo como o parâmetro thousands_sep no número 1000, number_format() irá retornar 1f000.
Exemplo 1. Exemplo number_format()
Por exemplo, a notação Francesa usa duas casas decimais, vírgula (',') como separador decimal, e espaço (' ') como separador de milhar. Isto é feito com a linha :
<?php // string number_format ( float number, int decimals, string dec_point, string thousands_sep ) $number = 1234.56; '''// Notação Brasileira''' $numero_format_brasil = number_format($numero, 2, ',', '.'); // 1.234,56 echo "O número' $number' no formato brasileiro fica '$numero_format_brasil'<br><br>"; ?>
Validação de Ano Bisexto
<?php function ano_bisexto($ano){ return ((($ano%4)==0 && ($ano%100) != 0) || ($ano%400)==0); } if(ano_bisexto(2006)) echo "Ano bisexto"; else echo "Ano não bisexto"; ?>
Algumas Funções Matemáticas
abs -- Valor absoluto mixed abs ( mixed número ) <?php $abs = abs(-4.2); // $abs = 4.2; (double/float) $abs2 = abs(5); // $abs2 = 5; (inteiro) $abs3 = abs(-5); // $abs3 = 5; (inteiro) ?>
ceil -- Arredonda frações para cima float ceil ( float valor ) <?php echo ceil(4.3); // 5 echo ceil(9.999); // 10 ?> floor -- Arredonda frações para baixo float floor ( float valor ) <?php echo floor(4.3); // 4 echo floor(9.999); // 9 ?> max -- Localiza o maior número mixed max ( number arg1, number arg2 [, number ...] ) mixed max ( array numbers [, array ...] ) <?php echo max(1, 3, 5, 6, 7); // 7 echo max(array(2, 4, 5)); // 5 echo max(0, 'hello'); // 0 echo max('hello', 0); // hello echo max(-1, 'hello'); // hello // Com arrays múltiplos, max compara da esquerda para direita, // assim nesse exemplo: 2 == 2, mas 4 < 5 $val = max(array(2, 4, 8), array(2, 5, 7)); // array(2, 5, 7) // Se forem informados um array e um não array, o array // é sempre retornado como se ele fosse o maior $val = max('string', array(2, 5, 7), 42); // array(2, 5, 7) ?> min -- Localiza o menor número mixed min ( number arg1, number arg2 [, number ...] ) mixed min ( array numbers [, array ...] ) <?php echo min(2, 3, 1, 6, 7); // 1 echo min(array(2, 4, 5)); // 2 echo min(0, 'hello'); // 0 echo min('hello', 0); // hello echo min('hello', -1); // -1 // Com arrays múltiplos, min compara da esquerda para direita, // assim nesse exemplo: 2 == 2, mas 4 < 5 $val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8) // Se ambos forem um array e um não array, o array // nunca será retornado porque ele é sempre considerado o maior $val = min('string', array(2, 5, 7), 42); // string ?> count -- Conta o número de elementos de uma variável int count ( mixed var [, int mode] ) <?php $a[0] = 1; $a[1] = 3; $a[2] = 5; $result = count($a); // $result == 3 $b[0] = 7; $b[5] = 9; $b[10] = 11; $result = count($b); // $result == 3; ?>
Exemplo 2. Uso recursivo da função count() (PHP >= 4.2.0)
<?php $food = array( 'fruits' => array('orange', 'banana', 'apple'), 'veggie' => array('carrot', 'collard','pea')); // recursive count echo count($food,COUNT_RECURSIVE); // mostra 8 // normal count echo count($food); // mostra2 2 ?> pow -- Potência number pow ( number base, number exp ) var_dump( pow(2,8) ); // int(256) echo pow(-1,20); // 1 echo pow(0, 0); // 1 echo pow(-1, 5.5); // erro rand -- Gera um número aleatório int rand ( [int min, int max] ) echo "Exibir 20 números aleatórios entre 20 e 160<br><br>"; for($x=20;$x<40;$x++){ echo rand($x, 4*$x)."<br>"; } exit("Saindo..."); round -- Arredonda um número float round ( float val [, int precision] ) <?php echo round(3.4); // 3 echo round(3.5); // 4 echo round(3.6); // 4 echo round(3.6, 0); // 4 echo round(1.95583, 2); // 1.96 echo round(1241757, -3); // 1242000 echo round(5.045, 2); // 5.04 echo round(5.055, 2); // 5.06 ?> sqrt -- Raiz quadrada float sqrt ( float arg ) <?php // Precisão depende de sua diretiva precision echo sqrt(9); // 3 echo sqrt(10); // 3.16227766 ... ?>
Forçando a Limpeza do Cache
<?php // Este é para os servidores de proxy. Diz para baixar, bypassando o proxy header ("Cache-Control: no-cache, must-revalidate"); // Este é para o navegador e nem sempre funciona (falta de padrão entre eles) header ("Pragma: no-cache"); ?>
Redirecionamento de Páginas
header("location: novapagina.php");
Exibir o conteúdo de um arquivo
readfile -- Lê e exibe o conteúdo de um arquivo
readfile('http://www.google.com.br');
readfile('/home/1www/pagina2.php');
Enviar E-mail via PHP
<?php $to = "ribamar.sousa@dnocs.gov.br"; $subject="Apenas testando"; $message = "Estou testando o envio de e-mail pelo PHP."; $email="ribafs@gmail.com"; $ret=mail($to, $subject, $message, "From: $email\r\nReply-to: $email\r\n"); echo $ret; ?>
Usando Favicon em sites
Aquele pequeno ícone que fica à esquerda da URL do site, na caixa Location do Browser, que inclusive personaliza a barra de links quando arrastamos o endereço do site. Para que nosso site apareça para o visitante com um link, devemos seguir os seguintes procedimentos:
- Criar uma imagem com o logo do site, no formato png, jpg, gif, etc com 32x32 pixels
- Salvar como favicon.png ou outra extensão
- Adicionar a TAG abaixo, na TAG head, como abaixo:
<head> ... <link href="http://www.seusite.com.br/diretorio/favicon.png" type="image/gif" rel="icon"> ... </head>
Também pode ser assim:
rel="shortcut icon"
Este ícone pode ser inclusive animado.
Referência: lista da Dicas-L (http://www.dicas-l.com.br).
Integração entre PHP e JavaScript
O PHP pode ter acesso às variáveis do JavaScript e o JavaScript pode ter acesso às variáveis do PHP. Veja alguns exemplos:
PHP Comunicando com JavaScript: PHP recebendo variáveis do JavaScript e JavaScript recebendo variáveis do PHP
<!-- Arquivo php2_js.php --> <h1 style='font-size:18px;text-align:center;'>Integração entre PHP e JavaScript</h1> Lembrando que o PHP é processado no servidor (pelo Apache, por exemplo) Enquanto que o JavaScript é processado no cliente (pelo Navegador). <h2>Variáveis em JavaScript</h2> <script> var variavel_js=250; alert("A variável_js vale "+variavel_js); document.write("A variável_js vale "+variavel_js); document.write("<br>"); document.write("Aqui não saimos do Navegador ainda<br>"); </script> <h2>Variáveis em PHP</h2> <?php $variavel_php=850; print "<script>alert('A variavel_php vale '+$variavel_php)</script>"; print "O alert anterior recebeu a variável do servidor e exibiu<br>"; print "<br>A \$variavel_php vale $variavel_php<br>"; ?> <h2>JavaScript recebendo de PHP</h2> <script> variavel2_js = '<?=$variavel_php?>' - 150; alert("variavel2_js recebeu \"$variavel_php - 150\" e agora vale " + variavel2_js); alert("Para receber o valor da variável do PHP no navegador, a página já deve ter vindo do servidor."); document.write("variavel2_js recebeu \"$variavel_php - 150\" e agora vale " + variavel2_js); document.write("<br>"); </script> <h2>PHP recebendo de JavaScript</h2> <?php $variavel2_php="<script>document.write(variavel2_js)</script>"; print "Usando PHP: A variavel2_php recebeu variavel2_js e agora vale $variavel2_php<br><br>"; print "Isso acima está errado, pois apenas é algo que tem valor quando chega ao navegador.<br><br>"; print "Para que o PHP receba de fato o valor de uma variável em JS, esta variável deve ser recebida por uma variável em PHP submetida para o servidor, por exemplo o campo de um formulário<br><br>"; // Não podemos concatenar assim: <script>alert('A variável variavel2_php agora vale' + $variavel2_php)</script> // Pois a variável $variavel2_php contém <script>alert(... print "<script>document.write('Usando JS: A variável variavel2_php agora vale' )</script> $variavel2_php"; ?> <script>var varSigla="DNOCS";</script> <form method="POST" action="php_js2.php"> <br><br> Clique Neste campo e mude o foco: <input name="sigla" maxlength="13" value="ValorOriginal" onFocus="this.value=varSigla"> <input type=submit value=Enviar> </form> <?php print "<font color='red'><h4>Para Ajuda com a depuração do JavaScript: usando o Firefox vá em Ferramentas - Console de Erros</h4></font>"; echo "<hr><h2>Código Fonte</h2>"; show_source(__FILE__); ?> <?php // Arquivo php2_js.php if ($_POST['sigla']){ echo "A variável sigla, campo do Form que valia 'ValorOriginal', recebeu o valor da variável JS 'DNOCS'<br>"; echo "que foi atribuído à variável \$sigla do PHP através do campo do form!"; } echo "<hr><h2>Código Fonte</h2>"; show_source(__FILE__); ?>
Outro Exemplo de Integração do PHP com JavaScript
<h1>Integração entre PHP e JavaScript</h1> <script> var nome; nome = prompt('Qual o seu nome?','João Brito Cunha'); </script> <h2>PHP Mostrando variável JavaScript</h2> <?php echo "Seu nome é <script>document.write(nome)</script>"; echo "<script>alert('Seu nome é '+nome)</script>"; ?> <h2>JavaScript Mostrando variável PHP</h2> <?php $arquivo="phpjs.php"; $acao='excluir'; $tipo='diretorio'; echo "<br><br>Arquivo = $arquivo Ação = $acao e Tipo = $tipo"; ?> <script> if(!confirm("Confirma?")){ alert("Não confirmou!"); }else{ alert("Arquivo = <?=$arquivo?> Acao = <?=$acao?> Tipo = <?=$tipo?>"); } </script> <h2>HTML e JavaScript Mostrando variável PHP</h2> <?php $sigla="DNOCS"; ?> <form> Clique Neste campo e mude o foco<br> <input name="sigla" maxlength="10" value="<?=$sigla?>" onBlur="javascript:location.href='<?=$PHP_SELF?>?sigla=document.forms[0].sigla.value'"> </form>
Passing JavaScript variables to PHP
Original em:
http://www.webcheatsheet.com/php/passing_javascript_variables_php.php
Criar arquivo js.html com o conteúdo:
<script type="text/javascript"> width = screen.width; height = screen.height; if (width > 0 && height >0) { window.location.href = "http://localhost/main.php?width=" + width + "&height=" + height; } else exit(); </script>
Criar o arquivo main.php com o seguinte conteúdo:
<?php echo "<h1>Screen Resolution:</h1>"; echo "Width : ".$_GET['width']."<br>"; echo "Height : ".$_GET['height']."<br>"; ?>
PHP com banco de dados Access
http://www.imasters.com.br/artigo/299/php/php_com_banco_de_dados_access/
Sugestão de Livros
Desenvolvendo Web Sites com PHP Editora Novatec Juliano Niederauer PHP para quem conhece PHP Editora Novatec Juliano Niederauer PHP Guia do Desenvolvedor Ed. Berkeley Sterling Hughes (Do grupo de desenvolvimento do PHP) Desvendando aplicações na Web com PHP 4.0 Ed. Ciência Moderna Tobias Retschiller e Till Gerken
Referências
Vídeo Tutoriais
Dezenas de vídeo tutoriais sobre PHP
http://www.illasaron.com/html/modules.php?name=Downloads&d_op=viewdownload&cid=70
PHP
http://www.php.net/manual/pt_BR/
http://www.php.net/downloads.php
http://www.planet-source-code.com/vb/default.asp?lngWId=8
http://www.hotscripts.com/PHP/index.html
http://www.zend.com (empresa dos dois membros israelenses da equipe de desenvolvimento do PHP, especial ênfase na seção Developer Zone)
http://www.phpnet.us/ - Hospedagem free para PHP e MySQL (300MB)
http://www.faqts.com/knowledge_base/index.phtml/fid/51/
CURSOS GRÁTIS
http://cursos.cdtc.org.br/brasil/ - Cursos Grátis para Func.Públ.
http://www.apostilando.com/download.php?cod=171&categoria=PHP
http://www.aprendaemcasa.com.br/apcasa6.htm
http://www.solocursosgratis.com/cursos_gratis_php-slctema264.htm
CLIPARTS
http://www.digitmania.holowww.com/digital.html – Dígitos (cliparts)
POSTGRESQL
http://www.postgresql.org/docs/current/interactive/
http://pgdocptbr.sourceforge.net/pg80/index.html
http://www.designmagick.com/category/3/PostgreSQL
MYSQL
http://dev.mysql.com/doc/refman/4.1/pt/index.html
http://dev.mysql.com/doc/refman/5.0/en/index.html
SQL
http://www.firstsql.com/tutor.htm
http://www.sql-tutorial.net/SQL-tutorial.asp
http://www.programmingtutorials.com/sql.aspx
http://tutorials.findtutorials.com/
http://www.hardened-php.net/home.8.html - Hardened PHP Project