Arquivo

Arquivo de setembro, 2008

Utilizando MySQL: Tabelas e Campos

22, setembro, 2008 Rafael 1 comentário

Algumas pessoas podem achar fácil, mas minha experiência no assunto, diz que muitas pessoas têm dificuldades sobre os conceitos básicos de bases de dados. Portanto, só passe para o próximo tópico quando você estiver plenamente seguro que domina os conceitos de bases de dados.

Uma base de dados, nada mais é do que estruturas complexas de dados. Estes dados são gravados em forma de registros em tabelas.

Parece simples, certo? Façamos então uma analogia para que este conceito se torne ainda mais simples:

Imagine um arquivo de fichas, numa empresa onde há várias caixas, cada uma contendo os dados dos funcionários de um certo setor. Cada caixa possui várias fichas, que são os cadastros dos funcionários – cada ficha contém os dados de apenas um funcionário. Indo mais longe, podemos concluir que cada ficha contém diversas informação sobre o funcionário em questão:

Portanto, cada caixa é uma tabela, contendo diversas fichas, que são os registros, e cada ficha possui várias informações sobre o funcionário, que são os campos.

Como foi dito, há várias caixas, uma para cada departamento, a soma de todas as caixas forma a base de dados. Observando tudo isto de fora, podemos formar o seguinte esquema:

Base de dados < Tabela < Registro < Coluna (datatype)

Banco de dados < Tabela < Linha < Campo

As duas linhas acima mostram os termos normalmente usados para o que acabamos de aprender.

Os campos podem ser de diferentes tipos e tamanhos, permitindo ao programador criar tabelas que satisfaçam ao escopo do projeto. A decisão de quais campos usar e quais não usar é muito importante, pois influi drasticamente na performance da base de dados que estamos desenvolvendo, portanto, é de bom grado um conhecimento sólido destes conceitos.

A etapa de montagem das tabelas, é senão a mais importante, uma das mais importantes etapas da montagem de uma base de dados, pois um bom projeto pode facilitar muito o trabalho de programação.

Campos

Como já sabemos, os campos são a parte fundamental de uma base de dados. É nos campos que as informações ficam armazenadas. Para um otimização da base de dados, antes e utilizar, devemos definir os campos que desejamos usar, e especificar o que cada um pode conter.

Tipos de campos no MySQL

O MySQL oferece os mais comuns campos, que até mesmo um programador novato já deve ter visto. Alguns deles estão aqui listados:

CHAR(M)

Os campos CHAR são usados para caracteres alfanuméricos, como endereços e nomes. Seu tamanho é fixo e instaurado ao ser criado. Um campo do tipo CHAR pode ter de 1 a 255 caracteres.

Exemplo:

endereco_comercial CHAR(10);

Define um campo chamado ‘endereco_comercial’, que pode conter até dez letras.

Observe que não há acentos no nome do campo, pois muitos servidores não acentuam, e sua tabela teria difícil acesso.

VARCHAR(M)

Sua estrutura e funcionamento é idêntico ao campo anterior, salvo que no tipo CHAR, o tamanho definido é fixo, e mesmo que não usado, aquele espaço em disco é alocado. Já o campo VARCHAR, aloca apenas o espaço necessário para gravação. Contudo, vale lembrar que trocamos espaço por velocidade, pois este campo é 50% mais lento que o anterior.

Exemplo:

endereco_comercial VARCHAR(10);

Define um campo chamado endereco_comercial que pode conter até dez letras. Se você preencher apenas duas, o campo não ocupara todos dez bytes, mas apenas 2.

INT(M) [Unsigned]

O campo INT, que como o próprio número diz, suporta o conjunto dos números inteiros numa variação de -2147483648 a 2147483647. O parâmetro Unsigned pode ser passado, excluindo os números negativos, proporcionando um intervalo de 0 até 4294967295.

Exemplos:

carros_estocados INT;

Inteiro válido: -245

Inteiro válido: 245

Inteiro inválido: 3000000000

carros_estocados INT unsigned;

Inteiro válido: 245

Inteiro inválido: -245

Inteiro inválido: 3000000000

FLOAT[(M,D)]

Os pontos flutuantes (FLOAT) representam pequenos números decimais, e são usados para representar números com maior precisão.

