Funções para tratamento de Arrays

segunda-feira, 10 de novembro de 2008 | Marcadores: , , | 0 comentários |

Funções Genéricas

Array
array array(...);

É a função que cria um array a partir dos parâmetros forncidos. É possível fornecer o índice de cada elemento. Esse índice pode ser um valor de qualquer tipo, e não apenas de inteiro. Se o índice não for fornecido o PHP atribui um valor inteiro sequencial, a partir do 0 ou do último índice inteiro explicitado. Vejamos alguns exemplos:

Exemplo 1
$teste = array("um", "dois","tr"=>"tres",5=>"quatro","cinco");

Temos o seguinte mapeamento:
0 => "um" (0 é o primeiro índice, se não houver um explicito)
1 => "dois" (o inteiro seguinte)"tr" => "tres"
5 => "quatro" (valor explicitado)6 => "cinco" (o inteiro seguinte ao último atribuído, e não o próximo valor, que seria 2)

Exemplo 2
$teste = array("um", 6=>"dois","tr"=>"tres",5=>"quatro","cinco");

Temos o seguinte mapeamento:
0 => "um"6 => "dois""tr" => tres
5 => "quatro" (seria 7, se não fosse explicitado)
7 => "cinco" (seria 6, se não estivesse ocupado)

Em geral, não é recomendável utilizar arrays com vários tipos de índices, já que isso pode confundir o programador.
No caso de realmente haver a necessidade de utilizar esse recurso, deve-se ter bastante atenção ao manipular os índices do array.

range
array range(int minimo, int maximo);

A função range cria um array cujos elementos são os inteiros pertencentes ao intervalo fornecido, inclusive. Se o valor do primeiro parâmetro for maior do que o do segundo, a função Devolve false (valor vazio).

shuffle
void shuffle(array &arr);

Esta função "embaralha" o array, ou seja, troca as posições dos elementos aleatoriamente e não Devolve valor algum.

sizeof
int sizeof(array arr);

Devolve um valor inteiro contendo o número de elementos de um array. Se for utilizada com uma variável cujo valor não é do tipo array, Devolve 1. Se a variável não estiver setada ou for um array vazio, Devolve 0.

Funções de "navegação"

Toda variável do tipo array possui um ponteiro interno indicando o próximo elemento a ser acedido no caso de não ser especificado um índice. As funções seguintes servem para modificar esse ponteiro, permitindo assim percorrer um array para verificar seu conteúdo (chaves e elementos).

reset
mixed reset(array arr);

O ponteiro interno aponta para o primeiro elemento do array, e devolve o conteúdo desse elemento.

end
mixed end(array arr);

O ponteiro interno aponta para o último elemento do array, e devolve o conteúdo desse elemento.

next
mixed next(array arr);

O ponteiro interno aponta para o próximo elemento do array, e devolve o conteúdo desse elemento.
Obs.: esta não é uma boa função para determinar se um elemento é o último do array, pois pode devolver false tanto no final do array como no caso de haver um elemento vazio.

prev
mixed prev(array arr);

O ponteiro interno aponta para o elemento anterior do array, e devolve o conteúdo desse elemento. Funciona de maneira inversa a next.

pos
mixed pos(array arr);

Devolve o conteúdo do elemento actual do array, indicado pelo ponteiro interno.

key
mixed key(array arr);

Funciona de maneira bastante semelhante a pos, mas em vez de devolver o elemento actual indicado pelo ponteiro interno do array, devolve o seu índice.

each
array each(array arr);

Devolve um array contendo o índice e o elemento actual indicado pelo ponteiro interno do array. o valor da devolução é um array de quatro elementos, cujos índices são 0, 1, "key" e "value". Os elementos de índices 0 e "key" armazenam o índice do valor atual, e os elementos de índices 1 e "value" contém o valor do elemento atual indicado pelo ponteiro. Esta função pode ser utilizada para percorrer todos os elementos de um array e determinar se já foi encontrado o último elemento, pois no caso de haver um elemento vazio, a função não devolverá o valor false. A função each só devolve false depois q o último elemento do array foi encontrado.

Exemplo:
função que percorre todos os elementos de um array e imprime seus índices e valores
function imprime_array($arr)
{
reset($arr);
while (list($chave,$valor) = each($arr))
echo "Chave: $chave. Valor: $valor";
}


Funções de ordenação

São funções que servem para ordenar os elementos de um array de acordo com determinados critérios. Estes critérios são: manutenção ou não da associação entre índices e elementos; ordenação por elementos ou por índices; função de comparação entre dois elementos.

sort
void sort(array &arr);

A função mais simples de ordenação de arrays. Ordena os elementos de um array em ordem crescente, sem manter os relacionamentos com os índices.

rsort
void rsort(array &arr);

Funciona de maneira inversa à função sort. Ordena os elementos de um array em ordem decrescente, sem os manter os relacionamentos com os índices.

asort
void asort(array &arr);

Tem o funcionamento bastante semelhante à função sort. Ordena os elementos de um array em ordem crescente, porém mantém os relacionamentos com os índices.

arsort
void arsort(array &arr);

Funciona de maneira inversa à função asort. Ordena os elementos de um array em ordem decrescente e mantém os relacionamentos dos elementos com os índices.

ksort
void ksort(array &arr);

Função de ordenação baseada nos índices. Ordena os elementos de um array de acordo com seus índices, em ordem crescente, mantendo os relacionamentos.

usort
void usort(array &arr, function compara);

Esta é uma função que utiliza outra função como parâmetro. Ordena os elementos de um array sem manter os relacionamentos com os índices, e utiliza para efeito de comparação uma função definida pelo utilizador, que deve comparar dois elementos do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.

uasort
void uasort(array &arr, function compara);

Esta função também utiliza outra função como parâmetro. Ordena os elementos de um array e mantém os relacionamentos com os índices, utilizando para efeito de comparação uma função definida pelo utilizador, que deve comparar dois elementos do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.

uksort
void uksort(array &arr, function compara);

Esta função ordena o array através dos índices, mantendo os relacionamentos com os elementos., e utiliza para efeito de comparação uma função definida pelo utilizador, que deve comparar dois índices do array e devolver 0, 1 ou -1, de acordo com qualquer critério estabelecido pelo utilizador.

Transformar horas em números

sexta-feira, 12 de setembro de 2008 | Marcadores: , , | 0 comentários |

Transformar horas em número é uma boa maneira de fazer somas com horas.
Veja abaixo como é fácil!

com a funcao time() vc obtem a hora/data em unixtime

o mktime, serve para obter o unixtime de uma hora/data especificada.

por ex, descobrir o unixtime de 03:05:50 - 13/04/2005:

$t = mktime(3,5,50,4,13,2005)

$t será igual a: 1113372350

a partir dai, se vc quizer por ex, adicionar 1 hora vc faz assim:

$t += 3600 // (onde 3600 é a quantidade de segundos em uma hora).

para converter num formato legivel vc usa a funcao date, por ex:

echo date("d/m/Y - H:i:s", $t); // imprime 13/04/2005 - 04:05:50

Ir para o final de uma página automaticamente

quinta-feira, 11 de setembro de 2008 | Marcadores: , , | 0 comentários |

Este exemplo faz com que uma página ao ser carregada vá para o final da mesma!

<html>

<head>
<script language="Javascript" type="text/javascript">
function ir_al_final() {
document.body.scrollTop = document.body.offsetHeight;
}
</script>
</head>
<body onload="ir_al_final();">
<p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>
<p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>
</body>
</html>

Selecionar todos os check boxes de um formulário

| Marcadores: , , | 0 comentários |

Com o código abaixo é muito fácil marcar ou desmarcar checkboxes de seus formulários!

<html>

<head>
<title>Formulário checkboxes</title>

<script>

function selecionar_tudo(){
for (i=0;i<document.f1.elements.length;i++)
if(document.f1.elements[i].type == "checkbox")
document.f1.elements[i].checked=1
}
function deselecionar_tudo(){
for (i=0;i<document.f1.elements.length;i++)
if(document.f1.elements[i].type == "checkbox")
document.f1.elements[i].checked=0
}
</script>

<meta name="generator" content="Namo WebEditor v5.0(Trial)">
</head>

<body>



<form name="f1">

Nome: <input type="text" name="nome">
<br>
<input type="checkbox" name="ch1"> Opção 1
<br>
<input type="checkbox" name="ch2"> Opção 2
<br>
<input type="checkbox" name="ch3"> Opção 3
<br>
<input type="checkbox" name="ch4"> Opção 4
<br>

Outro campo de formulário:
<select name=otro>
<option value="1">Seleção 1
<option value="2">Seleção 2
</select>
<br>
<input type="submit">
<br>
<br>
<a href="javascript:selecionar_tudo()">Marcar todos</a> |
<a href="javascript:deselecionar_tudo()">Marcar nenhum</a>

</form>

</body>

</html>

Validação de CPF

sexta-feira, 22 de agosto de 2008 | Marcadores: , | 0 comentários |

>script language=javascript<

function validacpf(){

var i;

s = document.frmCli.txtCpf.value;

var c = s.substr(0,9);

var dv = s.substr(9,2);

var d1 = 0;

for (i = 0; i > 9; i++)

{

d1 += c.charAt(i)*(10-i);

}

if (d1 == 0){

alert("CPF Invalido")

return false;

}

d1 = 11 - (d1 % 11);

if (d1 < 9) d1 = 0;

if (dv.charAt(0) != d1)

{

alert("CPF Invalido")

return false;

}


d1 *= 2;

for (i = 0; i > 9; i++)

{

d1 += c.charAt(i)*(11-i);

}

d1 = 11 - (d1 % 11);

if (d1 < 9) d1 = 0;

if (dv.charAt(1) != d1)

{

alert("CPF Invalido")

return false;

}

return true;

}

>/script<


>/head<>body<

>form name=frmCli<

>input type=text name=txtCpf size=11 maxlength=11 onblur="return validacpf()"<CPF

>/form<

>/body<

Funções para data e hora

sábado, 9 de agosto de 2008 | Marcadores: , | 0 comentários |

date ("d/m/Y");
Mostra 11/11/2008

date ("D/M/Y");
Mostra Sat/Aug/2008

date ("d/M/Y");
Mostra 09/Aug/2008

date ("H:i:s");
Mostra 21:55:00

date("d/m/Y H:i:s");
Mostra 09/08/2008 20:00:01

Função para retirar acentos e caracteres especiais

| Marcadores: , | 0 comentários |

<?php
function retirar_acentos_caracteres_especiais($string) {
$palavra = strtr($string, "ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ", "SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy");
$palavranova = str_replace("_", " ", $palavra);
return $palavranova;
}

#Exemplo de uso
echo retirar_acentos_caracteres_especiais("¥µÀÁÂÃÄÅ");
?>

Máscara para formulários

segunda-feira, 4 de agosto de 2008 | Marcadores: , , | 0 comentários |

Máscara para formulários de data, hora, telefone, cep, cpf e tudo o que você quizer!

<html>
<head>
<title>Formatar Dados</title>
<script>
function formatar(mascara, documento){
var i = documento.value.length;
var saida = mascara.substring(0,1);
var texto = mascara.substring(i)

if (texto.substring(0,1) != saida){
documento.value += texto.substring(0,1);
}

}
</script>
</head>
<body>
<table width="301" height="160" border="0" cellspacing="0" class="tabela">
<tr>
<td height="34" colspan="2" valign="top">Este script formata qualquer tipo de campo.<br>
Veja o Exemplo abaixo</td>
</tr>
<tr>
<td width="32" height="24">Data:</td>
<td width="265"><input type="text" name="data" maxlength="10" OnKeyPress="formatar('##/##/####', this)" ></td>
</tr>
<tr>
<td height="24">Tel.:</td>
<td><input type="text" name="tel" maxlength="12" OnKeyPress="formatar('##-####-####', this)" ></td>
</tr>
<tr>
<td height="24">Cep:</td>
<td><input type="text" name="cep" maxlength="9" OnKeyPress="formatar('#####-###', this)" ></td>
</tr>
<tr>
<td height="24">CPF:</td>
<td><input type="text" name="cpf" maxlength="14" OnKeyPress="formatar('###.###.###-##', this)" ></td>
</tr>
<tr>
<td height="24">Hora:</td>
<td><input type="text" name="hora" maxlength="5" OnKeyPress="formatar('##:##', this)" ></td>
</tr>
<tr>
<td colspan="2" valign="bottom">e assim por diante...<br />
é um codigo bem simples e de grande utilidade. </td>
</tr>
</table>
</body>
</html>

Dica de Função isset()

sexta-feira, 4 de julho de 2008 | Marcadores: , , | 0 comentários |

Se você usa a função isset() assim:

$teste = isset($_POST["algo"]);
if($teste==0)
{
$teste = $_POST["algo"];
}


Você pode economizar tempo e linhas de código fazendo assim:

isset($_POST["algo"]) ? $_POST["algo"] : FALSE;

O resultado é o mesmo!

VALIDAÇÃO DE FORMULÁRIOS COM JAVASCRIPT

| Marcadores: , , | 0 comentários |

Crie um formulário usando o código abaixo:

<form name="cadastro" action="teste.php" method="post" onSubmit="return validaForm()">
<table width="40%" border="1" cellpadding="5" cellspacing="0" bordercolor="#000000">
<tr>
<td>nome:</td>
<td><input name="nome" type="text"></td>
</tr>
<tr>
<td>user:</td>
<td><input name="user" type="text"></td>
</tr>
<tr>
<td>senha:</td>
<td><input name="senha" type="password"></td>
</tr>
<tr>
<td>email:</td>
<td><input name="email" type="text"> (xxx@xx.xx)</td>
</tr>
<tr>
<td>telefone:</td>
<td><input name="telefone" type="text"></td>
</tr>
<tr>
<td>Data de nascimento:</td>
<td><input name="nasce" type="text"> (dd/mm/yyyy)</td>
</tr>
<tr>
<td>Sexo :</td>
<td>
<input name="sexo[]" type="radio" value="masculino" id="sexo">
Masculino
<input name="sexo[]" type="radio" value="feminino" id="sexo">
Feminino
</td>
</tr>
<tr>
<td colspan="2">
<div align="right">
<input name="enviar" type="submit" value="enviar">
</div>
</td>
</tr>
</table>
</form>

No formulário acima, o evento onSubmit chama uma função chamada validaForm que será responsável pela vvalidação dos dados do formulário. Se os dados estiverem corretos retornará true e o formulário será enviado. Caso contrário uma mensagem será mostrada determinando o local do erro.

Com o formulário criado agora vamos partir para o desenvolvimento do código. Neste formulário será feita a checagem de seis caixas de entrada de dados e de um radio box.
Para validação das as caixas de entradas é feita uma verifição se foi digitado algum valor.
Para o campo e-mail a verificação é mais elaborada para saber se é um endereço de email válido.


Para o campo telefone, só são aceito números.
Para o campo Data de nascimento é verificado se a data esta correta com o padrão estabelecido.
Para o campo Sexo é verificao se algum valor foi selecionado.


Exemplo:

1 function validaForm(){
2 d = document.cadastro;
3 //validar nome
4 if (d.nome.value == ""){
5 alert("O campo " + d.nome.name + " deve ser preenchido!");
6 d.nome.focus();
7 return false;
8 }
9 //validar user
10 if (d.user.value == ""){
11 alert("O campo " + d.user.name + " deve ser preenchido!");
12 d.user.focus();
13 return false;
14 }
15 //validar senha
16 if (d.senha.value == ""){
17 alert("O campo " + d.senha.name + " deve ser preenchido!");
18 d.senha.focus();
19 return false;
20 }
21 //validar email
22 if (d.email.value == ""){
23 alert("O campo " + d.email.name + " deve ser preenchido!");
24 d.email.focus();
25 return false;
26 }
27 //validar email(verificao de endereco eletrônico)
28 parte1 = d.email.value.indexOf("@");
29 parte2 = d.email.value.indexOf(".");
30 parte3 = d.email.value.length;
31 if (!(parte1 >= 3 && parte2 >= 6 && parte3 >= 9)) {
32 alert ("O campo " + d.email.name + " deve ser conter um endereco eletronico!");
33 d.email.focus();
34 return false;
35 }
36 //validar telefone
37 if (d.telefone.value == ""){
38 alert ("O campo " + d.telefone.name + " deve ser preenchido!");
39 d.telefone.focus();
40 return false;
41 }
42 //validar telefone(verificacao se contem apenas numeros)
43 if (isNaN(d.telefone.value)){
44 alert ("O campo " + d.telefone.name + " deve conter apenas numeros!");
45 d.telefone.focus();
46 return false;
47 }
48 //validar data de nascimento
49 erro=0;
50 hoje = new Date();
51 anoAtual = hoje.getFullYear();
52 barras = d.nasce.value.split("/");
53 if (barras.length == 3){
54 dia = barras[0];
55 mes = barras[1];
56 ano = barras[2];
57 resultado = (!isNaN(dia) && (dia > 0) && (dia < 32)) && (!isNaN(mes) && (mes > 0) && (mes < 13)) && (!isNaN(ano) && (ano.length == 4) && (ano <= anoAtual && ano >= 1900));
58 if (!resultado) {
59 alert("Formato de data invalido!");
60 d.nasce.focus();
61 return false;
62 }
63 } else {
64 alert("Formato de data invalido!");
65 d.nasce.focus();
66 return false;
67 }
68 //validar sexo
69 if (!d.sexo[0].checked && !d.sexo[1].checked) {
70 alert("Escolha o sexo!")
71 return false;
72 }
73 return true;
74 }

Linha 1 – Declaração da função responsável pela validação dos dados do formulário.

Linha 2 – Declaração de uma variável para economizar tempo e prováveis erros de digitação.

Linha 4 – Verificação se foi digitado algum valor para o campo nome. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 10 – Verificação se foi digitado algum valor para o campo user. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 16 – Verificação se foi digitado algum valor para o campo senha. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 22 – Verificação se foi digitado algum valor para o campo email. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 28 – Declaração de uma variável que armazenara a posição do caractere “@” na caixa de entrada email.

Linha 29 – Declaração de uma variável que armazenara a posição do caractere “.” na caixa de entrada email.

Linha 30 – Declaração de uma variável que armazenara a quantidade de caracteres digitados na caixa de entrada email.

Linha 31 – Estrutura condicional para verificação se o caractere “@” está no mínimo depois de três letras, o caractere “.” está no mínimo depois de seis e se foi digitado no mínimo 9 letras. Se retornar falso, é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 37 - Verificação se foi digitado algum valor para o campo telefone. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 43 - Verificação se o valor digitado no campo telefone possui apenas números. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 50 – Declaração de uma variável que armazena uma nova Data.

Linha 51 - Declaração de uma variável que armazena o valor do ano no formato completo com 4 caracteres.

