Foi chamado originalmente de Personal Home Page Tools por seu criador, o engenheiro
de software Rasmus Lerdorf, que o desenvolveu com o intuito de monitorar os acessos
de seu site pessoal. Sua segunda versão foi chamada de PHP/FI, que é a inclusão do
Form Interpreter, uma ferramenta para analisar sintaticamente consultas SQL. Mas
desde sua versão 3, está sobre a rubrica de Zend.com
dos desenvolvedores Zeev Suraski e Andi Gutmans.
O PHP é uma linguagem de criação de scripts embutida em HTML, que faz o mesmo papel
do CGI, isto é, ele executado e interpretado do lado do servidor, retornando apenas o
resultado para o browser do cliente. Isto significa que, ao analisar o código fonte de
uma página feita em PHP, o usuário apenas visualizará códigos HTML, pois a sintaxe dele
foi interpretada para isso.
Basicamente, hoje em dia é possível se fazer de quase tudo em PHP, desde geração de páginas
dinâmicas até a aplicação de comandos em seu servidor. Outro ponto muito importante é que
o PHP aceita suporte a um grande número de banco de dados, como dBase, Interbase, mSQL,
MySQL, Oracle, Sybase, PostgreSQL e outros.
O PHP também tem suporte a serviços de protocolos como IMAP, SNMP, NNTP, POP3, sendo
possível abrir sockets e interagir com outros protocolos.
Criando uma aplicação
A sintaxe de PHP que iremos utilizar é a seguinte:
<?
comandos ...
?>
Bem simples não...
1° Script - Vamos ao tradicional "Olá Mundo!" que aqui será o nosso "Olá Web!!!"
<?
// ola.php
echo "Olá Web!!!";
echo "Eu estou utilizando o PHP para a criação desta página";
?>
Nota: Observe que o "echo" é o comando que imprime o texto na tela do
browser, chamo a atenção também para o "ponto e vírgula", pois é ele
que finaliza a instrução.
2° Script - Vamos agora a execução de um comando, como o SE, isto é, IF.
<?
// if.php
/* Este exemplo utiliza o comando if
e também comentários */
if (0 == 0) { // esta linha não precisa de ponto e vírgula
echo "Se zero é igual a zero, este texto será apresentado!";
} else { // esta linha não precisa de ponto e vírgula
echo "Se zero for diferente de zero, este texto será apresentado!";
} // esta linha não precisa de ponto e vírgula
?>
Nota: Neste exemplo foi dado duas situações de utilização de comentário.
Primeiro com o uso do /* texto */, que é utilizado para se fazer comentários
que se estendem por mais de uma linha; Segundo com uso do //, que é utilizado
para se fazer comentários em apenas uma linha.
Em seguida foi dado um comando de estrutura de controle, que faz um redirecionamento
do fluxo em resposta a um questionamento do comando if. Observe que nesta linha
não é necessário utilizar o "ponto e vírgula".
3° Script - Vamos agora a utilização de variáveis
<?
// variaveis.php
$num = 0;
for ($num ; $num < 5; $num ++) {
if ($num <= 2) {
echo "O número $num é menor ou igual a 2";
} else {
echo "<br> O número $num é maior que 2";
} // esta chave finaliza o bloco do comendo if
} // esta chave finaliza o bloco do comando for
?>
Nota: Começamos este script inicializando uma variável com o
nome de "num", observe que para um nome ser considerado variável,
ele deve ser iniciado com o $ cifrão.
Foi utilizado o comando de repetição "for" que cria um loop até que
sua condição seja quebrada.
Sintaxe: for (variável_inicial ; condição ; incremento_ou_decremento_da_variável)
for ($num ; $num < 5; $num ++)
A cada passagem pelo comando for, de acordo com o valor da variável,
ela será escrita na tela.
Quero chamar a atenção para o incremento "++" que irá acrescer mais 1 a variável
$num a cada passagem do for, mas observe que o valor 5 não será escrito,
pois ele não entra na condição, ele é apenas um ponto determinante que quebra a
repetição do for. Já o valor 2, será escrito por este estar sendo descrito na
condição if como sendo (igual ou menor `=<` ao valor).
Outro detalhe utilizado, foi a tag <br> do HTML, que irá fazer a mudança de
linha para números maiores que 2, para deixar o texto exibido no browser mais
organizado... como vocês irão perceber na comparação do resultado.
[1] Comentário enviado por Ragen em 06/06/2004 - 22:19h
Muito show seu artigo... É simples e vai direto ao ponto.
As vezes comecamos a viajar em assuntos de nivel técnico relativamente alto e nos esquecemos que o pessoal que tá comecando só quer e precisa de exemplos simples.
[2] Comentário enviado por agk em 07/06/2004 - 10:16h
Nossa muito bom esse artigo, eu que estou começando em php achei d+, exemplos simples como esses é que nos permiter começar a aprender esse linguagem maravilhosa e aumentar nosso conhecimento na área.
[5] Comentário enviado por nanci em 01/07/2004 - 21:01h
É o melhor artigo PHP para iniciantes que já li. Sei que é complicado para programadores experientes entender quais são as nossas dificuldades. O Jeferson conseguiu explicar de maneira clara e com exemplos práticos.
[6] Comentário enviado por Hernando em 19/10/2004 - 14:21h
Dae brody... Salve Salve este artigo... caraca eu tava procurando algo do tipo há um tempão, pois me propus dar aula de php para um camarada e tava preparando esta aula hoje tu me salvou umas 2 horinhas de trampo... Valeu brody
[7] Comentário enviado por caduardo em 12/03/2005 - 11:52h
Olás estava fazendo teste com o artigo acima e não consigo editar pois sempre da registro não encontrado, mesmo fazendo as mudanças acima. E também qdo cadastro so cadastro o codigo o resto fica em branco. Olhe os logs do mysql
050312 11:51:40 173 Connect carlos@localhost on
173 Init DB meubanco
173 Query SELECT codigo, nome, cargo, setor
FROM funcionarios
WHERE nome LIKE '%%'
050312 11:53:49 157 Init DB meubanco
157 Query INSERT INTO funcionarios (nome, cargo, setor)
VALUES ('', '', '')
Tenho que fazer alguma mudança no html ou nos scripts??
[9] Comentário enviado por valteirsf em 22/05/2005 - 21:38h
Otimo artigo de PHP.
Começei a pouco tempo estudar PHP.
Com o sistema já pronto consegui enteder algumas coisas q não entedia.
Quando se ver ele funcionando dar pra enterder melhor com PHP funciona.
Aqui funcionou muito bem.
[12] Comentário enviado por lanux em 20/10/2006 - 15:30h
O meu enviardados.php não está funcionando. A entrada é criada na tabela, porém vazia, sem os dados enviados pelo cadastrar.html.
Por outro lado, se eu logar no mysql e enviar os dados "na mão" com INSERT INTO funciona legal.
Não sei mais onde procurar o erro! Alguma dica?
[13] Comentário enviado por jeffestanislau em 20/10/2006 - 20:45h
alega1977 e lanux,
Debuguem o sistema nesta linha do enviar dados.
Usem o comando echo e o exit para ir vendo o que acontece e ir parando a execução do script, como no exemplo abaixo:
[14] Comentário enviado por lavoie em 27/12/2006 - 12:02h
realizei os passos de acordo com o tutorial, so que nao eh adicionado nenhum usuarios, fiz o teste de acordo com o jeffestanislau pediu , e aparece o seguinte INSERT INTO funcionarios (nome, cargo, setor) VALUES ('', '', ''), nao funcionou, se alguem tiver uma dica ae valeu
[15] Comentário enviado por nandoxto em 07/01/2007 - 19:11h
Olá!
Eu trabalho numa ONG e estou fazendo um banco de dados para a mesma, eu fui fazendo os passos desse tutorial e gostei demais dele, porem está aparecendo um erro:
Fatal error: Call to undefined function: mysql_pconnect() in /var/www/config.php on line 9.
Estou precisando de ajuda.
Obrigado desde já.
[17] Comentário enviado por pxdelta em 11/01/2007 - 10:48h
Espero que o Jefferson informe se está ok...
Vamos a minha tese... kkk
Para que seja cadastrado os campos de nome, setor e cargo é precizo informar para o script enviardados.php quais são as variáveis do form no cadastrar.html que ele deve armazenar...
Que pega o que foi postado no form formCadastrarFuncionario e joga para as variáveis $nome, $cargo e $setor...
Assim o cadastro dos funcionários é efetuado com sucesso!!!
Da mesma maneira na busca
No arquivo obterdados.php após a linha
mysql_select_db('meubanco');
deve ser colocado mais uma linha
$busca=$_POST['buscar'];
para tando no arquivo buscar.html ficou assim
input type="text" name="buscar"
Ai a busca encontra o dado cadastrado..
Da mesma maneira no arquivo editardados.php após a linha
$update = "UPDATE funcionarios SET nome='$nome1', cargo='$cargo1', setor='$setor1' WHERE codigo='$codigo1'";
Perfeito é possivel editar os campos e salvar que funciona tudo corretamente...
..
Agora precizo de ajuda se alguem já viu mas se for cadastrado mais que 15 nomes o script não mostra a página 2 e dá erro na linnha
[18] Comentário enviado por nandoxto em 23/01/2007 - 18:36h
Olá Jefferson!
Consegui resolver o problema
Fatal error: Call to undefined function: mysql_pconnect() in /var/www/config.php on line 9.
Porém agora não consigo cadastrar outros funcionários.
As entradas nas tabelas ficam em branco.
Abraços.
[19] Comentário enviado por EnzOo em 19/04/2007 - 17:49h
Fala ae, ótimo artigo, só para complementar
Na parte onde tem:
/*descubra o número da página que será exibida se o número da página não for informado, definir 1 */
if (!$pagina) {
$pagina = 1;
}
vocês devem acrescentar o get para pegar quando clicar.
o código vai ficar assim.
/*descubra o número da página que será exibida se o número da página não for informado, definir 1 */
$pagina = $_GET[pagina];
if (!$pagina) {
$pagina = 1;
}
Muito bom, nem usei todas as partes, só o listar mesmo.
[21] Comentário enviado por gzanatta00 em 26/04/2007 - 19:55h
amigo é o seguinte tenho um servidor debian, e os arquivos do diretorio da minha pagina esta dentro de /var/www, certo...dai eu abro a pagina pelonavegador, por exemplo, ao inves dele abrir a pagina empresa.php, ele pede pra salvar, sei que tem que instalar um componente mas nao sei qual, ja tentei varios e nada
Gustavo
[22] Comentário enviado por leandro_hamid em 13/09/2007 - 15:29h
Boa tarde pessoal!
Antes de mais nada quero agradecer pelo ótimo artigo, eu estou me iniciando em PHP e este artigo para mim esta sendo de fundamental importância.
Eu testes os scripts do capítulo "4.Uso de função" e ao executar o script nova_funcao.php me deparei com o seguinte erro:
"Fatal error: Cannot redeclare soma() (previously declared in C:\xampp\htdocs\Treinamento\funcao.php:6) in C:\xampp\htdocs\Treinamento\funcao.php on line 6
"
O que pode ter acontecido?Eu retornei no scrip funcao.php renommiei a variável $resultado para $resultado_da_soma e mesmo assim não resolveu, aguardo respostas e desde já agradeço.
[23] Comentário enviado por fabiano_shark em 13/09/2007 - 15:47h
Como a própria descrição sugere, você provavelmente deve ter declarado a função duas vezes. Acontece muito quando você declara esta função em uma página e dá "include" noutra que também tem esta função.
[24] Comentário enviado por leandro_hamid em 13/09/2007 - 16:25h
Muito obrigado pela ajuda faviano_shark, me desculpe pela ignorâncaia mas eu ainda não consegui identificar o erro.
Não consegui ver onde eu declarei a função "soma" mais de uma vez, o que eu percebi é que fiz chamadas desta função como especificado no exemplo do respectivo capítulo, peço encarecidamente ajuda, abraço.
[25] Comentário enviado por leandro_hamid em 13/09/2007 - 16:52h
Oi pessoal!!!Pra variar posto mais uma dúvida, iniciante é foda!!!rrsrsr(brincadeira)
Testando as intruções sql a partir do capítulo 5.Criando um banco de dados para uso em nossos scripts, mais precisamente as instruções com relação a criação de usuários para aceso ao servidor eu executei a instrução:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
[26] Comentário enviado por albert86 em 21/07/2008 - 15:47h
leandro_hamid, eu tb estava com esse problema, e consegui resolver da seguinte maneira:
Veja que com o comando show fields from user; aparecia pra mim o seguinte:
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+
como vc pode ver há 26 termos do tipo enum('N','Y') , mais alguns outros. O que eu fiz então, foi acabar de preencher a instrução do insert da seginte maneira:
veja que eu coloquei 26 vezes 'Y', mais os ultimos campos preenchidos com seus valores default que vi na tabela acima. Ou seja, eu deixei o comando especificando todos os valores que na tabela teria que ser informada. Veja sua tabela com o comando show fields from user; e então preencha a instrução INSERT de modo a atender todos os seus campos.
[27] Comentário enviado por albert86 em 21/07/2008 - 15:50h
muito bom artigo jefferson. Eu lhe encorajo a dedicar-se na escrita de livros sobre as areas que vc curte. Vc tem uma boa didatica, e isso o levaria a ganhar um bom dinheiro com livros sobre informatica. É só uma dica mesmo. Você que decide. Mas talento pra tal vc tem. Parabéns!!!
[28] Comentário enviado por albert86 em 22/07/2008 - 13:44h
Estou com um probleminha no exemplo do referente artigo. Aparentemente eu estou conseguindo cadastrar os usuarios normalmente, mas quando visualizo os cadastros, o cadastro novo não aparece. Aparece sim um cadastro novo sem dados nenhum... ou seja, ele cria o cadastro só que não insere os dados nele. Aconteceu com alguém isso? e alguém sabe o que poderia ser esse probleminha??
[29] Comentário enviado por jeffestanislau em 22/07/2008 - 14:09h
albert86,
Vamos debugar seu código usando (echo e exit) nesta parte onde ele insere os dados no banco. Coloque assim:
No arquivo enviardados.php, insira um echo antes e um exit no fim da linha indicada.
//cadastrar cliente
echo $insert = "INSERT INTO funcionarios (nome, cargo, setor) VALUES ('$nome', '$cargo', '$setor')"; exit;
Desta forma, antes de inserir os dados ele irá te mostrar como está a query que irá fazer isso.
Verifique se os campos estão preenchidos corretamente. Caso não esteja, você deverá confrontar esta informação com o html que chama este arquivo, verificando os mesmos campos para saber se os nomes estão correlacionados corretamente.
Obs: Depois para o sistema voltar a funcionar, não esqueça de tirar o echo e o exit da linha especificada.
[30] Comentário enviado por albert86 em 22/07/2008 - 14:24h
então né jefferson... eu usei as dicas do pxdelta, e funcionou perfeito para o cadastro... mas ainda não esta funfando na hora de buscar um usuário... vou debugar sim na parte da busca, pra ver se os dados estão chegando como previsto... obrigado
[33] Comentário enviado por jarbasf em 14/07/2009 - 14:24h
jeffestanislau boa tarde, estou em dúvida quanto a consulta dos meus dados cadastrados. Veja bem, no meu banco eu preciso consultar entre datas, exemplo: "2009-06-01 a 2009-06-30" e também o código do funcionario, exemplo: 9999, tudo isso tudo numa página html.
-> Como eu criaria a tela de buscar.html?
-> O que poderia ser alterado no obterdados.php?
-> Devido ao grande volume de dados que seria visualizado, como ficaria a construção do editar.html?
[34] Comentário enviado por eduardosantiago em 24/07/2009 - 04:11h
Fala Rapa!!!
Cara, eu nâo sei nada de php mas como tenho q criar um página pra realizar testes de carga tô seguindo teu artigo. O meu nâo funcionou ainda. Ele nâo consegue adicionar. Tanto que na hora só aparece Principal e não diz se foi cadastrado com sucesso!!! O Que eu fiz de errado?
A unica coisa q eu fiz diferente foi criar o banco, tabela, inserir usuários.... tudo diretamente no phpadmin. Estou no aguardo!!!