• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

subkiller

executar query

13 mensagens neste tópico

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muda a função para isto:

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas djthyrax...

eu substitui para isso mas continua a dar-me o mesmo erro.

eu tenho usado esta funçao e nao tenho razao de queixa, nao percebi porque me da erro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

                        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...  :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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());

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja funciona...  :cheesygrin:, realmente foi uma distracçao minha....  :-[

obrigado a todos pelas respostas...

cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja funciona...  :cheesygrin:, realmente foi uma distracçao minha....  :-[

obrigado a todos pelas respostas...

cumps.

qual foi a solução?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)  :confused:

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora