Jump to content
Sign in to follow this  
alexmestre

Nao consigo inserir a data na base de dados

Recommended Posts

alexmestre

olá malta

estou tento um problemazinho no php

eu tenho isto:

	$data_post = date("d/m/Y");  

que guarda na variavel $data_post a data

mas quando faço o sql para inserir na base de dados nao insere

aparece os campos em branco

o sql é este

 $sql = "INSERT INTO filmes (titulo, genero, data_post, sinopse, ano, link, imagem) VALUES ('$titulo', '$genero', '$data_post', '$sinopse', '$ano', '$link', '$ficheiro')"; 

agradeço a ajuda e a atensao prestada

cumps

Share this post


Link to post
Share on other sites
KTachyon

tira o $ do sql e ja deve funcionar. Aconselho te mesmo assim a usar antes o mysql_query() em vez do sql

http://pt2.php.net/manual/en/function.mysql-query.php

Penso que ele estará a fazer:

mysql_query($sql);

Relativamente à dúvida, faz um print do $sql:

echo "<p>".$sql."</p>";


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
alexmestre

exactamente KTachyon

eu tou a fazer isto

if(empty($retorno)){

							//cria uma query Mysql
							$sql = "INSERT INTO filmes (titulo, genero, data_post, sinopse, ano, link, imagem) VALUES ('$titulo', '$genero', '$data_post', '$sinopse', '$ano', '$link', '$ficheiro')";

							$query = mysql_query($sql);

								if($query === true){
									$sucesso = '<span  class="yes">A pagina ira ser redirecionada em poucos segundos, Obrigado!</span>';
									echo $sucesso;		
								}else{ 
								$retorno = '<span class="no">Nao foi possivel inserir o filme, Tente novamente!</span>';
								}
							}else{
								echo $retorno;

							}

Share this post


Link to post
Share on other sites
alexmestre

fiz o print apos o $sql e aparece me os dados e a data certa

INSERT INTO filmes (titulo, genero, data_post, sinopse, ano, link, imagem) VALUES ('mundfo', 'bifub', '20/03/2011', 'ksvdb', '1231', 'bskdvbadkva', 'uploads/1300636666.png')

e no campo ano  também não me aparece

Share this post


Link to post
Share on other sites
KTachyon

lool acho que não. Penso que fui explicito usar mysql_query em vez do sql

Hmm? Não percebi. O que eu estava a dizer é que ele só estava a mostrar a variável que tinha a query ($sql), não a função para executar a query na base de dados. Daí que assumi que ele estava a utilizar a função logo a seguir à query (que já tá confirmado ;)). Até porque nem tenho conhecimento de nenhuma função, de nome sql.

Tenta, em vez de '$data_post', colocar:

... , TO_DATE('$data_post', 'DD/MM/YYYY'),...

EDIT: Se ano é um valor numérico, não deves ter as ' '.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
alexmestre

nao da

com isso o sql nao funciona nem aparece mensagem de erro

nao entendo ;)

Share this post


Link to post
Share on other sites
fabiomiguel3

se usares sql funciona na mesma.

deverias ter feito isto

sql = "INSERT INTO filmes (titulo, genero, data_post, sinopse, ano, link, imagem) VALUES ('$titulo', '$genero', '$data_post', '$sinopse', '$ano', '$link', '$ficheiro')";

quando eu te aconselhei a usar o mysql_query deverias ter feito isto

mysql_query("INSERT INTO filmes (titulo, genero, data_post, sinopse, ano, link, imagem) VALUES ('$titulo', '$genero', '$data_post', '$sinopse', '$ano', '$link', '$ficheiro')");

Agora para verificar se a query foi bem sucedida ou não:

mysql_query("INSERT INTO filmes (titulo, genero, data_post, sinopse, ano, link, imagem) VALUES ('$titulo', '$genero', '$data_post', '$sinopse', '$ano', '$link', '$ficheiro')") or die('Não foi possível inserir o filme');

echo "inserido com sucesso";

Share this post


Link to post
Share on other sites
fabiomiguel3

onde tem $data_post põe .$data_post. a ver se dá

assim:

mysql_query("INSERT INTO filmes (titulo, genero, data_post, sinopse, ano, link, imagem) VALUES ('$titulo', '$genero', '.$data_post.', '$sinopse', '$ano', '$link', '$ficheiro')") or die('Não foi possível inserir o filme');

Share this post


Link to post
Share on other sites
alexmestre

agora diz assim

  if(empty($retorno)){

							//cria uma query Mysql
							$query = mysql_query("INSERT INTO filmes (titulo, genero, data_post, sinopse, ano, link, imagem) VALUES ('$titulo', '$genero', '$data_post', '$sinopse', '$ano', '$link', '$ficheiro')") or die('<span class="no">Não foi possível inserir o filme</span>');

								if($query === true){
									$sucesso = '<span  class="yes">A pagina ira ser redirecionada em poucos segundos, Obrigado!</span>';
									echo $sucesso;		
								}
							}else{
								echo $retorno;

							}

