
















Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Apostilas de Informática sobre PHP e PostgreSQL, Enviando os dados para o servidor web, Formulários HTML, Sintaxe básica, Tipos, Estruturas de controle, Funções, Variáveis e Constantes.
Tipologia: Notas de estudo
1 / 24
Esta página não é visível na pré-visualização
Não perca as partes importantes!

















Existem duas maneiras de se passar valores por referência: pode-se indicar na declaração da função, ou na chamada da mesma. Quando se indica a passagem por referência na declaração da função, tal passagem de argumentos sempre será por referência. Em ambos os casos se utiliza o caracter & para indicar que a passagem será por referência.
function incrementa(&$num1, $num2) { $num1++; $num2++; } $a = $b = 5; incrementa($a, $b); /* neste caso $a vale 6 e $b continua a valer 5 no término da execução da
incrementa($a, &$b); /* aqui, as dus variáveis terão seus valores alterados */
Argumentos com valores pré-denidos (default)
Em PHP é possível ter valores default para argumentos de funções, ou seja, valores que serão assumidos em caso de nada ser passado no lugar do argumento. Quando um parâmetro é declarado desta maneira, a passagem do mesmo na chamada da função torna-se opcional. Por exemplo:
function imprime($texto = III Sinec'') { echo$texto''; } imprime(); // imprime III Sinec'' imprime(123 testando''); // imprime ``123 testando''
Contexto
O contexto é o conjunto de variáveis e seus respectivos valores num determinado ponto do programa. Na chamada de uma função, ao iniciar a execução do bloco que contém a implementação da mesma é criado um novo contexto, contendo as variáveis declaradas dentro do bloco, ou seja, todas as variáveis utilizadas dentro daquele bloco serão eliminadas ao término da execução da função.
Escopo
O escopo de uma variável em PHP dene a porção do programa onde ela pode ser utilizada. Na maioria dos casos todas as variáveis têm escopo global. Entretanto, em funções denidas pelo usuário um escopo local é criado. Uma variável de escopo global não pode ser utilizada no interior de uma função sem que haja uma declaração. Por exemplo:
$texto = ``III Sinec'';
function imprime() {
echo ``$texto''; } imprime();
A chamada a função imprime() não produzirá nada na saída, pois a variável $texto é de escopo global, e não pode ser referida num escopo local, mesmo que não haja outra com nome igual que cubra a sua visibilidade. Para alcançar o objetivo do script acima, a variável global deve ser declarada. Por exemplo:
$texto = ``III Sinec'';
function imprime() { global $texto; echo ``$texto''; } imprime();
Uma outra maneira de acessar variáveis de escopo global dentro de uma função é utilizando um array pré-denido pelo PHP cujo nome é $GLOBALS. O índice para a variável referida é o próprio nome da variável, sem o caracter $. O exemplo abaixo produz um resultado semelhante ao anterior.
$texto = ``III Sinec'';
function imprime() { echo ``$GLOBALS[texto]''; } imprime();
Uma das maneiras do navegador enviar dados para o interpretador PHP é através da URL. Por exem- plo: se o script está localizado em http://localhost/teste.php pode-se chamá-lo com a url `http://localhost/teste.ph Neste caso o PHP criará automaticamente uma variável com o nome $texto contendo a string IIISinec. Este formato é conhecido como urlencode. Os formulários HTML já enviam informações automatica- mente nesse formato, e o PHP trata esses dados como variáveis comuns, sem precisar de um tratamento especial por parte do programador. O formato urlencode é obtido substituindo os espaços pelo caracter + e todos os outros caracteres não alfa-numéricos (com exeção de _) pelo caracter % seguido do código ASCII em hexadecimal.
Cada elemento de um formulário HTML submetido a um script cria no ambiente do mesmo uma variável cujo nome é o mesmo nome do elemento. Por exemplo
O código acima fará com que seja criada uma variável com o nome $email no script ao qual esse código foi submetido. Uma boa técnica de programação é utilizar a notação de arrays para itens de um formulário HTML. Para um conjunto de checkboxes, por exemplo, pode-se utilizar a seguinte notação:
Opção 1 Opção 2 Opção 3
Ao submeter o formulário, o script que recebe os valores criará uma variável chama $teste contendo os valores num array, com índices a partir do zero.
O PHP possui diversas variáveis de ambiente, como a $PHP_SELF, por exemplo, que contém o nome e o path do próprio arquivo. Algumas outras contém informações sobre o navegador do usuário, o servidor http, a versão do PHP e diversas outras informações. Para ver a listagem completa dessas variáveis e seus respectivos conteúdos, deve-se utilizar a função phpinfo().
Existem duas funções que podem ser usadas para saber se a variável está setada. São elas a função isset e a função empty. A função isset possui o seguinte protótipo:
int isset(mixed var);
Ela retorna true se a variável estiver setada (mesmo com uma string vazia ou o valor zero), e false caso contrário. A função empty possui o seguinte protótipo:
int empty(mixed var);
Ela retorna true se a variável não contiver um valor ou possuir valor zero ou uma string vazia. Caso contrário, retorna false.
Assim como as variáveis de ambiente, o PHP possui algumas constantes pré-denidas, contendo a versão do PHP, o sistema operacional do servidor, etc. Para uma listagem completa dessas constantes pode-se usar a função phpinfo().
A função define é usada para denir o valor de uma constante, que uma vez setada, não poderá mais ser alterado. Uma constante pode apenas conter um valor escalar, não podendo guardar arrays ou objetos. A assinatura da função define é a seguinte:
int define(string nome_da_constante, mixed valor);
A função retorna true se for bem sucedida. Por exemplo:
define (``pi'', 3.1415926536); $circunf = 2pi$raio;
$HTTP_COOKIE_VARS[teste];
ou
$teste;
Tudo começou com o desenvolvimento do Ingres, ancestral do PostgreSQL, na Universidade da Cali- fórnia de Berkeley, entre os anos de 1977 a 1985. Após isso, o código do Ingres foi aumentado pela Ingres Corporation, o qual produziu um dos principais servidores de banco de dados relacionais que tiveram sucesso comercialmente. Também em Berkeley, Michael Stonebraker liderou uma equipe que desenvolveu um servidor de banco de dados relacional chamado Postgres, entre os anos de 1986 a 1994. A Illustra( comprada depois pela Informix ) herdou o código Postgres e desenvolveu-o em um produto comercial. Dois estudantes de graduação, Jolly Chen e Andrew Yu, adicionaram mais outras características, de forma que interpretasse SQL no Postgres. O projeto resultante foi chamado Postgres95, desenvolvido no período de 1994 a 1995. Após a saída dos desenvolvedores de Berkeley, o projeto continuou com a inclusão de novos desenvolvedores até o lançamento de uma nova versão, no nal de 1996 com o nome de PostgreSQL.
Uma stored procedure é, em suma, um programa com comandos SQL, que é armazenado em um banco de dados PostgreSQL. A stored procedure é composta por comandos SQL, variáveis e comandos de uxo lógico.
São blocos de comandos em SQL que são automaticamente executados quando um comando INSERT, DELETE ou UPDATE é executado em uma tabela. A principal aplicação de um trigger é a criação de consistências e restrições de acesso ao banco de dados, como por exemplo, rotinas de segurança. Em vez de deixar o controle da aplicação para a própria tabela, por meio de triggers o banco passa a executar esses controles, tornando muito mais seguro o manuseio do banco de dados.
PostgreSQL usa um modelo de cliente/servidor de comunicação. Um servidor PostgreSQL sempre ca rodando, esperando conexões. O servidor processa a requisição e retorna a saída ao cliente.
PostgreSQL possui várias interfaces de comunicação com o servidor. A que será usada no curso será o PSQL, por ser a mais utilizada e por ter a maior documentação.
Para iniciar uma sessão PSQL, devemos digitar PSQL no prompt de comando. Ao iniciar um menu em modo texto aparecerá, indicando alguns comandos básicos.
data(06/11/2001), 'A morte da bezerra', '', '', data(07/11/2001));
Para usar strings, é necessário usar aspas simples. Aspas duplas não funcionam. Espaçamento e capitalização são opcionais, exceto dentro de aspas simples, onde o texto é considerado literalmente. Para colunas numéricas, não é necessário o uso de aspas simples.
Para reaver dados no banco de dados, o comando utilizado é o SELECT. O comando a seguir mostra todos os campos e todos os registro da tabela noticia.
SELECT * FROM noticia;
O comando SELECT seleciona registro do banco de dados. O asterisco é usado para indicar que na consulta é pedido todas as colunas da tabela. O FROM noticia, indica que a tabela que queremos consultar é a tabela noticia.
O SELECT tem um grande número de variações. Por exemplo, se quisésemos apenas o campo cha- mada da tabela noticia, o comando utilizado seria o seguinte SELECT chamada FROM noticia; , onde o asterisco foi substiuído apenas pelo campo requerido. Se mais de um for necessário, deve-se usar vírgulas para separar os mesmos.
Na seção 16.3 na página 32, ao utilizarmos o comando SELECT, temos todos os registros como resposta. Mas, de fato, dependendo da situação, existem casos em que queremos apenas um registro ou um conjunto de registros que sejam retornados e não todos os registros da tabela. Nesse caso, devemos usar a cláusula WHERE. Ela deve vir logo após ao nome da tabela, e após o WHERE deve-se colocar um ltro de pesquisa.
SELECT * FROM noticia WHERE id>65;
O comando produz uma saída onde todos os registros possuem um id maior que 65.
Depois de aprender como incluir dados no banco, é necessário saber como se deleta a informação. A remoção é bem simples, como todos os outros comandos já mostrados. O comando DELETE pode rapidamente apagar um, mais de um ou todos os registros. Vale lembrar que o comando DELETE é usado para apagar registro e não tabelas. Abaixo teremos alguns exemplos.
DELETE FROM noticia WHERE id=32;
Esse comando deleta o registro da tabela notícia que contenha em seu id o número 32;
DELETE FROM noticia;
Esse comando apaga todos os registros da tabela noticia.
Para modicar dados, o comando utilizado é UPDATE. Ele segue um formato semelhante a outros comandos utilizados em SQL. Como acima daremos dois exemplos um pouco distintos.
UPDATE noticia set chamada='O diário de Fabita' WHERE id=24;
Esse comando atualiza o campo chamada para 'O diário de Fabita' onde o id do registro for igual a
UPDATE noticia set link='/sinec/index.html'
Já essa instrução, atualiza o link de todos os registros para '/sinec/index.html'. Deve-se tomar cuidado com esse comando para, por um descuído de esquecer de colocar a cláusula WHERE, atualizar todos os registros quando se queria atualizar apenas parte deles.
Em uma consulta SQL, registros são dipostos de uma forma indeterminada. Para garantir que os registros serão retornados de uma consulta SELECT em uma ordem especíca, é necessário que se use a cláusula ORDER BY no nal do comando SELECT.
Se quiser, pode-se usar após o ORDER BY condição, o argumento DESC que inverte a ordem de co- mo foi disposta a saída.
SELECT id,noticia,chamada FROM noticia WHERE id>2 ORDER BY noticia;
Esse comando seleciona os campos id, noticia e chamada, para os registros que tiverem o id maior que 2 ordernando pelo campo noticia. Como o campo noticia é string, a ordenação é feita por ordem alfabética.
SELECT * FROM noticia where foto like 'j%' ORDER BY chamada DESC;
Esse comando seleciona todos os campos da tabela noticia, reavendo apenas os registros que tenham foto comecando com j, ordenando a saída pelo campo chamada por ordem alfabética inversa.
Para completar esta parte de noções de SQL, devemos mostrar como apagar tabelas em si, não só os registros localizados nela. Esta tarefa é realizada com o comando DROP TABLE. Por exemplo o comando DROP TABLE noticia apagaria toda a tabela noticia. Convém dizer que toda a estrutura e os dados existentes na tabela serão apagados.
17.1.2 Tipo Monetário
Além dos tipos padrões suportados pelo SQL: caracter e caracter varying. Postgres também reconhece o tipo text.
Nome do Tipo Armazenamento Compatibilidade Descrição character(n),char(n) (4+n) bytes SQL Tamanho xo character varying(n),varchar(n) (4+n) bytes SQL Tamanho variável com limite text (4+n) bytes Mais exível tamanho variável e ilimitado Tabela 10: Tipos Caracter
Postgres suporta todos os seguintes tipos de datas e horas do SQL.
Tipo Armazenamento Início Fim Resolução timestamp 8 bytes 4713 AC 1465001 DC 1 microsegundo/ 14 dígitos timestamp com fuso horário 8 bytes 1903 DC 2037 DC 1 microsegundo/ 14 dígitos interval 12 bytes -178000000 anos 178000000 anos 1 microsegundo date 4 bytes 4713 DC 32767 DC 1 dia time 4 bytes 00:00:00.00 23:59:59.99 1 microsegundo time with time zone 4 bytes 00:00:00.00+12 23:59:59.99-12 1 microsegundo Tabela 11: Tipos de Data/hora
Em versões anteriores eram usadas os tipos datetime e timespan, que são euivalentes à timestamp e interval, respectivamente. Atualmentesses tipos não são mais usados.
17.3.1 Entrada de Data/hora
As maiorias das entradas de data/hora conhecidos são aceitos no Postgres. O comando SET DateStyle to 'US' ou SET DateStyle to 'NonEuropean' especica o estilo da data como mês dia ano e o comando SET DateStyle to 'European' especica o estilo da data para dia mês ano. Nota:A entrada de data e/ou hora precisa ser feita com estas entre aspas simples. como o seguinte:
type 'value'
17.3.2 Hora sem Fuso Horário
Esse tipo pode ser chamado como time ou time without timezone. A tabela 17.3.2 mostra as entradas válidas para o time.
17.3.3 Hora com Fuso Horário
Este tipo foi denido pelo SQL92, mas sua denição contem algumas deciências que diculta o uso deste tipo como padrão. Na tabela 16 é mostrada todas as entradas válidas. Note que este tipo aceita todos as entradas do tipo time com o acréscimo de um fuso horário válido.
17.3.4 interval
O tipo interval pode ser especicado usando a seguinte syntax.
Exemplo Descrição 1/8/2001 Estilo americano; 1 de agosto 8/1/2001 Estilo europeu; 1 de agosto Tabela 12: Entrada de datas
Mês Abreviação Abril Apr Agosto Aug Dezembro Dec Fevereiro Feb Janeiro Jan Julho Jul Junho Jun Março Mar Novembro Nov Outubro Oct Setembro Sep, Sept Tabela 13: Abreviação dos meses
Dia Abreviação Domingo Sun Segunda Mon Terça Tue, Tues Quarta Wed, Weds Quinta Thu, Thur, Thurs Sexta Fri Sábado Sat Tabela 14: Abreviação dos dias da semana
Exemplo Descrição 04:05:06.789 ISO- 04:05:06 ISO- 04:05 ISO- 040506 ISO- 04:05 AM O mesmo que 04: 04:05 PM O mesmo que 16:05; entrada de horas devem ser menores que 12 z o mesmo que 00:00: zulu o mesmo que 00:00: allballs o mesmo que 00:00: Tabela 15: Entrada de horas sem fuso horário
O Postgres oferece suporte para o tipo boolean. O tipo boolean pode assumir um dos dois valores válidos: true (verdadeiro) ou false (falso). Valores válidos para o estado verdadeiro:
E para o estado falso:
Nesta seção, mostraremos alguns recursos adicionais existente na linguagem SQL, e além disso, algumas características existentes apenas no PostgreSQL.
Quando temos que utilizar aspas dentro de um texto, como por exemplo, na inserção de um campo do tipo char, onde o dado é 'Leca's', a inserção não funcionaria. A presença de uma aspa simples dentro de uma string cercada por aspas simples, geraria um parser error. O método correto para incluir esse tipo de dado seria o uso de duas aspas simples juntas como em 'Lecas''s'. Outro método possível seria o uso da contrabarra para incluir esse dado 'Leca's'. O uso da contrabarra ignora o sentido da aspa simples.
Suponha que se queira incluir uma notícia mas que ela não contenha um link. A pergunta que ca é qual o valor assinalado ao campo link? A reposta é que o campo link possui um valor nulo. NULL é um valor especial que é valido em qualquer coluna. Usa-se quando uma entrada válida para um campo não é conhecida ou não é aplicável.
Os testes IS NULL e IS NOT NULL foram desenvolvidos especicamente para testar a existência de va- lores NULL. Abaixo, colocaremos um exemplo que ilustra bem a confusão que pode existir com o uso de valores NULL.
INSERT INTO noticia (noticia,datains,chamada,link,foto,datapub) values ( 'Felipe viajou para o Marrocos e acabou comprando um Dromedário', '08/11/2001', 'O dromedário de Felipe', NULL, NULL, '10/11/2001' );
Neste exemplo, tanto o campo LINK como o campo FOTO possuem um valor nulo. Podia-se pensar que fazendo uma consulta do tipo:
SELECT * FROM noticia WHERE link=noticia;
teríamos como resposta a inclusão feita no exemplo anterior. O fato é que o retorno de query é igual a zero registros. O campo que contém NULL, signica desconhecido, desse modo não temos como saber se dois valores NULL são iguais. PostgreSQL não adivinha ou imprime o resultado. Convém dizer que e NULL são diferentes.