iMasters Fóruns: Escolhendo um Tipo de Campo Correto - iMasters Fóruns

Ir para

Bom uso da área



Atenção:
Este subfórum é destinado apenas para postagem de artigos, tutoriais e matérias sobre PHP.
Não é permitido a abertura de tópicos com dúvidas. Para isso, use o Fórum de PHP.
Página 1 de 1
  • Novo tópico
  • Responder

Escolhendo um Tipo de Campo Correto MySQL

#1 Membro offline   Fabyo Ícone

  • PHP
  • Ícone
  • Grupo: Masters
  • Posts: 5870
  • Cadastrado: 08-outubro 04
  • Sexo:Masculino
  • Localização:Ribeirão Pires - SP

Postou 26 agosto 2006 - 22:56

Ola Pessoal, resolvi criar esse tutorial para ajudar os iniciantes a aprenderem e entenderem sobre criação de banco de dados, muitos podem achar facil, pois não sabem explorar todos os recursos do banco, e acabam usando ferramentas como phpmyadmin que cria tudo praticamente automatico, e o usuario acaba achando que esta criando um banco de dados bem feito, mas depois sofre para fazer qualquer pesquisa no banco.
O banco de dados é o principal um sistema, se o banco de dados esta mal modelado seu sistema nao será eficiente.
Para criar um banco antes precisa estudar um pouco sobre quais campos usar quais tabelas criar, pensar bem mesmo pois nao tenha pressa um sistema bem feito maior parte do tempo que voce gasta é com analise.
eu navego em varios foruns e vejo tabelas que os usuarios postam que estao horriveis, muito mal elaboradas, tem usuario que só conhece VARCHAR, e usa VARCHAR para tudo, ta errado isso.
outra coisa que tambem vejo com frequencia é o usuario criar o banco com tamanhos de campos tudo na base do chute, tipo nome VARCHAR(200), cep VARCHAR(200), acredito a pessoa que faz isso nao deve ter noção nem do que se trata esse numero, então é por isso que estou publicando esse tutorial para que pessoas que fazem um banco mal modelado poder aprender e assim criar banco de dados mais corretos
não vou dar aulas aqui de regras FN(Formas Normais) , quem sabe num outro tutorial.
mas para aquele que quer se aprofundar recomendo estudar mais, pois irei só passar o basico, que pelo menos a pessoa lendo esse tutorial ira aprender a definir um banco corretamente com seus campos com tipos corretos.

VARCHAR
VAR=Variavel
CHAR = Caracterer
ou seja Caractere Variavel, quando voce precisa guardar um dado no banco mas voce nao sabe o tamanho exato que ele vai ter, ou seja ele pode variar, e se for texto claro voce usa VARCHAR, to falando de textos pequenos tipo: nome, rua, bairro, telefone etc...
entao vamos criar um campo nome, escolho VARCHAR, e agora qual tamanho poderia ter um nome 200 tabom?, nao 200 é um chute muito mal feito, vamos pensar entao, vamos inventar um nome bem comprimo:
Pedro Alvares da silva Cabral dos Santos Neto vamos contar strlen() = 45 caracteres, nossa quem usa VARCHAR(200) ta dando um chute bem lonje nao é mesmo?, nao deve existir um nome maior que esse mas mesmo assim para garantir a vitoria iremos usar um VARCHAR(50), demos 5 de brinde.
vamos tentar mais uma vez?, agora vamos criar um campo cidade, qual campos iremos usar?
integer?, nao usaremos VARCHAR , e mesma coisa vamos pensar num nome de cidade bem grande
Pindamonhangaba strlen() = 15 caracteres, deve existir uma cidade com um nome maior, entao para garantir vamos criar um VARCHAR(25) ta vendo dei 10 caractere de brinde :D

CHAR
CHAR = Caracterer

Pessoal para que esse tutorial nao fique muito extenso e eu acabe nao explicando direito entao recomendo voce ler melhor sobre VARCHAR e CHAR nesse link:
http://dev.mysql.com....1/pt/char.html
assim temos o foco maior sobre esse tutorial

só resumindo CHAR é para campos exatos onde o dado que voce for gravar não variar, exemplo Estados
SP, RJ, MG etc... 2 caracteres podemos salvar usando CHAR(2), e outra diferença basica entre CHAR e VARCHAR é que se voce usa um campo VARCHAR(20) salva apenas 10 caracteres o VARCHAR ira ter um tamanho de 10 e CHAR(20) se voce salvar 10 caracteres ele sempre tera o tamanho fixo de 20 mesmo que voce gravar apenas 1 caracters, por isso use CHAR somente para campos exatos, outro exemplo é usar o CHAR para guardar senha, isso mesmo por segurança vamos criptografar senha usando MD5, o MD5 nao importa o tamanho de sua senha ele sempre retorna a senha criptografada de 32 caracteres, entao podemos usar CHAR(32) para campo senha.

DATE/DATETIME/TIME
agora e data? como iremos salvar uma data?, ja sei usaremos 3 campos CHAR, dia CHAR(2), mes CHAR(2) e ano CHAR(4) to certo?.

que isso, nao façam essa loucura, para salvar uma data use o campo certo use DATE e se voce quer salvar data e hora temos DATETIME, só horas temos TIME, viu temos campos para todos os tipos que precisarmos? e porque voce só usava VARCHAR hem ?.

uma coisa voce tem que colocar na cabeça, nao faça errado só porque voce acha o jeito certo dificil, ou só porque voce nao consegue, só voce estudar que voce consegue, pare de fazer gambiarras
usando o campo certo alem de ser certo, voce tem inumeras vantagens, por exemplo pode usar as funções proprias do mysql para tratar o seu campo da maneira correta, se voce usa um VARCHAR para guardar data o Mysql ira tratar seu campo como um texto e nao como data, dai todas as funções que trabalha com datas nao ira funcionar

entao vou te ajudar para voce nao ter mais desculpa, pois nao sabe converter uma data
quando voce tem uma data nesse padrao dd/mm/yyyy e o banco aceita yyyy-mm-dd, precisamos converter a data, entao podemos fazer isso:

vamos usar uma função chamada explode() e ja explico tambem a implode()

explode = separa uma string em pedaços criando um array
implode = junta um array criando uma string

como voce pode ver sao exatamente os opostos, cada um faz uma coisa ao contrario da outra
exemplos:

usando explode para converter uma data
$arr = explode("-", "2006-08-25");
teremos :
$arr[0] = "2006";
$arr[1] = "08";
$arr[2] = "25";

como voce viu ele separou a data da sequencia - aqui "2006-08-25" = [2006] [08] [25], se viu que o explode tirou o caracter "-"

agora o implode() é o contrario ele nao tira um caracter, ele coloca

$arr = implode("/", $arr);
resultado = "2006/08/25";


percebeu que o $arr voltou a ser uma string?
mas só para concluirmos, nos convertemos os caracteres tirando - e colocando /

mas ainda nao temos uma data no padrao brasileiro entao vamos continuar:

Quote

$data = implode("/", array_reverse(explode("-", "2006-08-25")));
//resultado = "25/08/2006";


O array_reverse() apenas inverteu a posição do array antes = [2006] [08] [25] depois = [25] [08] [2006]

pronto ta ai a data invertida simples nao?, e apenas 1 linha que é melhor ainda
para fazer ao contrario nem vou explicar só voce ver essa função e usar ela mesmo.

mas para mais um exemplo podemos converter a data no proprio select exemplo:
"select date_format(data, '%d/%m/%Y') as data from tabela"

Funções para Data no MySQL


SET/ENUM

para um entendimento melhor leia:
http://dev.mysql.com....1/pt/enum.html
http://dev.mysql.com...4.1/pt/set.html


agora temos um campo "Deseja receber Newsletter?", qual campo é o mais apropriado para esse tipo de campo?
pode pensar um pouco eu espero....

vamos la o campo mais indicado seria o campo ENUM, nao conhece?, entao vou explicar o campo ENUM voce pode definir um padrao e ele aceita somente um dos que voce estabelecer, mesma coisa um combo, voce nao consegue escolher mais que uma opção um combo, entao o enum é mesma coisa.

exemplo ENUM('S', 'N') COMMENT 'S=Sim;N=Nao', criei um comentario só para lembrar do que se trata.

dai voce vai jogar nesse campo S ou N, se o usuario marcar o campo ele quer receber news

vou te dar mais uma ajudinha com o php exemplo:

$news = isset($_POST["news"]) ? "S" : "N";
dai basta jogar no banco o $news, que ira ter o resultado que o usuario escolheu S = Sim, N= Nao

mais um exemplo de ENUM, campo sexo, a pessoa só pode ser 1 opção, ou ela é Masculino, ou Feminino
ENUM('M','F'), dai mesma coisa voce salva o M se for masculino e F se for Feminino
viu que fica perfeito seu banco e legivel?, fora que é um metodo correto

outra coisa que você vai entender é que fazendo um banco correto facilita sua vida na hora de voce fazer qualquer pesquisa ou um relatorio.

bom agora temos o campo quais linguagens voce sabe programar? exemplo PHP, ASP, JAVA, certo a pessoa pode escolher mais que um campo nao é verdade?, dai voce montaria para ela um

<select name="linguagens[]" id="linguagens" size="5" multiple="multiple">
<option value="J">JAVA</option>
<option value="P">PHP</option>
<option value="A">ASP</option>
</select>

dai como iremos salvar esses dados ?, usaremos ENUM ?, nao, pois ENUM só aceita uma opçao, ah temos o campo SET o SET é igual ao ENUM só que ele aceita varios campos, vamos montar entao o campo SET
ficaria SET('J','P','A'), certo?, J = Java, P=PHP, e A= ASP

vamos fazer o codigo php para pegar esses dados, antes um teste para vermos se esta tudo ok

if (getenv("REQUEST_METHOD") == "POST")
{
foreach ($_POST["linguagens"] as $valor) {
echo $valor."<br />";
}
}

só para testarmos , tudo certo vamos deixar o campo correto para salvar no banco separado por virgula
exemplo se a pessoa escolher as 3 linguagens ira salvar 'J,P,A' correto?
entao basta fazer isso:

if (getenv("REQUEST_METHOD") == "POST")
{
$linguagens = implode(",", $_POST["linguagens"]);
}

e salvar no banco '$linguagens', viu sem misterio , facil nao é mesmo ?

bom ta ai é simples mas ja é um começo, use campos certos para guardar os dados
valor monetario pode usar o DECIMAL, numeros inteiros podemos usar smallint ,int só muda o tamanho

e usando USIGNED voce dobra o tamanho porque é sem sinal

leia mais:

http://dev.mysql.com...lumn-types.html
http://dev.mysql.com.../pt/myisam.html
http://dev.mysql.com.../pt/innodb.html

quando mais ler mais voce tera o conhecimento e dominio do que esta fazendo

sequencia de tutoriais para iniciantes:

http://forum.imaster...howtopic=192408

#2 Visitante_Adailton_*

  • Grupo: Visitantes

Postou 27 agosto 2006 - 12:18

sem comentario :assobiando:

#3 Membro offline   Perfect Lion Ícone

  • TOMA A PATADA DO LION ´0:
  • Ícone
  • Grupo: Membros
  • Posts: 857
  • Cadastrado: 29-outubro 04
  • Localização:São Bernardo do Campo/SP

Postou 28 agosto 2006 - 09:11

Fabão muito bom :P Rimo em :P hahahha o pessoal estava precisando disso mesmo.. eu mesmo não conhecia a do SET/ENUM agora sei. ^^ eu usava o Bool para true e false no lugar.. mais o ENUM te possibilita ter um trabalho melhor ;)

#4 Membro offline   Void : Ícone

  • Mercenário's
  • Ícone
  • Grupo: Membros
  • Posts: 1334
  • Cadastrado: 26-abril 05
  • Localização:São Paulo/SP

Postou 28 agosto 2006 - 12:57

bom, muito bom!

#5 Membro offline   Epyllion Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 155
  • Cadastrado: 05-janeiro 06

Postou 28 agosto 2006 - 15:11

Fabyo, parabéns !
Excelente explicação ! :thumbsup:

#6 Membro offline   Muskt Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 122
  • Cadastrado: 07-fevereiro 06

Postou 29 agosto 2006 - 13:05

Fabyo ... :clap:

Não sei se posso pedir isso aqui, mais se puder, voce poderia fazer um tutorial explicando porque/como separar os campos em tabelas diferentes para não ter redundancia (digo não criar uma tabela com todos os dados, e sim separa-los em varias tabela)

[]'s !!!

#7 Visitante_tmferreira_*

  • Grupo: Visitantes

Postou 29 agosto 2006 - 13:42

Fabyo, parabéns pela iniciativa!