Exemplo:

voltagem_cadeira_eletrica FLOAT(4,2);

Float válido: 324.50

DATE

Campo usado para armazenar informações referentes a data. A forma padrão ‚ é ‘AAAA-MM-DD’, onde AAAA corresponde ao ano, MM ao mês, e DD ao dia. Ele pode variar de 0000-00-00 a 9999-12-31.

O MySQL possui um conjunto poderoso de comandos de formatação e manipulação de datas. Consulte documentação adicional, se houver interesse.

Exemplo:

data_de_nascimento DATE;

Data v lida: 1999-12-06

Data invalida: 1999-06-12

TEXT/BLOB

Os campos texto e blob são usados para guardar grandes quantidades de caracteres. Podendo conter de 0 a 65535 bytes, os blobs e texts são úteis para armazenar documentos completos, como este que você está lendo. A única diferença entre os campos BLOB e TEXT está no fato de um campo TEXT não ser sensível a letras maiúsculas e minúscula quando uma comparação é realizada, e os BLOBs sim.

Exemplo:

relatorio BLOB;

BLOB válido: ‘Minha terra tem palmeiras onde canta o…’

relatorio TEXT;

TEXT válido: ‘A que saudades que eu sinto…’

SET

Um campo interessante, que permite que o usuário faça uma escolha dado determinado número de opções. Cada campo pode conter até‚ 64 opções.

Exemplo:

vicio SET(“cafe”, “cigarro”) NOT NULL;

Neste exemplo este campo pode conter apenas os seguintes itens:

“”

“cafe”

“cigarro”

“cafe,cigarro”

ENUM

Um campo com funcionamento semelhante ao SET, com a diferença que apenas um valor pode ser escolhido.

Exemplo:

virtude ENUM(“programar”, “amar”) NOT NULL;

Neste exemplo este campo pode conter os seguintes valores:

“”

“programar”

“amar”

Registros

Um conjunto de campos relacionados, forma o que chamamos de registro. Um registro, portanto, pode ter a seguinte estrutura:

nome CHAR(15);

email CHAR(25);

telefone INT;

Neste exemplo, nosso registro contém três campos, podendo armazenar o email e o telefone de uma determinada pessoa. Observe que o campo nome foi definido como CHAR, portanto poderá conter qualquer tipo de caractere, contudo, o campo telefone, definido como INT, poderá apenas conter números, pois foi configurado como INT.

Tabelas

Um conjunto de registros, forma uma tabela. As tabelas portanto, armazenam grande quantidade de dados. Como no exemplo anterior, poderíamos ter centenas de nomes diferentes cadastrados em nossa tabela de pessoas. Cada conjunto de dados corresponde a um registro.

Antes de usar uma base de dados, ou dar qualquer comando, nós precisamos de uma tabela pelo menos, para armazenar os dados:

Isto pode ser feito usando o comando CREATE TABLE, que recebe como parâmetro o nome da tabela que desejamos usar.

—————————————————————-
mysql> CREATE TABLE teste(

>codigo INT,

>nome CHAR(15),

>email CHAR(25),

>telefone INT);

—————————————————————-

Notas:

- Não é possível criar duas tabelas com o mesmo nome;
- Cada conjunto de dados, quando visto em uma tabela, é também chamado linha;
- Você acaba de criar sua primeira tabela!

Características das linhas:

- O nome de uma coluna pode ter até 64 letras;
- O nome de uma coluna pode começar com um número;
- O nome de uma coluna não pode ser composto de números apenas.

Opções de uma tabela:

As seguintes opções podem ser adicionadas a qualquer campo de uma tabela, concatenando recursos adicionais a estes campos.

-Chave primária: Usado para que não seja permitido, que o usuário consiga cadastrar dois registros com chaves primárias iguais. Isto é claramente útil, quando não é desejado que seja digitado um segundo registro igual ao primeiro por engano. Para se definir uma chave primária, basta adicionar ‘PRIMARY KEY’ a definição do campo que se deseja a não duplicidade.

Exemplo:

nome CHAR(15) PRIMARY KEY;

Esta declaração faz com que não seja permitido o cadastro na tabela de dois registros com nomes iguais.

-Auto incremento: Este recurso, faz com que conforme novos registros são criados, automaticamente estes obtém valores que correspondem ao valor deste mesmo campo no registro anterior, somado a 1.

Exemplo:

codigo INT AUTO_INCREMENT;

Soma um a cada registro automaticamente neste campo. Começando de 1, com inserção subsequente.

Comandos relativos as tabelas:

Podemos executar comandos para saber as condições que as tabelas se encontram, e também manipulá-las. Abaixo, poderemos conhecer os fundamentais:

-Mostrar tabelas

Função:

Lista todas as tabelas existentes no banco de dados atual.

Comando:

mysql>show tables;

-Mostrar colunas

Função:

Mostra as informações referentes a estrutura, ou seja, as colunas da tabelas desejada.

Comando:

mysql>show columns from teste;

Usando FTP com o PHP

15, setembro, 2008 Rafael Sem comentários

Explicamos as funções para realizar transferência de arquivo, utilizando o protocolo FTP, através de páginas PHP. Exemplo de código para aprender a transferir arquivos ao servidor.
Constantemente nos encontramos baixando arquivos de Internet: Um programinha que alguém nos recomenda, a foto da modelo de moda ou os clásicos MP3′s . Sem nos dar conta de um modo ou outro fazemos uso do protocolo FTP (File Transfer Prococol) para baixar arquivos desde um Servidor. Baixamos mais do que transferimos… em outras palavras “Tomamos mais do que damos”. Este artigo pretende explicar como transferir ou permitir que seus usuários transfiram (colaborem) – arquivos ao Servidor usando as funções FTP incluídas no PHP. Lembrem do velho ditado que diz: “Mais vale dar que receber”.

O QUE É O FTP?

Siglas de File Transfer Protocol ou Protocolo de Transferência de Arquivos. Como seu próprio nome o indica, é um protocolo (que pertence a TCP/IP) que se encarrega da transferência de arquivos entre computadores conectados em rede. Ao se basear na arquitetura Cliente / Servidor, o FTP faz uso de dois componentes básicos:

  • Um cliente FTP. O qual se encarrega de se conectar a um servidor FTP para baixar ou transferir arquivos.
  • Um servidor FTP. Encarrega-se processar as petições dos clientes FTP, permitido-lhes baixar ou transferir arquivos através dele.

Para nos conectarmos a um servidor FTP, e assim, poder realizar consultas nele, necessitaremos dos seguintes dados:

  • Nome do Servidor. É a IP ou Nome do Servidor FTP ao qual temos que nos conectar, tal como: 65.134.10.5 ou ftp.billysite.net
  • Porto. Número do porto do servidor. Por padrão é 21.
  • Conta de Usuário. É o nome da conta de usuário que temos atribuído. Há que certificar-se que conta com as permissões necessárias para transferir ou baixar arquivos. Se não tiver uma conta de usuário se pode acessar como usuário anônimo utilizando o nome de usuário anonymous.
  • Chave de acesso. É nossa senha de conta de usuário. Se acessarmos como usuário anônimo colocaremos como chave nosso correio-e a maneira de cortesia.

Uma vez conectados ao servidor FTP poderemos fazer uso de seus comandos para realizar as tarefas que melhor acharmos conveniente. Este artigo não pretende esboçar em grande medida o tema de FTP, por não ser este o objetivo fundamental do mesmo. Para mais informações sobre sobre este aspecto lhe recomendo revisar o artigo de Michael Calore: “El ABC de la transferencia de archivos por Internet”, disponível no web site de WebMonkey.

FUNÇÕES FTP EM PHP.

PHP faz uso de funções FTP para acessar a um servidor web, a maneira de cliente. A seguir mostraremos as funções básicas a usar no script, assim como uma breve descrição das mesmas. Se quiser maior detalhe destas e outras funções FTP lhe aconselho consultar a documentação oficial do PHP, disponível em: http://www.php.net/docs.php.

