Jump to content

Recommended Posts

Posted

boas

estou aqui a ter problemas ao fazer um insert na base de dados.

eu uso esta funçao para excutar querys:

function execute_query($query)
{
include "server_info.php";

    if(!($id = mysql_connect($server, $username, $password)))
{
        return 0;
    }

    if(mysql_select_db($database))
{
	if(mysql_query($query))
	{
            mysql_close();
            return 1;
        }
        else
	{
            mysql_close();
            return 0;
        }
    }
    else 
{
        mysql_close();
        return 0;
    }
}

depois na pagina eu faço isto:

session_start();

include "functions/server_info.php";
include "functions/execute_query.php";

if(isset($_POST['enviar']))
{
if(!($id = mysql_connect($server, $username, $password))) 
{
       return 0;
    }

    if (mysql_select_db($database, $id))
{
	$nome = mysql_real_escape_string($_POST['nome']);
	$telefone = mysql_real_escape_string($_POST['telefone']);
	$email = mysql_real_escape_string($_POST['email']);
	$msg = mysql_real_escape_string($_POST['mensagem']);

	if(!empty($nome) || !empty($telefone) || !empty($email) || !empty($msg))
	{
		$data = date("y-m-d");
		$id = $_SESSION["id"];
		$query = "INSERT INTO pedidos_maquinas(id_maquina, nome, telefone, email, mensagem, data) VALUES('$id', '$nome', '$telefone', '$email', '$msg', '$data')";
		if(execute_query($query))
		{
			$warning = "<p><font color='green'>Pedido enviado</font></p>";
		}
		else
		{
			$warning = "<p><font color='red'>Error $query</font></p>";
                                //vai sempre para a esta linha
		}	
	}
	else
	{
		$warning = "<p><font color='red'>Algum dos campos esta vazio</font></p>";
	}
}
}

eu fiz um echo á query para ver se estava bem feita. sera que o prob esta na minha funçao execute_query() ? estou aqui a  :wallbash: mas nao insere na base de dados

cumps.

Posted

Muda a função para isto:

function execute_query($query)
{
               return mysql_query($query);
}

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

Embora essa função trabalhe mesmo, aconselho-te fortemente a não usa-la.

Estás a fazer uma ligação por cada query que fazes, e estás a incluir por cada vez que a fazes um ficheiro externo.

Essa função é uma ideia muito má. Faz uma ligação inicial, e fecha-a no fim.

Quanto ao problema, que erro está a ser retornado?

I intend to live forever. So far so good.

Posted
                        if(execute_query($query))
                        {
                                $warning = "<p><font color='green'>Pedido enviado</font></p>";
                        }
                        else
                        {
                                $warning = "<p><font color='red'>Error $query</font></p>";
                                //vai sempre para a esta linha
                        }     

eu fiz um if no execute_query, e ele retorna-me o que esta dentro do else... como eu tenho no codigo.

#the loser

desculpa, nao percebi. estas a dizer para eu incluir uma vez apenas o include ao server_info.php (sao as variaveis de ligaçao ao localhost), certo?

desde ja obrigado pelas ajudas...  😕

Posted

Não, estou a dizer para, em vez de fazeres 5 ligações diferentes ao teu RDBMS numa página com 5 queries, fazeres só uma.

Como o fazes é irrelevante (poderia ser feito com uma ligação inicial).

EDIT:

Also, convém dares-nos um erro concreto.

mysql_query($query) or die(mysql_error());

I intend to live forever. So far so good.

Posted

n é por nada, mas n estas a fazer include do mesmo ficheiro duas vezes? o ficheiro server_info.php é chamado na função execute_query e no teu ficheiro principal, n sei o que tem la dentro mas se tiver funções corre mal, e já agora substitui a tua query por isto

<?php
$query = "INSERT INTO pedidos_maquinas(nome, telefone, email, mensagem, data) VALUES( 'teste', '211234567', 'teste@exemplo.pt', 'lorem ipsum', '2009-06-12')";
?>

Acho que o stress esta em declarares a variável id duas vezes usa por exemplo $p_id

Fica Bem

O que não tem solução, solucionado esta...

Posted

segui a sugestao do the loser e fiz mysql_query($query) or die(mysql_error()) e deu-me o seguinte:

Cannot add or update a child row: a foreign key constraint fails (`gpsi50612_my269418/pedidos_maquinas`, CONSTRAINT `pedidos_maquinas_ibfk_1` FOREIGN KEY (`id_maquina`) REFERENCES `pedidos_maquinas` (`id_pedido`) ON DELETE CASCADE)

e eu acho que ja sei qual é o problema

na minha tabela tenho dois ids que sao o id do pedido e o id da maquina, em que o id do produto tem uma relaçao com o id na tabela maquinas. mas acho que me enganei e coloquei a relaçao do id da tabela produtos com o id do pedido...

Posted

por exemplo.

tabela maquinas:

id
nome
caracteristicas

tabela pedidos

id_pedido
id_maquina
nome
mensagem

na tabela pedidos o id_maquina relaciona-se com o id da tabela maquinas, mas eu enganei-me e fiz relaçao do id da tabela maquinas com o id_pedido da tabela pedidos.

por isso, a unica coisa que eu fiz foi fazer a relaçao entre o id_maquina e o id(tabela maquinas)  😕

antes deu este erro:

Cannot add or update a child row: a foreign key constraint fails (`gpsi50612_my269418/pedidos_maquinas`, CONSTRAINT `pedidos_maquinas_ibfk_1` FOREIGN KEY (`id_maquina`) REFERENCES `pedidos_maquinas` (`id_pedido`) ON DELETE CASCADE)
Posted

por exemplo.

tabela maquinas:

id
nome
caracteristicas

tabela pedidos

id_pedido
id_maquina
nome
mensagem

na tabela pedidos o id_maquina relaciona-se com o id da tabela maquinas, mas eu enganei-me e fiz relaçao do id da tabela maquinas com o id_pedido da tabela pedidos.

por isso, a unica coisa que eu fiz foi fazer a relaçao entre o id_maquina e o id(tabela maquinas)  😉

antes deu este erro:

Cannot add or update a child row: a foreign key constraint fails (`gpsi50612_my269418/pedidos_maquinas`, CONSTRAINT `pedidos_maquinas_ibfk_1` FOREIGN KEY (`id_maquina`) REFERENCES `pedidos_maquinas` (`id_pedido`) ON DELETE CASCADE)

valeu

desse jeito todo mundo aprende com os erros. e ninguém irá novamente tirar a mesma dúvida ;-)

cumps

O verdadeiro sábio é um eterno aprendiz!

http://www.patriciodossantos.net

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
×
×
  • 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.