Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nadoweb

Banco de Dados não inseri valor de date

Recommended Posts

O problema deve ser bem simples so que sou novato em PHP e MySQL

 

tenho o form com os campos hidden que pegam os valores de data e hora automaticamente:

 

<?php

 

$data = date("Y-m-d");

$hora = date("H:i:s");

$novadata = substr($data,8,2) . "/" .substr($data,5,2) . "/" .substr($data,0,4);

$novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min";

 

echo "<h1>Sistema de Cadastro de Notícias</h1>\n";

echo "<hr><br>\n";

echo "<form action=\"inserir.php\" method=\"post\"> \n";

echo "Nome: <input name=\"nome\" type=\"text\" size=\"30\"> *<br>\n";

echo "Sobrenome: <input name=\"sobrenome\" type=\"text\" size=\"30\"> *<br>\n";

echo "Cidade: <input name=\"cidade\" type=\"text\" size=\"30\"> *<br>\n";

echo "Estado: <input name=\"estado\" type=\"text\" size=\"5\"> *<br>\n";

echo "E-mail: <input name=\"email\" type=\"text\" size=\"30\"> *<br>\n";

echo "<input nome=\"data\" type=\"hidden\" value=\"$data\">\n";

echo "<input nome=\"hora\" type=\"hidden\" value=\"$hora\">\n";

echo "Título do texto: <input name=\"titulo\" type=\"text\" size=\"30\"> *<br>\n";

echo "Subtitulo do texto: <textarea name=\"subtitulo\" rows=\"5\" cols=\"30\"></textarea> *<br>\n";

echo "Texto: <textarea name=\"texto\" rows=\"10\" cols=\"30\"></textarea> *<br>\n";

echo "<input type=\"submit\" value=\"Cadastrar\">\n";

echo "</form>\n";

echo "<br><hr>\n";

echo "<i>Campos marcados <b>*</b> são obrigatórios no cadastro.<br /></i>\n";

echo "<b>Observação</b>: Será inserida no seu cadastro a data atual, bem como a hora atual do cadastro<br />\n";

echo "Data: $novadata - Hora: $novahora<br />\n";

?>

 

Mais a estrutura do meu Banco de Dados está assim (nos campos em questão):

 

data date NOT NULL DEFAULT 0000-00-00

hora time NOT NULL DEFAULT 00:00:00

 

Toda vez que submeto o form ele inseri os dados normalmente em todos os campos menos nestes.

 

O que pode está acontecendo

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você ta cadastrando as variaveis

 

 

$data = date("Y-m-d");$hora = date("H:i:s");

ou

 

$novadata = substr($data,8,2) . "/" .substr($data,5,2) . "/" .substr($data,0,4);$novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min";
?

 

Porque as variaveis $data e $hora estão corretas para inclusão, ao meu ver é claro..

Compartilhar este post


Link para o post
Compartilhar em outros sites

sublyer, ele tá cadastrando a $data e $hora... está ali nos inputs...pode ser na hora que você pegar esses dados e inseri no banco.. e não nos dados do formulário.. confira na hora da inserção.. se não achar posta aih...

Compartilhar este post


Link para o post
Compartilhar em outros sites

sublyer, ele tá cadastrando a $data e $hora... está ali nos inputs...pode ser na hora que você pegar esses dados e inseri no banco.. e não nos dados do formulário.. confira na hora da inserção.. se não achar posta aih...

Segeu abaixo o arquivo!<?php//Vamos definir as variáveis de data e hora para inserção no banco de dados//Agora, com as variáveis de data e hora criadas, vamos criar uma variável especial para a querie sql$sql = "INSERT INTO noticias (nome, sobrenome, cidade, estado, email, data, hora, titulo, subtitulo ,texto) VALUES ('$nome','$sobrenome','$cidade','$estado','$email','$data','$hora','$titulo','$subtitulo','$texto')";// Agora é hora de conectar ao MySQL$conexao = mysql_connect("localhost", "root", "root") or die("Configuração de Banco de Dados errada!");//Selecionado o Banco de Dados$db = mysql_select_db("root") or die("Banco de Dados inexistente!");//Inserindo os dados$sql = mysql_query($sql) or die("Houve erro na gravação dos dados, por favor, clique em voltar e verifique os campos obrigatórios!");echo "<h1>Cadastro efetuado com sucesso!</h1>";?>Espero que você possa me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então seu sistema se resume em ter uma data e hora nos campos do formulário e então ao dar um submit no formulário ele carrega a página "inserir.php" e grava no banco de dados a data e hora correto.Pense comigo, se você está cadastrando a hora local no banco de dados, porque recuperar estas datas em um formulário.Insere isto na página inserir.php $data = date("Y-m-d");$hora = date("H:i:s");$novadata = substr($data,8,2) . "/" .substr($data,5,2) . "/" .substr($data,0,4);$novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min";assim você não precisa recuperar as variaveis do formulário correto?Tenta isso.. caso der problema posta ae.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No banco de dados o campo DATE tem o padrão 0000-00-00, então você deve passar dessa mesma forma para o banco de dados.Você está atribuindo de forma errada o valor da variável $data.Não pode fazer assim date(Y-m-d); Não tem esses traçinhos.Coloque $data = date(Ymd); depois você trabalha com a função substr().Veja se é isso. B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

pow fsphp, você acabou de se contradizer.. falou que o formato é 0000-00-00 e daí disse que não tem os hífens?? (aliás, tracinho é com C, e aquilo ali é hífen B) )eu sempre insiro dessa forma Y-m-d... sempre funcionou! acabei de testar aqui.. desse jeito (Ymd) também funciona... mas do outro jeito não está errado de modo algum!e realmente você não precisa colocar a data/hora nos campos de texto... e você também pode salvá-los em um único campo.. depois seleciona do jeito que quiser...coloque assim pra ver... $sql = "INSERT INTO noticias (nome, sobrenome, cidade, estado, email, data, hora, titulo, subtitulo ,texto) VALUES ('$nome','$sobrenome','$cidade','$estado','$email','".date('Y-m-d')."','".date('H:i:s')."','$titulo','$subtitulo','$texto')";

Compartilhar este post


Link para o post
Compartilhar em outros sites

vetih, o que eu quis dizer é que na funçào não tem os hífens (falei traçinho pela correria). date(Y-m-d); na função, somente tem no lançamento do db. Então não há contradição.Testei aqui com hífens como você costuma fazer e não mostrou a data. Não sei se pelo fato de estar usando o php5 ele deu diferença.Pelo que sei, a forma correta de inserir no db é 0000-00-00. Pode ser que tenha outro jeito mas eu não faço assim. Então, tentando ajudar sugeri fazer da forma como uso e que funciona perfeitamente. Nós concordamos que o problema "deve" estar na hora de inserir no db (voc6e falou também). Então, cabe ao nadoweb encontrar a solução a patir do que sugerirmos a ele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vetih, o que eu quis dizer é que na funçào não tem os hífens (falei traçinho pela correria). date(Y-m-d); na função, somente tem no lançamento do db. Então não há contradição.Testei aqui com hífens como você costuma fazer e não mostrou a data. Não sei se pelo fato de estar usando o php5 ele deu diferença.Pelo que sei, a forma correta de inserir no db é 0000-00-00. Pode ser que tenha outro jeito mas eu não faço assim. Então, tentando ajudar sugeri fazer da forma como uso e que funciona perfeitamente. Nós concordamos que o problema "deve" estar na hora de inserir no db (voc6e falou também). Então, cabe ao nadoweb encontrar a solução a patir do que sugerirmos a ele.

Valeu galera! consegui com a dica do nosso amigo Yetih, mudei os campos conforme no inserir para: '".date('Y-m-d')."','".date('H:i:s')."' e deu certinho. Valeu mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.