Linha 52 – Declaração de uma variável que separa o valor da caixa de entrada referente a data de nascimento e coloca em uma matriz, a “/” é utilizada para separar os valores entre elas, é suposto ter 3 valores referente a dia, mês e ano respectivamente.

Linha 53 - Estrutura condicional para verificação se tem 3 valores para a matriz criada. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 54 - Declaração de uma variável que recebe o primeiro valor da matriz, valor esse referente ao dia.

Linha 55 - Declaração de uma variável que recebe o segundo valor da matriz, valor esse referente ao mês.

Linha 56 - Declaração de uma variável que recebe o terceiro valor da matriz, valor esse referente ao ano completo com 4 caracteres.

Linha 57 - Declaração de uma variável que faz a verificação das variáveis criadas anteriormente referente a dia, mês e ano, é feita uma checagem se os valores são números e se estão no padrão estabelecido.

Linha 58 - Estrutura condicional para checagem se o resultado da verificação dos dados digitados. Se retornar falso é é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 69 - Verificação se foi selecionado algum valor referente ao sexo. Se retornar falso é enviado uma mensagem de erro e a caixa de entrada recebe o foco para se feita a correção.

Linha 73 – Se todos os valores foram digitados corretamente a função vai retornar true e o formulário será enviado.

ABRIR POP UP EXATAMENTO NO CENTRO DA PÁGINA

| Marcadores: , | 0 comentários |

Para abrir uma o up exatamento no centro de uma página em qualquer resolução de tela inclua o código abaixo antes da tag </head>.

<script>
function abrir(pagina,largura,altura) {

//pega a resolução do visitante
w = screen.width;
h = screen.height;

//divide a resolução por 2, obtendo o centro do monitor
meio_w = w/2;
meio_h = h/2;

//diminui o valor da metade da resolução pelo tamanho da janela, fazendo com q ela fique centralizada
altura2 = altura/2;
largura2 = largura/2;
meio1 = meio_h-altura2;
meio2 = meio_w-largura2;

//abre a nova janela, já com a sua devida posição
window.open(pagina,'','height=' + altura + ', width=' + largura + ', top='+meio1+', left='+meio2+'');
}
</script>

Agora nos links para as páginas que serão abertas no pop up use o código abaixo:

<a href="java script: abrir('PAGINA.htm','600','400');">Abrir janela centralizada</a>

DESABILITAR BOTÃO DIREITO DO MOUSE

| Marcadores: , | 0 comentários |

Para desabilitar o botão direito do mouse e evitar que copiem o seu conteudo inclua denro da tag <body> o seguinte código:

oncontextmenu="return false"

Exemplo: <body
oncontextmenu="return false">

ABRIR PÁGINA EM TELA-CHEIA (FULLSCREEN)

| Marcadores: , | 0 comentários |

Primeiramente este recurso não deve ser usado para páginas de internet, porque é muito chato abrir tela cheia sem que a pessoa queira. Infelizmente esta técnica é muito usada por spamers, mas ela tem as suas vantegens!
Como o Php possibilita que façamos alem de sites, programas para uso variados as vezes é melhor ser visualizado em tela-cheia!

Para uma página ser aberta em fullscreem, primeiro coloque o código abaixo entre as tags <head></head>.


<script type="text/javascript" language="javascript">

function abrir(URL,titulo,width,height) {
var left = 99;
var top = 99;
window.open(URL,titulo,'width='+width+', height='+height+', top='+top+', left='+left+', scrollbars=no, status=no, toolbar=no, location=no, directories=no, menubar=no, resizable=yes, fullscreen=yes');
}


</script>


Aqui vai o link para ser aberto em fullscreen:

<a href="javascript:abrir('index.php','Popup','800','600')">CLIQUE AQUI PARA ENTRAR</a>


Na página que será aberta em fullscreen coloque este código dentro da tag <body>.Isso fará com que a barra do titulo do internet explorer também desapareça.

style = "overflow-x: hidden; overflow-y: hidden;"

Esta técnica só ira funcionar em alguns computadores se for definido a página como segura nas configurações do internet explorer!

FUNÇÕES PARA TRABALHAR COM IP

quinta-feira, 3 de julho de 2008 | Marcadores: | 0 comentários |

O PHP oferece diversas funções para trabalharmos com endeços de IP.
Veja alguns exemplos:

<?
$ip = $_SERVER[‘REMOTE_ADDR’];
echo $ip; // 127.0.0.1

$host = gethostbyaddr($_SERVER[‘REMOTE_ADDR’]);
echo $host; // localhost

$get_ip = gethostbyname(‘www.uol.com.br’);
echo $get_ip; // 200.221.2.45

$get_ips = gethostbynamel(‘www.google.com’);
print_r($get_ips); // Array ( [0] => 66.102.7.99 [1] => 66.102.7.147 [2] => 66.102.7.104 )
?>


