Jump to content


Photo

Gravar Dados E Validar Data


  • Faça o login para participar
14 replies to this topic

#1 kklj

kklj

    12 Horas

  • Usuários
  • 135 posts
  • Sexo:Masculino
  • Localidade:juiz de fora

Posted 08/11/2007, 22:09

amigos estou com uma duvida, nao estou conseguindo gravar dados no mysql. tenho q pegar os dados de uma outra pagina e gravar apenas dois dados, DATA E DESCRICAO, como faço isso?

<?php 
  $conexao = mysql_connect('localhost','root','vertrigo') or die ("Erro ao conectar ao banco de dados");
  $db = mysql_select_db('agenda');
  mysql_select_db($db, $conexao); 
 
  $data = $_POST['data']; 
  $descricao = $_POST['descricao'];
  
  $sql = ("insert into contato (data, descricao) values ('$data','$descricao')");
  $sql = mysql_query($sql) or die ("Houve erro na gravação dos dados.");

  
?>

como podem ver é so isso, sao so esses 2 dados da minha tabela.

ha como faço para validar a dada?

obrigada

Edição feita por: kklj, 08/11/2007, 22:12.


#2 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 09/11/2007, 01:56

Um dos problemas é que vc está chamando o banco de dados 2 vezes 1 só basta ....
Mas assim ele da erro am algum lugar escreve algo a mais ... tente simplificar ...

<?php 
mysql_connect("localhost", "root", "vertrigo") or die (mysql_error());
mysql_select_db("agenda") or die(mysql_error());
  