Com certeza existem MUITOS recursos num SGBD que não usamos com frequência e que poderia resolver problemas mais facilmente.

#8 Membro offline   Fabyo Ícone

  • PHP
  • Ícone
  • Grupo: Masters
  • Posts: 5870
  • Cadastrado: 08-outubro 04
  • Sexo:Masculino
  • Localização:Ribeirão Pires - SP

Postou 29 agosto 2006 - 14:50

Muskt sobre o que você pediu posso ate fazer sim, o que você quer é sobre regras FN(Formas Normais), muitas pessoas criam banco de dados qubrando essas regras , mas um banco bem modelado precisa seguir essas regras

vou ver se faço um tutorial desses sabado que vem

t+

#9 Membro offline   Muskt Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 122
  • Cadastrado: 07-fevereiro 06

Postou 29 agosto 2006 - 15:57

Que otimo Fabyo !
Estou aguardando :aplause:

#10 Membro offline   Márcio T. Ícone

  • Sandalia da humildade
  • Ícone
  • Grupo: Membros
  • Posts: 77
  • Cadastrado: 24-outubro 06
  • Localização:Castanhal - PA

Postou 03 dezembro 2006 - 15:40

Ver postFabyo, em 26/08/2006 - 22:56, disse:

Ola Pessoal, resolvi criar esse tutorial...


Olá Fabyo, você recomendaria que tamanho para Login, Senha e Email?

#11 Membro offline   Fabyo Ícone

  • PHP
  • Ícone
  • Grupo: Masters
  • Posts: 5870
  • Cadastrado: 08-outubro 04
  • Sexo:Masculino
  • Localização:Ribeirão Pires - SP

Postou 04 dezembro 2006 - 07:11

Para nomes pode ser VARCHAR(45) +-
e senha por segurança voce deve criptografa-la, e por padrao usando MD5
dai usando MD5 ele gera uma senha criptografa de 32 caracteres sempre
entao use CHAR(32) para senha e para emails pode usar VARCHAR(64) +-

#12 Membro offline   Márcio T. Ícone

  • Sandalia da humildade
  • Ícone
  • Grupo: Membros
  • Posts: 77
  • Cadastrado: 24-outubro 06
  • Localização:Castanhal - PA

Postou 04 dezembro 2006 - 10:51

Ver postFabyo, em 04/12/2006 - 07:11, disse:

Para nomes pode ser VARCHAR(45) +-
e senha por segurança voce deve criptografa-la, e por padrao usando MD5
dai usando MD5 ele gera uma senha criptografa de 32 caracteres sempre
entao use CHAR(32) para senha e para emails pode usar VARCHAR(64) +-


Obrigado pela dica Fabyo :thumbsup:
Mas tenho outra dúvida, se o MD5 não pode ser descriptografado, como devo fazer o processo de validação?
Por exemplo, em um sitema de login, validar se o usuario digitou a senha correta.

Eu imagino que seja assim:
<?
// Essa senha veio do form do sistema de login
$login = $_POST[ 'login' ];
$senha = md5( $_POST[ 'senha' ] );

$conexao = mysql_connect( "localhost", "login",  "senha" );
$db = mysql_select_db( "database" );

$sql = "SELECT * FROM Usuario WHERE Login='$login' AND Senha='$senha'";
$resultado = mysql_query( $sql ) or die ( mysql_error() );

$contagem = mysql_num_rows( $resultado );
if( $contagem == 1 ) {
	echo = "Senha digitada está correta!";
}
?>


É dessa forma?

#13 Membro offline   Fabyo Ícone

  • PHP
  • Ícone
  • Grupo: Masters
  • Posts: 5870
  • Cadastrado: 08-outubro 04
  • Sexo:Masculino
  • Localização:Ribeirão Pires - SP

Postou 04 dezembro 2006 - 11:35

sim, mas só por curiosidade o mysql tbm tem o md5()

$sql = "SELECT * FROM Usuario WHERE Login='$login' AND Senha=md5('$senha')";

e proteja melhor seu sistema contra ataques sql injection

#14 Membro offline   Márcio T. Ícone

  • Sandalia da humildade
  • Ícone
  • Grupo: Membros
  • Posts: 77
  • Cadastrado: 24-outubro 06
  • Localização:Castanhal - PA

Postou 04 dezembro 2006 - 14:14