Função
Sintaxe
Descrição
ftp_connect int ftp_connect ( string host [, int port])
host: Nome ou IP de Servidor FTP.
port: Porto, padrão 21.
Estabelece uma conexião FTP ao host especificado.
ftp_login int ftp_login( int ftp_stream, string username, string password)
ftp_stream: Manejador FTP obtido com ftp_connect.
username: Nome de usuário.
password: senha de usuário.
Começa a sessão em uma conexão FTP.
ftp_pasv int ftp_pasv ( int ftp_stream, int pasv)
ftp_stream: Manejador FTP obtido com ftp_connect.
pasv: Se for TRUE ativa o modo passivo, se for FALSE ou desativa.
Ativa ou desativa o modo passivo. Em modo passivo, as conexões de daos são iniciadas pelo cliente, ao invés de serem iniciadas pelo servidor.
ftp_pwd int ftp_pwd ( int ftp_stream)
ftp_stream
: Manejador FTP obtido com ftp_connect.
Devolve o nome do diretório atual.
ftp_put int ftp_put ( int ftp_stream, string remote_file, string local_file, int mode)
ftp_stream: Manejador FTP obtido com ftp_connect.
remote_file: Nome com o qual se salvará o arquivo no Servidor FTP.
local_file: Arquivo local que se encontra na máquina cliente.
mode: Modo de transferência, pode ser FTP_ASCII ou FTP_BINARY.
Transfere uma arquivo ao Servidor FTP.
ftp_nlist int ftp_nlist ( int ftp_stream, string directory)
ftp_stream: Manejador FTP obtido com ftp_connect.
directory: Rota do diretório a listar.
Devolve uma lista de arquivos do diretório dado.
ftp_size int ftp_size ( int ftp_stream, string remote_file)
ftp_stream: Manejador FTP obtido com ftp_connect.
remote_file: Nome do arquivo no Servidor FTP.
Devolve o tamanho do arquivo especificado. Nem todos os servidores suportam esta característica.
ftp_mdtm int ftp_mdtm ( int ftp_stream, string remote_file)
ftp_stream: Manejador FTP obtido com ftp_connect.
remote_file: Nome do arquivo no Servidor FTP.
Devolve a data da última modificação do arquivo especificado. Nem todos os servidores suportam esta característica
ftp_quit int ftp_quit ( int ftp_stream)
ftp_stream: Manejador FTP obtido com ftp_connect.
Fecha uma conexão FTP

Nota: Deve-se certificar que se encontrem habilitadas as funções ftp na configuração da versão de PHP que possui e de ter as permissões necessários em sua conta FTP para transferir e baixar arquivos.

CODIGO FONTE.

/inc/ftpfunc.php.
Script que conterá as constantes e funções a usar em index.php. Neste script deverá modificar os valores das constantes para ajusta-lo a suas necesidades. A função ConectarFTP lhe permitirá se conectar ao Servidor FTP; a função TransferirArquivo tem a tarefa de transferir um arquivo ao Servidor; e finalmente, a função ObterRota lhe outorgará a rota do diretório atual no qual está trabalhando o Servidor.

<?
# FUNÇÕES FTP # CONSTANTES
# Mude estes dados pelos de seu Servidor FTP

define(“SERVER”,”localhost”); //IP o Nome do Servidor
define(“PORT”,21); //Porto
define(“USER”,”willy”); //Nome de Usuário
define(“PASSWORD”,”12345″); //Senha de acesso
define(“PASV”,true); //Ativa modo passivo

# FUNÇÕES

function ConectarFTP(){
//Permite se conectar ao Servidor FTP
$id_ftp=ftp_connect(SERVER,PORT); //Obtem um manejador do Servidor FTP
ftp_login($id_ftp,USER,PASSWORD); //Loguea-se ao Servidor FTP
ftp_pasv($id_ftp,MODO); //Estabelece o modo de conexão
return $id_ftp; //Devolve o manejador à função
}

function TransferiArquivo($arquivo_local,$arquivo_remoto){
//Transfere arquivo da máquina Cliente ao Servidor (Comando PUT)
$id_ftp=ConectarFTP(); //Obtem um manejador e se conecta ao Servidor FTP
ftp_put($id_ftp,$arquivo_remoto,$arquivo_local,FTP_BINARY);
//Transfere um arquivo ao Servidor FTP em modo Binário
ftp_quit($id_ftp); //Fecha a conexão FTP
}