mysql_query("insert into `contato` (`data`, `descricao`)
values ('" . $_POST["data"].  "','" . $_POST["descricao"] . "');") or die (mysql_error());
?>

Para validar a data você pode usar um JavaSCript ou usa a função:
checkdate: http://www.php.net/checkdate

#3 kklj

kklj

    12 Horas

  • Usuários
  • 135 posts
  • Sexo:Masculino
  • Localidade:juiz de fora

Posted 09/11/2007, 10:00

Um dos problemas é que vc está chamando o banco de dados 2 vezes 1 só basta ....
Mas assim ele da erro am algum lugar escreve algo a mais ... tente simplificar ...

<?php 
mysql_connect("localhost", "root", "vertrigo") or die (mysql_error());
mysql_select_db("agenda") or die(mysql_error());
  
mysql_query("insert into `contato` (`data`, `descricao`)
values ('" . $_POST["data"].  "','" . $_POST["descricao"] . "');") or die (mysql_error());
?>

Para validar a data você pode usar um JavaSCript ou usa a função:
checkdate: http://www.php.net/checkdate



Um dos problemas é que vc está chamando o banco de dados 2 vezes 1 só basta ....
Mas assim ele da erro am algum lugar escreve algo a mais ... tente simplificar ...

<?php 
mysql_connect("localhost", "root", "vertrigo") or die (mysql_error());
mysql_select_db("agenda") or die(mysql_error());
  
mysql_query("insert into `contato` (`data`, `descricao`)
values ('" . $_POST["data"].  "','" . $_POST["descricao"] . "');") or die (mysql_error());
?>

Para validar a data você pode usar um JavaSCript ou usa a função:
checkdate: http://www.php.net/checkdate



bom dia amigo, agora esta gravando, porem as datas nao estao no formado dd/mm/yyyy, como eu faço isso? sou novato em php.
estava usando a funcao
[code=auto:0]
function gravaData ($data) {
if ($data != '') {
return (substr($data,3,2).'/'.substr($data,0,2).'/'.substr($data,6,4));
}
else { return ''; }
}
[code/]

mas eu tbm nao sei como faço para chama-la e gravar. alguem poderia me ajudar?

obrigada

#4 hexadecimal

hexadecimal

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Masculino
  • Localidade:Fortaleza-CE

Posted 09/11/2007, 10:56

Cara...
dependendo do q vc vai fazer, naum precisa nem usar php... no proprio mySql da pra fazer o tratamento da data:

SELECT *,DATE_FORMAT(data,'%d/%m/%Y') as data FROM  tabela

isso ai, so vai acontecer se a tua data estiver no formato UNIX(YYYY-MM-AA)

vê ai se da certo, e depois responde aqui :rolleyes:

Edição feita por: hexadecimal, 09/11/2007, 10:57.


#5 kklj

kklj

    12 Horas

  • Usuários
  • 135 posts
  • Sexo:Masculino
  • Localidade:juiz de fora

Posted 09/11/2007, 11:09

Cara...
dependendo do q vc vai fazer, naum precisa nem usar php... no proprio mySql da pra fazer o tratamento da data:

SELECT *,DATE_FORMAT(data,'%d/%m/%Y') as data FROM  tabela

isso ai, so vai acontecer se a tua data estiver no formato UNIX(YYYY-MM-AA)

vê ai se da certo, e depois responde aqui :rolleyes:



é o seguinte, tenho um formulario e onde o usuario ira digitar uma data, e uma descricao, tipo uma agenda, tenho q pegar a data q o usuario digitou e gravar no mysql, mas antes tenho q fazer um tratamento nao? data no mysql é do tipo yyyy-mm-aa e o usuario provavelmente digitara dd/mm/aaaa. depois terei q validar a mesma.

obrigada

#6 hexadecimal

hexadecimal

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Masculino
  • Localidade:Fortaleza-CE

Posted 09/11/2007, 11:29

function trataData($data){
		$dataTratada = explode("/",$data);
		echo $dataTratada[2]."-".$dataTratada[1]."-".$dataTratada[0];
	}
	
		//dentro da função, vc coloca o $_POST com o valor da data
	echo trataData("09/11/2007");

vê se essa função serve pra ti...

#7 Guilherme Luiz

Guilherme Luiz

    Normal

  • Usuários
  • 78 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 09/11/2007, 17:52

eu acho mais facil se for assim pro usuario digitar a data vc criar 3 campos no seu bd

dia
mes
ano

e ai nas cx. de texto vc tbm fará tres onde uma vai o dia outro o mes e outro o ano !
ai é só dar um INSERT ou um UPDATE dependendo da situação e pronto !!


todu mundo fica feliz !!
mt mais facil e pratico !!
sem códigos "mirabolantes" rsrsrs
just its a lie when the truth is found !

#8 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 09/11/2007, 18:32

Até o dia em que você tiver que trabalhar com essa data (subtrair, por exemplo)... aí sim você vai ver o que é um código mirabolante!
Na hora de gravar pode até ser mais simples... mas todo o resto fica muito mais complicado.
O campo tipo DATE foi criado para guardar datas... fazer diferente é reinventar a roda.
Acho que a função do hexadecimal resolve o problema (y).

[] Rafael :boxing:

#9 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 09/11/2007, 20:40

Que eu saiba o MySQL aceita datas pt-BR em campo DATE, parece que para isso só precisa usar traços ao invés de barras. Que eu me lembre é isto, não tenho certeza. Neste caso, bastaria fazer um replace e já era.

Outras soluções:

$data = vsprintf('%3$04d-%2$02d-%1$02d', sscanf($data, '%d/%d/%d'));
$data = preg_replace('#(\d{2})/(\d{2})/(\d{4})#', '\3-\2-\1', $data);
$data = implode('-', array_reverse(explode('/', $data)));
[]’s :DAté mais

#10 Guilherme Luiz

Guilherme Luiz

    Normal

  • Usuários
  • 78 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 10/11/2007, 10:35

ah isso é fato...

mas se quiser fazer algo bem simples esse seria o jeito mais facil
just its a lie when the truth is found !

#11 kklj

kklj

    12 Horas

  • Usuários
  • 135 posts
  • Sexo:Masculino
  • Localidade:juiz de fora

Posted 10/11/2007, 16:08

ah isso é fato...

mas se quiser fazer algo bem simples esse seria o jeito mais facil



amigos a conversao deu certo, mas nao grava a data no mysql, minha sql mostra q a data ja esta no padrao americano mas nao grava, o q fazer?

se eu colocar os tres campos, um para o dia, um para o mes e outro para o ano, como faço para mostra depois a data pro usuario?


obrigado

#12 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 10/11/2007, 16:44

Foi o que eu falei... fica fácil na hora de gravar...
Mas TODO o resto fica muito mais complicado...
Confia no que eu tô te falando, use um único campo do tipo DATE.

#13 kklj

kklj

    12 Horas

  • Usuários
  • 135 posts
  • Sexo:Masculino
  • Localidade:juiz de fora

Posted 10/11/2007, 17:31

Foi o que eu falei... fica fácil na hora de gravar...
Mas TODO o resto fica muito mais complicado...
Confia no que eu tô te falando, use um único campo do tipo DATE.



ae amigo eu fiz o q vc falou agora esta gravando. usei o campo date. mas agora para eu exibir a data no padrao brasileiro terei q converter para esse formato ou posso so dar um select?

#14 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 10/11/2007, 17:41

Use campo DATETIME ... é bem melhor

É mal costume salvar a data em português direto no banco de dados.
O certo é sempre classificar ela como YYYY-MM-DD H:I:S

Sò usar uma função para passar no formato brasileiro ou rodar a função DATE_FORMAT() no banco de dados para converter a data.

Só olhar na seção de mysql que achará uns exemplos de DATE_FORMAT() ;)

[]'s

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br


#15 Guilherme Luiz

Guilherme Luiz

    Normal

  • Usuários
  • 78 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 10/11/2007, 18:11

claro que usando as funções de data que o mysql fornece fica muito mais facil e amplo em quesito de possibilidades com oq vc poderá fazer com a data

mas caso vc grave em tres campos separados você na hora de imprimi-los você iria fazer uma consulta normal no sql pra mostrar os 3 campos tipo

$x = mysql_fetch_array($sql);
echo "$x[dia] / $x[mes] / $x[ano]";

esse seria um jeitinho brasileiro, mas eh claro, não deixe de tentar usar as funções criadas para esse tipo de situação !
just its a lie when the truth is found !




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq