Ir para conteúdo
Fórum Script Brasil
  • 0

Dados Não São Gravados No Bd


rzilnet

Pergunta

Preciso de ajuda.

Pagina do form = fale.html

campo1 = nome

campo 2 = email

campo 3 = subject

campo 4 = mensagem

Página de gravação = grava_msg.php

página final = exibe_msg.php

Ocorre o seguinte:

O formulário, com os campos todos preenchidos corretamente, é enviado, processado, porém, retorna a página exibe_msg.php (http://www..../exibe_msg.php?ok=2&tipo_msg=I) dizendo que a mensagem não foi enviada.

Se a mensagem não foi enviada é porque não foi gravada no BD.

Ai vai o código para ver se alguém me ajuda a localizar o erro:

<?php
global $nome;
global $email;
global $subject;
global $mesage;
//
$nome = trim($nome);
$email = trim($email);
$subject = trim($subject);
$mesage = trim($mesage);


$conec = mysql_connect ("localhost", "usuario", "senha") or die ("Falha na conexão com o banco de dados");
mysql_select_db ("usuario"); 
$declar - "INSERT into mesages values ('$nome', '$email', '$subject', '$mesage')";

$tipo_msg = "I";
if (mysql_db_query ("usuario", $declar, $conec)) {
$ok = 1;
header ("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
}
else {
$ok = 2;
header ("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
}

?>

A mensagem ok 1 = com sucesso

a mensagem 0k 2 = não enviada.

Link para o comentário
Compartilhar em outros sites

25 respostass a esta questão

Posts Recomendados

  • 0

Agora o script ficou assim:

<?php
global $nome;
global $email;
global $subject;
global $mesage;
//
$nome = trim($nome);
$email = trim($email);
$subject = trim($subject);
$mesage = trim($mesage);

$conec = mysql_connect ("localhost", "USUARIO", "SENHA") or die ("Falha na conexão com o banco de dados" . mysql_error());
mysql_select_db ("USUARIO"); 
$declar - "INSERT into mesages values ('$nome', '$email', '$subject', '$mesage')";

$tipo_msg = "I";
if (mysql_db_query ("USUARIO", $declar, $conec) . mysql_error()) {
$ok = 1;
header ("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
}
else {
$ok = 2;
header ("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
}

?>

E a página EXIBE_MENSAGEM.PHP retornou DADOS INCLUÍDOS COM SUCESSO

//(http://www..../exibe_mensagem.php?ok=1&tipo_msg=I)

A única coisa modificada foi, justamente o mysql_error() - não sei se tem algo a ver. Acho até que não foi em virtude disso, mas....

Mesmo assim, fico muito grato pelas indicações dos amigos.

Rui Zilnet

Link para o comentário
Compartilhar em outros sites

  • 0

Estou começando a não entender mais nada. Passeio ontem e hoje o dia inteiro quebrando a cabeça, quando penso que o problema está resolvido...

Apesar de estar retornando a página final com a mensagem de sucesso, os dados continuaram não sendo inseridos no banco.

Então, fiz as seguintes alterações no script:

passei a resgatar os dados do form assim:

$nome  = $_POST["nome"];
$email  = $_POST("email");
$assunto                 = $_POST("assunto");
$mesage  = $_POST("mesage");
e o insert ficou assim:
$declar - "INSERT into mesages (nome, email, assunto, mesage) values ('$nome', '$email', '$assunto', '$mesage')";

a linha $assunto que originalmente era $subject, também foi alterada para assunto no form post.

Depois que fiz essa alteração, retorna a seguinte mensagem de erro:

Fatal error: Call to undefined function: array() in /home/rzilnet/public_html/grava_msg.php on line 3

A linha 3 seria a do $email.

O q q eu faço, estou ficando perdido...

Link para o comentário
Compartilhar em outros sites

  • 0

$nome  = $_POST["nome"];

$email  = $_POST("email");

$assunto = $_POST("assunto");

$mesage  = $_POST("mesage");

Quanto ao flood, rzielnet, quando a última mensagem do tópico for sua, edite-a e não poste uma nova, ok?

Principalmente pra dizer coisas como "Ninguém sabe?", "Estou ficando desesperado","Por favor, é urgente" e etc... No caso de você ter encontrado um novo erro no seu código não tem problema algum, mas 3 mensagens seguidas é exagero... manera aí... rolleyes.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Quero pedir desculpas por duas vezes, primeiro porque ontem eu estava num acúmulo de estresse muito grande. Há três dias que estava tentando, e nada. Mas, logo depois que fiz o post percebi o engano que havia cometido. Segundo por ter floodado.

Não vou floodar mais, prometo!

Pode fechar esta questão.

Link para o comentário
Compartilhar em outros sites

  • 0

Ainda não consegui resolver completamente, mas tou tentando.

Não estou conseguindo visualizar erro algum de minha parte.

Antes o script tava rodando, retornando a pagina de sucesso, mas os dados não eram inseridos.

Fiz mais algumas alterações e, agora, retorna a mensagem dizendo que os dados não foram inseridos (o que está correto), justificando que meu script não está totalmente errado. Só não estou conseguindo localizar o erro.

Meu código, agora, está assim:

Na linha onde estava

if (mysql_db_query ("USUARIO", $declar, $conec) . mysql_error()) {

foi substituída por:

if (mysql_db_query ($conec,$declar))

{ echo "erro";

Então, o código completo ficou assim:

<?php
$nome  = $_POST["nome"];
$email  = $_POST["email"];
$subject	= $_POST["subject"];
$mesage  = $_POST["mesage"];

//$nome = trim($nome);
//$email = trim($email);
//$subject = trim($subject);
//$mesage = trim($mesage);

$conec = mysql_connect ("localhost", "usuario", "senha") or die ("Falha na conexão com o banco de dados" . mysql_error());
mysql_select_db ("usuario"); 
$declar - "INSERT into mesages (nome, email, subject, mesage) values ('$nome', '$email', '$subject', '$mesage')";

$tipo_msg = "I";

if (mysql_db_query ($conec,$declar))
{ echo "erro"; 

$ok = 1;
header ("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
}
else {
$ok = 2;
header ("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
}

?>

Só por questão de esclarecimento:

Estou consultando vários tutoriais, e todos me levam ao mesmo caminho, que é isso que estou fazendo e montrando aí em cima.

Link para o comentário
Compartilhar em outros sites

  • 0

Aí é que dá pau mesmo.

Retornando a mensagem:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/xxxx/xxxxx/grava_msg.php on line 18

Warning: Cannot modify header information - headers already sent by (output started at /home/xxxx/xxxxx/grava_msg.php:18) in /home/xxxx/xxxxx/grava_msg.php on line 26

Link para o comentário
Compartilhar em outros sites

  • 0

REPARE NAS ASPAS DUPLAS,, NO $_POST["$VAR"]... USE ASPAS SIMPLES $_POST['$VAR']... ERRO NA SINTAXE,,, MYSQL_QUERY($DADOS,$CONEXAO); É USADO PARA FAZER A SOLICITAÇÃO DOS COMANDOS NA BANCO DE DADOS,,,,,..... COMO UM SE TIPO,, IF(! MYSQL_QUERY($DADOS,$CONEXAO) { ECHO "ERRO NA INCLUSAO " ;

} ELSE { ECHO "DEU CERTO ". }

PRESTE ATENÇÃO NA SINTAXE.

Link para o comentário
Compartilhar em outros sites

  • 0

Problema resolvido.

Vou colocar o resultado aqui, pois, poderá ser útil a alguém que tenha as mesmas dúvidas que eu. Desculpem-me a chateação, mas foi um bom aprendizado. Valeu a pena.

Eis o código que está funcionando:

<?php
$nome  = $_POST["nome"];
$email  = $_POST["email"];
$subject	= $_POST["subject"];
$mesage  = $_POST["mesage"];

//$nome = trim($nome);
//$email = trim($email);
//$subject = trim($subject);
//$mesage = trim($mesage);

$conec = mysql_connect ("localhost", "usuario", "senha") or die ("Falha na conexão com o banco de dados" . mysql_error());

mysql_select_db ("usuario",$conec); 

$declar = "INSERT into mesages (nome, email, subject, mesage) values ('$nome', '$email', '$subject', '$mesage')";

$tipo_msg = "I";

$resultado=mysql_query ($declar,$conec); // linha alterada

if  ($resultado) // linha incluída
{ 

$ok = 1;
header ("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
}
else {
$ok = 2;

header ("Location: exibe_mensagem.php?ok=$ok&tipo_msg=$tipo_msg");
}

?>

Se quizerem conferir é só acessar:

http://www.riobr.com.br

e clicar no link Fale Conosco.

Muito obrigado a todos que colaboraram a resolver este problema.

Estou Feliz por ter conseguido ultrapassar esta barreira!

Pode fechar o tópico!

Rui Zilnet

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, desculpa, mas acho que esse seu código aí não vai funcionar não.

Porque a variável $resultado sempre vai ter alguma coisa. Ela contém o resource da Query.

Você precisa usar uma das seguintes funções pra realmente retornar o resultado da query (ou saber se o resultado veio vazio):

· http://br.php.net/function.mysql_fecth_row

· http://br.php.net/function.mysql_fetch_assoc

· http://br.php.net/function.mysql_fetch_array

Pense na seguinte lógica: se você conseguir exibir os resultados na página, você pode checar se eles estão vazios.

Então altera o seu código aí e manda pra gente caso dê algum erro.. smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Pois é, mas está funcionando perfeitamente; É só conferir:

http://www.riobr.com.br e clicar no link Fale Conosco (mande uma mensagem que irei reportar o que você escreveu.

Os dados enviados pelo formulário estão chegando corretamente na minha base.

Já consegui até acertar o script de consulta.

Link para o comentário
Compartilhar em outros sites

  • 0

Entre nesse link que você vai saber o que fazer:

· http://scriptbrasil.com.br/forum/index.php...ndpost&p=212520

E, pelo que você sugeriu pra tentar corrigir o erro, acho melhor você dar mais uma estudada nessa parte de banco de dados. Acho que você não está nem sabendo o que as funções estão fazendo... mellow.gif

· http://br.php.net/mysql

Link para o comentário
Compartilhar em outros sites

  • 0

Ai tenta isso

<?php
$nome2  = $nome;
$email2  = $email;
$subject2 = $subject;
$mesage2  = $mesage;

 mysql_connect ("localhost", "usuario", "senha") or die ("Falha na conexão com o banco de dados" . mysql_error());

mysql_select_db ("usuario"); 

$declar = "INSERT into mesages (nome, email, subject, mesage) values ('$nome2', '$email2', '$subject2', '$mesage2')";

$tipo_msg = "I";

mysql_query ($declar); 

?>

Cara faz isso primeiro e ve se agora vai inserir os dados depois vemos o resto do codigo que tinha

Link para o comentário
Compartilhar em outros sites

  • 0

O código está funcionando.

Fiz um teste, forçando erro e os dados não foram gravados na base, retornando a mensagem de erro.

Pode fechar o tópico.

Mais uma vez, fico muito grato pela atenção dos companheiros.

Valeu muito!

Se eu puder retribuir de alguma forma, estou por aqui.

Abçs,

Rui Zilnet

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...