Ver postFabyo, em 04/12/2006 - 11:35, disse:

sim, mas só por curiosidade o mysql tbm tem o md5()

$sql = "SELECT * FROM Usuario WHERE Login='$login' AND Senha=md5('$senha')";

e proteja melhor seu sistema contra ataques sql injection


Obrigado pela ajuda Fabyo :thumbsup:

#15 Membro offline   filipecrosk Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 423
  • Cadastrado: 04-outubro 03
  • Sexo:Masculino
  • Localização:Belo Horizonte, Minas Gerais

Postou 16 fevereiro 2007 - 10:00

Pô cara


que finoooo

Só não sabia que o SET tinha essa função... muito bacana!!!!

O Enum eu já uso a muito tempo.. é muito bom!!!


Parabéns!!!
abração

#16 Membro offline   Marck_Vinny Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 4
  • Cadastrado: 11-junho 07

Postou 16 junho 2007 - 12:41

Ver postFabyo, em 04/12/2006 - 07:11, disse:

Para nomes pode ser VARCHAR(45) +-
e senha por segurança voce deve criptografa-la, e por padrao usando MD5
dai usando MD5 ele gera uma senha criptografa de 32 caracteres sempre
entao use CHAR(32) para senha e para emails pode usar VARCHAR(64) +-


Olá! Fabyo, gostei muito dessa tuto e do sistema de cadastro, mas está dando um erro:"banco de dados não encontrado" e como sou iniciante bem fraquinho ñ sei oq está causando esse erro, tenho uma suspeita de ser no init.php pois quando tirei o comando para ele da pág de cadastro ela abriu mas faltando partes. E fiz isso depois que vi que no cadastro_simples ñ havia esse comando mas eu gostaria de usar o outro completo.

A minha intenção é criar uma área restrita para cada usuário, pois trabalho com serviços gráficos e gostaria de uma área para que o meu cliente possa ver uma amostra de como o serviço vai ficar, mas teria que ser um jeito de que quando cada usuário logar seja enviado para sua respectiva página, você poderia me dar essa ajudinha.

PS. Estou usando o Dreamweaver MX, e estou criando as pags em .php se puder me ajudar o mais mastigado possível te agradeço, ou um passo a passo que um iniciante que não conhece nada de programação possa entender.

Desde já muito obrigado.

Marcos Vinicius

#17 Membro offline   Marck_Vinny Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 4
  • Cadastrado: 11-junho 07

Postou 16 junho 2007 - 19:35

Ver postFabyo, em 04/12/2006 - 07:11, disse:

Para nomes pode ser VARCHAR(45)
e senha por segurança voce deve criptografa-la, e por padrao usando MD5
dai usando MD5 ele gera uma senha criptografa de 32 caracteres sempre
entao use CHAR(32) para senha e para emails pode usar VARCHAR(64)


Olá Fabyo tô eu aki denovo, bom depois de fuçar, pesquisar e queimar a mufa pelo sistema, vi em parte onde eu estava errando, ñ sei se esse era mesmo o erro: bom peguei o PHPAdmin e criei um banco de dados com o nome "banco" e copiei o conteudo da tabela e aí funcionou, pois vi que no config estava lincando para esse "banco" ñ sei se era mesmo isso que eu deveria fazer, se for, :clap: estou evoluindo.

Tem uma outra coisa que gostaria de saber qual o comando para não duplicar o e-mail e o login no bd pois fiz um teste e o e-mail ñ duplica mas o login sim.

Tb gostaria de saber como posso usar esse login e senha para autenticar o usuário no site?
E como posso enviar a senha para o cliente se ele esquecer a mesma?

Desde já muito obrigado.
Marcos Vinicius

#18 Membro offline   0zerocool Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 1
  • Cadastrado: 08-maio 07

Ícone  Postou 04 julho 2007 - 05:08

ao inves d criar uma pasta para cada usuario você pode chamar os dados dele pelo php atraves do get
você deve ter uma tabela com os dados do usuario e outra tabela você poderia por o campo id, usuario, amostra 1 , amostra 2 amostra+n.
O campo id seria para controle da tabela, o campo usuarios seria nde você iria por o nome deusuario q pode ver akele determinado trabalho e amostra 1 2,.... seria o campo onde você colocaria o camiho da imagem q q mostra pra ele


O sistema de login, cadastro de usuario o proprio DW tem eh soh ir em apllication q lah tem login , logout , cadastro , restringir pagina , cadastro e etc.

O usuario sera identificado pela session (c feito pelo DW).

Cria uma pagina qualquer em php colocando no inicio o seguinte

$usuariologado = $_SESSION['MM_Username'];

onde MM_Username seria o nome da variavel de sessão definida no login
dps você faz uma consulta na 2ª tabela :

mysql_select_db($database_var_conexao, $var_conexao); //definido na hora q você criou a conexão com o banco de dados(neste exeplo minha conexão chama var_conexão)
$seleciona_usuario= sprintf("SELECT * FROM imagens_usuarios WHERE usuario=$usuariologado);
$exe_tabela= mysql_query($usuarios, $var_conexao) or die(mysql_error());
$mostra_dados = mysql_fetch_assoc($exe_tabela);
$total_usuarios = mysql_num_rows($exe_tabela);



ai pra mostra a 1ª img :

echo $mostra_dados['amstra 1'];


echo = comando para q o php escreva.
$mostra_dados = variavel criada responsavel por fazer a busca e mostrar o conteudo d determinada coluna na tabela
$mostra_dados['amostra 1'] = dentro do [''] eh onde você coloca o nome do campo da tabela.
C você naum conseguir faze o sistema de login poe ae no forum como você tentou faze ou vai no google e procura um tutorial tem uns 500
flaw

#19 Membro offline   Paulo André Ícone

  • paulorodrigues.eti.br
  • Ícone
  • Grupo: Membros
  • Posts: 1420
  • Cadastrado: 05-dezembro 06
  • Sexo:Masculino
  • Localização:Belo Horizonte - MG

Postou 10 junho 2008 - 20:40

O tópico é antigo mas esta atualização vale muito na hora de desenvolver. :thumbsup:

Como o tempo se passou e foram adquirido novos conhecimentos e novas funções do PHP, creio que a forma de transformar uma data no formato americano para o brasileiro ficaria bem mais coerente aos dias atuais desta maneira:

$data = date("d/m/Y", strtotime("2006-08-25"));
//resultado = "25/08/2006";


Mesmo resultado, código mais limpo e sem POG. ^_^

[]'s

#20 Membro offline   Fabyo Ícone

  • PHP
  • Ícone
  • Grupo: Masters
  • Posts: 5870
  • Cadastrado: 08-outubro 04
  • Sexo:Masculino
  • Localização:Ribeirão Pires - SP

Postou 11 junho 2008 - 07:37

Opa, pode se utilizar tbm o proprio mysql para converter a data

e só uma observação saber manipular funções para se fazer alguma coisa nao é POG

POG no meu ponto de vista na maioria das vezes é fazer algo em varias linhas quando se poderia fazer em poucas linhas ou ate em 1 linha de codigo.

claro que POG nao se resume só ao numero de linhas de um codigo, mas na maioria deles o POG fica claro só pelo numero de linhas

#21 Membro online   Alaerte Gabriel Ícone

  • Soluções
  • Ícone
  • Grupo: Membros
  • Posts: 4111
  • Cadastrado: 28-abril 07
  • Sexo:Masculino
  • Localização:Iguaí - BA

Ícone  Postou 11 junho 2008 - 20:01

Ver postFabyo, em 11/06/2008 - 07:37, disse:

Opa, pode se utilizar tbm o proprio mysql para converter a data

e só uma observação saber manipular funções para se fazer alguma coisa nao é POG

POG no meu ponto de vista na maioria das vezes é fazer algo em varias linhas quando se poderia fazer em poucas linhas ou ate em 1 linha de codigo.

claro que POG nao se resume só ao numero de linhas de um codigo, mas na maioria deles o POG fica claro só pelo numero de linhas



Com certeza Fabyo... sempre utilizei este método, nunca tive problemas, e aprendi com o seu tutorial :thumbsup:

#22 Membro offline   EduardoVIP12 Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 1
  • Cadastrado: 22-julho 08

Postou 22 julho 2008 - 17:04

Sou novo no forum. Gostaria de parabenizar pela qualidade do forum.

#23 Membro online   Alaerte Gabriel Ícone

  • Soluções
  • Ícone
  • Grupo: Membros
  • Posts: 4111
  • Cadastrado: 28-abril 07
  • Sexo:Masculino
  • Localização:Iguaí - BA

Postou 22 julho 2008 - 18:33

Quote

Sou novo no forum. Gostaria de parabenizar pela qualidade do forum.


Em nome de toda a equipe, obrigado pelo reconhecimento :)