function ObterRota(){
//Obtén rota do diretório do Servidor FTP (Comando PWD)
$id_ftp=ConectarFTP(); //Obtém um manejador e se conecta ao Servidor FTP
$Diretorio=ftp_pwd($id_ftp); //Devolve rota atual p.e. “/home/willy”
ftp_quit($id_ftp); //Fecha a conexão FTP
return $Diretorio; //Devolve a rota à função
}
?>

index.php.
Script que contém um formulário (form_ftp) que nos permite buscar um arquivo e transferi-lo ao Servidor FTP, ademais nos mostra uma lista dos diretórios e arquivos do mesmo.

FTP OK

<?php echo “<?xml versao=”1.0″ encoding=”iso-8859-1″?”.”>”; ?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<title>::..Funções FTP..::</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
</head>

<body>
<p align=”center”><font size=”5″ face=”Verdana, Tahoma, Arial”><strong><em>
Funcoes FTP
</em></strong></font></p>
<p><font face=”Verdana, Tahoma, Arial”>

<?
include(‘inc/ftpfunc.php’); //Inclui o arquivo de funções
if(!empty($_POST["arquivo"])){ //Comprova se a variável “arquivo” foi definida
TransferirArquivo($_POST["arquivo"],basename($_POST["arquivo"]));
//basename obtén o nome de arquivo sem a rota
unset($_POST["arquivo"]); //Destrói a variável “arquivo”
}
?>
<strong><font color=”#000000″ size=”3″>Subir Arquivo</font></strong></font></p>
<hr />

<!–Formulario para escolher o arquivo a transferir –>
<form action=”" method=”post” name=”form_ftp” id=”form_ftp“>
<p><font size=”2″ face=”Verdana, Tahoma, Arial”> Escolher arquivo:
<input name=”arquivo” type=”file” id=”arquivo” />
<input name=”Submit” type=”submit” value=”Transferir Arquivo” />
</font><font size=”2″ face=”Verdana, Tahoma, Arial”> </font> </p>
</form>

<hr />
<p><font face=”Verdana, Tahoma, Arial”><strong><font color=”#000000″ size=”3″>
Lista de Arquivos
</font></strong></font></p>
<table width=”69%” border=”1″ cellspacing=”0″ cellpadding=”0″>
<tr>
<td width=”48%”><div align=”center”><font size=”2″ face=”Verdana, Tahoma, Arial”><strong>Nombre</strong></font></div></td>
<td width=”22%”><div align=”center”><font size=”2″ face=”Verdana, Tahoma, Arial”><strong>Tama&ntilde;o</strong></font></div></td>
<td width=”30%”><div align=”center”><font size=”2″ face=”Verdana, Tahoma, Arial”><strong>Fec.
Modificação</strong></font></div></td>
</tr>
<?
$id_ftp=ConectarFTP(); //Obtiene un manejador y se conecta al Servidor FTP
$ruta=ObterRota(); //Obtem a rota atual no Servidor FTP
echo “<b>O diretorio atual é: </b> “.$rota;
$lista=ftp_nlist($id_ftp,$rota); //Devolve um array com os nomes de arquivos
$lista=array_reverse($lista); //Inverte ordem do array (ordena array)
while ($item=array_pop($lista)) //Lê todos os arquivos e diretorios do diretorio
{
$tamanho=number_format(((ftp_size($id_ftp,$item))/1024),2).” Kb”;
//Obtem tamanho de arquivo e o passa a KB
if($tamanho==”-0.00 Kb”) // Se for -0.00 Kb se refere a um diretorio
{
$item=”<i>”.$item.”</i>”;
$tamanho=”&nbsp;”;
$data=”&nbsp;”;
}else{
$data=date(“d/m/y h:i:s”, ftp_mdtm($id_ftp,$item));
//Filemtime obtem a data de modificação do arquivo; e date lhe dá o formato de saída
}
?>

<tr>
<td><font size=”2″ face=”Verdana, Tahoma, Arial”><? echo $item ?></font></td>
<td align=”right”><font size=”2″ face=”Verdana, Tahoma, Arial”><? echo $tamanho ?></font></td>
<td align=”right”><font size=”2″ face=”Verdana, Tahoma, Arial”><? echo $data ?></font></td>
</tr>
<? } ?>
</table>
</body>
</html>

Bom, espero que esta colaboração tenha sido útil à Comunidade Web!

Navigation »