e ja aparece o ano

mas nao a data

Share this post


Link to post
Share on other sites
fabiomiguel3

agora diz assim

  if(empty($retorno)){

							//cria uma query Mysql
							$query = mysql_query("INSERT INTO filmes (titulo, genero, data_post, sinopse, ano, link, imagem) VALUES ('$titulo', '$genero', '$data_post', '$sinopse', '$ano', '$link', '$ficheiro')") or die('<span class="no">Não foi possível inserir o filme</span>');

								if($query === true){
									$sucesso = '<span  class="yes">A pagina ira ser redirecionada em poucos segundos, Obrigado!</span>';
									echo $sucesso;		
								}
							}else{
								echo $retorno;

							}

e ja aparece o ano

mas nao a data

Tu aí já não precisas do if query === true porque o die para o script e so executa o resto se for true

Share this post


Link to post
Share on other sites
KTachyon

Ó fábio, tanta besteira. Para verificar se a transacção foi bem sucedida tens que verificar a variável que é retornada pela função mysql_query(), ou ver o resultado da função mysql_error(). Não é só fazer um echo.

E, só utilizas os '.' para concatenar strings. Como a string é iniciada por " e não por ', não necessitas de colocar . naquela zona. No máximo podes fazer:

"INSERT INTO filmes (titulo, genero, data_post, sinopse, ano, link, imagem) VALUES ('$titulo', '$genero', '".$data_post."', '$sinopse', '$ano', '$link', '$ficheiro')"

E não percebo porque é que decides colocar a query toda dentro do mysql_query() em vez de a deixares na variável e chamares a função com a variável como argumento:

$result = mysql_query($sql);


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
fabiomiguel3

Ó fábio, tanta besteira. Para verificar se a transacção foi bem sucedida tens que verificar a variável que é retornada pela função mysql_query(), ou ver o resultado da função mysql_error(). Não é só fazer um echo.

E, só utilizas os '.' para concatenar strings. Como a string é iniciada por " e não por ', não necessitas de colocar . naquela zona. No máximo podes fazer:

"INSERT INTO filmes (titulo, genero, data_post, sinopse, ano, link, imagem) VALUES ('$titulo', '$genero', '".$data_post."', '$sinopse', '$ano', '$link', '$ficheiro')"

E não percebo porque é que decides colocar a query toda dentro do mysql_query() em vez de a deixares na variável e chamares a função com a variável como argumento:

$result = mysql_query($sql);

Há varias maneiras de matar um coelho. Com o PHP é igual. Cada um tem a sua maneira de programar. Podia feito como tas a dizer . eu tirei o mysql_error para dar uma mensagem user friendly e não o erro do mysql.

Share this post


Link to post
Share on other sites
KTachyon

mysql_query("INSERT INTO filmes (titulo, genero, data_post, sinopse, ano, link, imagem) VALUES ('$titulo', '$genero', '$data_post', '$sinopse', '$ano', '$link', '$ficheiro')") or die('Não foi possível inserir o filme');

echo "inserido com sucesso";

Realmente, não vi o die(), daí que tens razão neste ponto. Mas o meu erro foi causado pelo facto de tu colocares a query toda no mysql_query, em vez de a colocares uma variável. Torna-se mais fácil de ler e de se fazer a manutenção.

E, podes verificar o mysql_error() sem mostrar o erro ao utilizador. Aliás, o objectivo nem sequer é mostrar um erro ao utilizador, é sempre evitar que eles tenham que ser mostrados. Em ambiente de produção, se os dados são para ser inseridos numa base de dados devem ser validados antes da inserção e não validados na inserção. Daí que os erros que existem, em desenvolvimento, são para serem vistos apenas pelo programador, e daí a utilização do mysql_error() em vez do die().


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
fabiomiguel3

Realmente, não vi o die(), daí que tens razão neste ponto. Mas o meu erro foi causado pelo facto de tu colocares a query toda no mysql_query, em vez de a colocares uma variável. Torna-se mais fácil de ler e de se fazer a manutenção.

E, podes verificar o mysql_error() sem mostrar o erro ao utilizador. Aliás, o objectivo nem sequer é mostrar um erro ao utilizador, é sempre evitar que eles tenham que ser mostrados. Em ambiente de produção, se os dados são para ser inseridos numa base de dados devem ser validados antes da inserção e não validados na inserção. Daí que os erros que existem, em desenvolvimento, são para serem vistos apenas pelo programador, e daí a utilização do mysql_error() em vez do die().

sim isso eu sei. A empresa onde tenho o hosting não mostra erros nenhuns. guarda tudo em logs

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.