A primeira função, $_SERVER[’REMOTE_ADDR’], é utilizada para sabermos o endereço de IP de um usuário, por exemplo.
A segunda, gethostbyaddr(), informa o nome do host name de Internet referente ao endereço de IP.
A função gethostbyname() retorna o endereço de IP correspondente a um host name de internet, já a última delas, gethostbynamel(), retorna uma lista de endereços de IP correspondente ao host name de internet.

Hoje, conheci mais duas funções para se trabalhar com IP muito interessantes. São elas, ip2long() e long2ip(). Observe:

<?
$receive = ip2long($_SERVER[‘REMOTE_ADDR’]);
$output = long2ip($receive);
echo $receive; // 2130706433 {integer}
echo $output; // 127.0.0.1 {string}
?>

Uma trabalha em conjunto com a outra. Enquanto a ip2long() converte uma string contendo um “Internet Protocol dotted address” válido em um integer; a long2ip() converte o integer em uma string.

A função ip2long() se torna muito útil, quando se faz necessário armazenar endereços de IP em um banco de dados. Reduzindo consideravelmente o espaço utilizado, além de tornar muito mais rápida uma futura consulta no banco de dados por esses endereços de IP.

Digo, reduzir o espaço por que ao invés de armazenar o endereço de IP como uma string - 127.0.0.1 - e utilizando para tal um campo do tipo char(15), o que gastaria 15 bytes. Você pode pode armazená-lo como um integer - 2130706433 - e gastar 4 bytes ao invés de 15. Posteriormente para exibir o endereço de IP, você usaria a função long2ip().

VALIDAÇÃO DE RADIO BUTTON EM FORMULÁRIOS

quarta-feira, 2 de julho de 2008 | Marcadores: | 0 comentários |

Inclua o código abaixo entre a tag <head></head>

<script>
function checa(nform) {
//validacao de radio buttons sem saber quantos sao
marcado = -1
for (i=0; i<nform.resp.length; i++) {
if (nform.resp[i].checked) {
marcado = i
resposta = nform.resp[i].value
}
}

if (marcado == -1) {
alert("Selecione uma resposta.");
nform.resp[0].focus();
return false;
}
return true;
}
</script>

Para ver o funcionamento, basta não clicar em nenhuma das opções abaixo:

<form action="validacao_radio_button.asp" method="post" name="form1" onSubmit="return checa(this);">
Você é?<br>
<input type="radio" name="resp" value="Homem">Homem <input type="radio" name="resp" value="Mulher">Mulher

<input type="submit" name="responde" value="Responder"> </form>

LISTAR OS ARQUIVOS DE UM DIRETÓRIO

terça-feira, 1 de julho de 2008 | Marcadores: | 0 comentários |

Salve este código como index.php e coloque-o dentro da pasta que você quer listar os arquivos e pronto!

<?
// Define um array para armazenar os arquivos
$files = array();

// Diretório atual
$d = dir('.');

// Percorre todos os arquivos
while(false !== ($file = $d->read())){
// Se o arquivo não é este arquivo, e não começa com "." ou "~"
// e não termina em LCK, então guarde-o para exibição futura.

if(($file{0} != '.') && ($file{0} != '~') &&
(substr($file, -3) != 'LCK') &&
($file != basename($_SERVER['PHP_SELF'])) ) {
// Guarda o nome do arquivo e dados completos de uma chamada
// à stat()
$files[$file] = stat($file);
}
}

// Fecha o diretório
$d->close();

// Agora vamos exibir o resultado em uma tabela
echo '<style>td { padding-right: 10px; }</style>';
echo '<table><caption>Conteúdo deste diretório:</caption>';

// Ordenar os arquivos em ordem alfabética
ksort($files);


// Percorremos os arquivos, exibindo uma nova linha na tabela
// para cada um deles.
foreach ($files as $name => $stats) {
// Inicia a linha e exibe um link com o nome do arquivo
echo "<tr><td><a href=\"{$name}\">{$name}</a></td>\n";
// Uma célula com o tamanho do arquivo
echo "<td align='right'>{$stats['size']}</td>\n";
// Uma coluna com a data de criação do arquivo
echo '<td>', date('d/m/Y h:ia', $stats['mtime']), "</td></tr>\n";
}

echo '</table>';
?>

ENVIANDO E-MAIL EM FORMATO HTML

terça-feira, 17 de junho de 2008 | Marcadores: | 0 comentários |

A função mail() do PHP nos permite enviar email através de um script de forma simples e objetiva.
Vamos ao código:


<?
mail(
"fabio@vivaolinux.com.br",
"Oi Fábio",
"Meu script para envio de email deu certo !"
);
?>

O comando mail() é definido da seguinte forma:

bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])

Em nosso primeiro exemplo definimos apenas os campos to, subject e message, mas ainda existem os cabeçalhos adicionais que podem ser definidos e são opcionais. Sempre que você estiver consultando a sintaxe de uma função e encontrar parâmetros delimitados por [] (colchetes), significa que os mesmos são opcionais, ou seja, você pode omiti-los.

Sendo assim, para enviar um email em formato HTML, basta informar que o mesmo é do tipo text/html através do cabeçalho do email e digitar tags Html misturadas com o texto da mensagem no campo subject. Vamos ao código:
<?

$to = "fulano@seudominio.com";
$subject = "Olá, mundo!";
$html = "
<html>
<body>
Este é meu <b>primeiro</b> email em formato HTML!
</body>
</html>";
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";

if (mail($to, $subject, $html, $headers)) {
echo "Email enviado com sucesso !";
} else {
echo "Ocorreu um erro durante o envio do email.";
}

?>

Como a função mail() retorna um valor booleano (verdadeiro ou falso) de acordo com o status de envio de email, podemos tratar uma mensagem de sucesso ou de erro durante o envio de email.

CSS PARA PAGINAÇÃO

sexta-feira, 13 de junho de 2008 | Marcadores: , , | 0 comentários |

Hoje vamos implementar o nosso post anterior - paginação de resultados - com um css que irá deixá-lo assim:Você pode variar as cores como desejar e é muito fácil, vamos ao código css:

body {
font-size: 100%;
color: #333;
background: #FFF;
font-family: Arial, Helvetica, sans-serif;
}
#pages {
padding: 3px;
}
#pages ul {
list-style-type: none;
}
#pages li {
float: left;
display: inline;
margin: 0 5px 0 0;
display: block;
}
#pages li a {
color: #88af3f;
padding: 4px;
border: 1px solid #ddd;
text-decoration: none;
float: left;
}
#pages li a:hover {
color: #638425;
background: #f1ffd6;
border: 1px solid #85bd1e;
}
#pages li.nolink {
color: #CCC;
border: 1px solid #F3F3F3;
padding: 4px;
}
#pages li.current {
color: #FFF;
border: 1px solid #b2e05d;
padding: 4px;
background: #b2e05d;
}

Salve esta página como paginacao.css

Agora vamos ver como o código é aplicado na paginação:

<div id="pages">
<ul>
<li class="nolink">« Previous Page</li>
<li class="current">1</li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">6</a></li>
<li><a href="#">7</a></li>
<li><a href="#">8</a></li>
<li><a href="#">9</a></li>
<li><a href="#">10</a></li>
<li><a href="#">Next Page »</a></li>
</ul>
</div>

Salve esta página como teste_paginacao.html e veja o resultado.

APLICANDO ESTE CSS NO POST ANTERIOR
Para ver o post clique aqui!

Este é o código completo com o css.

<link rel="stylesheet" type="text/css" href="paginacao.css">
<?
require("configuracoes/conecta.");

if (!isset($_GET["pagina"])) {
$pagina = 1;
}
else {
$pagina = $_GET["pagina"];

}

//quantidade de resultados por página
$max=50;
//quantidade de links para esquerda e direita
$qtd = 7;

$inicio = $pagina - 1;
$inicio = $max * $inicio;

$sql=("SELECT * FROM pessoa");
$query=mysql_query($sql);
$total=mysql_num_rows($query);

if ($total == 0)
echo "Nenhum registro encontrado!";
else

{
echo"Quantidade de registros encontrados: ".$total.'<br><br>';
$sql2=("SELECT * FROM pessoa LIMIT $inicio,$max");
$query2=mysql_query($sql2);
?>
<table>
<?
while ($mostrar=mysql_fetch_array($query2)){ ?>
<tr>
<td><? echo $mostrar['nome'];?></td>
<td><? echo $mostrar['telefone'];?></td>
</tr>
<? }?>
</table>
<table>
<tr>
<td height="71">
<div id="pages">
<ul>
<?
}
// Calculando pagina anterior
$menos = $pagina - 1;
// Calculando pagina posterior
$mais = $pagina + 1;
$pgs = ceil($total / $max);
if($pgs > 1 )
{
if($menos >0)
{
echo "<li><a href=\"?pagina=$menos\">Anterior</a></li>";
}else{ echo "<li class=\"nolink\">anterior</li>"; }
if (($pagina-$qtd) < 1 )

$anterior = 1;

else
$anterior = $pagina-$qtd;

if (($pagina+$qtd) > $pgs )
$posterior = $pgs;
else

$posterior = $pagina + $qtd;

for($i=$anterior;$i <= $posterior; $i++)
if($i != $pagina)
echo " <li><a href=\"?pagina=".($i)."\">$i</a></li>";

else
echo "<li class=\"current\"> <strong>".$i."</strong></li>";

if($mais <= $pgs)
{
?>
<li><a href="?pagina=<? echo $mais; ?>">Proxima</a></li>
<?
}else{
?>
<li class="nolink">Proxima</li>
<?
}

}

?>
</ul>
</div>
</td>
</tr>
</table>

PAGINAÇÃO DE RESULTADOS

| Marcadores: , | 0 comentários |

Vamos aprender como fazer uma paginação em php no estilo google!

Primeiramente faça uma base de dados com o nome paginacao , em seguida faça uma tabela com o nome pessoa com os campos nome e telefone.

Agora vamos ao código
<?
$conn=mysql_connect("localhost","root","") or die ("Erro na conexão");
$db=mysql_select_db("paginacao") or die ("Erro no banco");

if (!isset($_GET["pagina"])) {
$pagina = 1;
}
else {
$pagina = $_GET["pagina"];

}

$max=1;

$inicio = $pagina - 1;
$inicio = $max * $inicio;

$sql=("select * from pessoa");
$query=mysql_query($sql);
$total=mysql_num_rows($query);

if ($total == 0)
echo "Nenhum registro encontrado!";
else

{
echo"Quantidade de registros encontrados: ".$total.'<br><br>';
$sql2=("select * from pessoa LIMIT $inicio,$max");
$query2=mysql_query($sql2);
?>
<style type="text/css">
<!--
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
}
a:link {
color: #0099FF;
}
a:visited {
color: #0099FF;
}
a:hover {
color: #99CC00;
}
a:active {
color: #0099FF;
}
.texto_paginacao_pgatual {color:#FF0000}
-->
</style>
<table width="25%" border="0" cellspacing="0" cellpadding="0">
<?
while ($mostrar=mysql_fetch_array($query2)){ ?>
<tr>
<td scope="col"><? echo $mostrar['nome'];?></td>
<td scope="col"><? echo $mostrar['telefone'];?></td>
</tr>
<? }?>
</table>
<table width="25%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="71" scope="col">
<?
}
// Calculando pagina anterior
$menos = $pagina - 1;
// Calculando pagina posterior
$mais = $pagina + 1;
$pgs = ceil($total / $max);
if($pgs > 1 )
{
if($menos >0)
{
echo "<a href=\"?pagina=$menos\" class='texto_paginacao'>Anterior</a> ";
}else{
?>
Anterior
<?
}

if (($pagina-4) < 1 )

$anterior = 1;

else
$anterior = $pagina-4;

if (($pagina+4) > $pgs )
$posterior = $pgs;
else

$posterior = $pagina + 4;

for($i=$anterior;$i <= $posterior; $i++)
if($i != $pagina)
echo " <a href=\"?pagina=".($i)."\" class='texto_paginacao'>$i</a>";

else
echo " <strong class='texto_paginacao_pgatual'>".$i."</strong>";

if($mais <= $pgs)
echo " <a href=\"?pagina=$mais\" class='texto_paginacao'>Proxima</a>";
}else{
?>
Proxima
<?
}


?>
</td>
</tr>
</table>

Fácil, fácil ...
No próximo post nós iremos complementar esta paginação aplicando um css para deixar bem mais bonito!

VALIDAÇÃO DE FORMULÁRIOS COM AJAX

segunda-feira, 9 de junho de 2008 | Marcadores: , | 0 comentários |

Na validação no lado do cliente vamos utilizar uma classe Ajax chamada Really easy field validation with Prototype. Sua implantação é muito fácil. Basta adicionar ao campo do formulário um comando no atributo class.

EXEMPLO:
<HTML>
<HEAD>
<TITLE>Teste de validação de formulário</TITLE>
</HEAD>
<BODY>
<script src="ajax/scriptaculous/lib/prototype.js" type="text/javascript"></script>
<script src="ajax/scriptaculous/src/effects.js" type="text/javascript"></script>
<script type="text/javascript" src="ajax/fabtabulous.js"></script>
<script type="text/javascript" src="ajax/validation.js"></script>
<link rel="stylesheet" type="text/css" href="ajax/style.css">

<!-- INICIO DO FORMULÁRIO -->

<form id="teste" action="#" method="get">

Nome:<input name="nome" id="nome" class="required">

<input type="submit" value="submit">

</form>

<!-- OBJETO DE VALIDAÇÃO -->
<script type="text/javascript">
var teste=new Validation('teste');
</script>
</BODY>
</HTML>

No exemplo acima, se o usuário clicar no botão “Submit” sem preencher o campo “nome” o formulário não será enviado e uma mensagem de erro irá aparecer.

Se você quiser usar outra mensagem de erro é possível adicionado o atributo “title” ao elemento. O script automaticamente substitui a mensagem padrão pela definida.

Você não precisa saber nada de Ajax pra utilizar esta classe, basta adicionar os atributos corretos e personalizar as mensagens e você já tem uma validação no lado do cliente. Junto com o arquivo da classe estão outros exemplos.

FAÇA AQUI O DOWNLOAD DAS CLASSES

Fonte: www.rodrigopacheco.com