#24 Membro offline   Lion Master Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 8
  • Cadastrado: 30-julho 08
  • Localização:Dourados - MS

Postou 01 agosto 2008 - 12:25

E aí Pessoal, tudo bom?
Duas dúvidas Fabyo:

- o campo email poderia ser email(40)? Existe algum motivo(regra) ou macete para usar emails(64)?????

- o md5() dentro do mysql protege contra sql injection devido ao fato de processar(criptografar) dentro do banco e nao no script PHP antes do INSERT SQL?

#25 Membro offline   Leandro Barral Ícone

  • Constante Evolução
  • Ícone
  • Grupo: Membros
  • Posts: 354
  • Cadastrado: 27-setembro 07
  • Localização:Caçapava/SP

Postou 05 novembro 2008 - 17:55

Quote

E aí Pessoal, tudo bom?
Duas dúvidas Fabyo:

- o campo email poderia ser email(40)? Existe algum motivo(regra) ou macete para usar emails(64)?????

- o md5() dentro do mysql protege contra sql injection devido ao fato de processar(criptografar) dentro do banco e nao no script PHP antes do INSERT SQL?


o campo email pode ser do tamanho que você achar necessário, agora motivo para usar 64 nao tem.. imagina um email em um subdominio de um site:
leandrooverabarral@staff.portaldigidesign.com.br -> só aqui 48 caracteres.. sacou?

agora sobre o md5, ele nao criptografa nada, ele apenas cria um hash de 32 caracteres (se nao me engano) "impossibilitando" uma engenharia inversa.. a nao ser que se tenha um dicionario com todas as combinações possiveis de letras e tal, algo impossivel.
agora usar ele dentro ou nao da instrução sql deve ser pelo mesmo motivo de resgatar as datas formatadas direto do banco, diminuição de linhas de código e mais agilidade no processamento das informações..

Espero ter respondido sua dúvida e não ter falado muita besteira! ehauehaueh

Abraço.

Att,

Leandro Barral []'..

#26 Membro offline   SaXeTz Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 1
  • Cadastrado: 26-abril 09

Ícone  Postou 26 abril 2009 - 17:23

Valeu, bom tutorial.
Porem está incorreto um detalhe dessa frase "(...)diferença basica entre CHAR e VARCHAR é que se voce usa um campo VARCHAR(20) salva apenas 10 caracteres o VARCHAR ira ter um tamanho de 10(...)", se for salvo apenas 10 caracteres em uma VARCHAR(20) ira ter um tamanho de 11 e não 10 como diz o texto.

#27 Membro offline   pslucasps Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 120
  • Cadastrado: 26-dezembro 08
  • Sexo:Masculino

Postou 05 agosto 2009 - 22:40

Fabyo: Parabéns pelo post, este foi um dois meus primeiros contatos com MySQL e ele realmente ajuda muito.

Qual valor devo usar para telefone que tenha a seguinte estrutura (47)3210-0123. Em meu caso utilizei Integer(10) mas não sei se é o certo. E também nõa sei se devo contar os outros caracteres como '(' e '-'.
A outra questão é em relação ao número da casa. Neste caso eu utilizei Smallinte(5).

Bom, se alguem souber me dizer se fiz certo ou não eu agradeço.

#28 Membro offline   Fabyo Ícone

  • PHP
  • Ícone
  • Grupo: Masters
  • Posts: 5870
  • Cadastrado: 08-outubro 04
  • Sexo:Masculino
  • Localização:Ribeirão Pires - SP

Postou 06 agosto 2009 - 07:49

Depende muito da sua aplicação, se for algo simples voce pode gravar o numero ja com a mascara se isso nao for te atrapalhar nas pesquisas, mas voce tambem pode gravar em formato numerico sem a mascara, porque a mascara voce só usa para exibir pro usuario.

#29 Membro offline   verneklavor Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 101
  • Cadastrado: 07-fevereiro 04

Postou 18 agosto 2009 - 07:54

Otimo topico, bem explicativo.
Parabens

Página 1 de 1
  • Novo tópico
  • Responder

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)