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

http://www.php.net/manual/pt_BR/

http://www.php.net/downloads.php

http://www.phpbrasil.com/

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.phpwizard.net

http://www.phpclasses.org

http://www.weberdev.com

http://www.devshed.com

http://www.phpmania.org/

http://www.phpnet.us/ - Hospedagem free para PHP e MySQL (300MB)

http://www.superphp.com.br

http://www.scriptbrasil.com/

http://www.faqts.com/knowledge_base/index.phtml/fid/51/

http://www.alt-php-faq.org/

http://ribafs.byethost2.com/


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://sqlzoo.net/

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

http://www.1phpscripts.com/

http://www.weberdev.com/

http://www.goldsofts.com/scriptscategory/10/0/1/0.html

http://www.sql-statements.com/