Jump to content

Erro em odbc


duarte69
 Share

Recommended Posts

Boas, sou novo por estes lados mas isto parece ser fixe, lol

Bem é o seguinte:

Estou com um pequeno problema, liguei uma bd access ao php, segui um tutorial para meter a ligação a trabalhar, mas está a dar erro no odbc_do().

O erro é o seguinte:

Warning: odbc_do() [function.odbc-do]: SQL error: [Microsoft][Controlador Microsoft Access de ODBC] Poucos par�metros. 1 esperado., SQL state 07001 in SQLExecDirect in D:\xampp\htdocs\testes\login_php.php on line 17

Funcionário inesistente ou fora de actividade

Aqui fica o código:


<?php

function login(){

	//passagem dos dados do form para o ficheiro php
	$id=$_POST['id'];
	$password=$_POST['password'];
	$grupo=$_POST['grupo'];
	//fim

	$ligacao= odbc_connect ("access","","") or die ("Impossivel aceder à base de dados");

	if ($grupo="funcionario"){ //caso o user seja um funcionário

		$sql=("Select * FROM Trabalhadores WHERE (estado='1' and n_funcionário='$id')");

		[b]$resultado= odbc_do ($ligacao, "$sql");[/b]
		if (empty($resultado)){
			echo "Funcionário inesistente ou fora de actividade";
			//rederecionar para login.html
		}
		else{
			$sql=("Select * FROM Trabalhadores WHERE estado=1 and n_funcionário=$id and password=$password");

			$resultado=odbc_do ($ligacao, $sql);
			if (empty($resultado)){
				echo "Password incorrecta";
				////rederecionar para login.html
			}
			else{
				odbc_result_all($resultado, "border=3");
				odbc_free_result ($resultado);
				odbc_close ($ligacao);
			}

		}
	}
	else{ //caso seja um comprador

		$sql=("Select * FROM Compradores WHERE cod_comprador=$id");

		$resultado=odbc_do ($ligacao, $sql);
		if (empty ($resultado)){
			echo "Comprador inesistente";
			//rederecionar para login.html
		}
		else{
			$sql=("Select * FROM Compradores WHERE cod_comprador=$id and password=$password");

			$resultado=odbc_do ($ligacao, $sql);
			if (empty($resultado)){
				echo "Password incorrecta";
				////rederecionar para login.html
			}
			else{
				odbc_result_all($resultado, "border=3");
				odbc_free_result ($resultado);
				odbc_close ($ligacao);
			}		
		}		
	}
}
//main

if (($_POST['id']) && ($_POST['password']) && $_POST['grupo']){ //se todos os valores forem introduzidos-->
	login(); //chama a função de login
}	
else{
	if (empty($_POST['id'])){ //caso o campo id do formulário="" retorna mensagem de erro
		echo "Introduza o ID";
	}
	else{
		if (empty($_POST['password'])){ //caso o campo password do formulário="" retorna mensagem de erro
			echo "Introduza a Password";
		}
		else{			
			if (empty ($_POST['grupo'])){ //caso não seja escolhido nenhum grupo retorna mensagem de erro
				echo "Escolha um grupo";
			}
		}
	}
}
?>

O erro aponta para a linha a negrito...

Se poderem ajudar agradecia, não estou a ver onde está o erro e é a primeira vez que estou a trabalhar com odbc.

Cumps

Link to comment
Share on other sites

Boas, sim estou a usar um bd access.

Desde já agradeço a ajuda...

A ligação ficou assim:

$ligacao= odbc_connect ("DRIVER={Microsoft Access Driver (*.mdb)};DBQ="E:\ATI(pen)\MDB\projectotecnologico.mdb","","") or die ("Impossivel aceder à base de dados");

Mas está a dar erro nessa linha, diz : "Parse error: syntax error, unexpected T_STRING in D:\xampp\htdocs\testes\login_php.php on line 11"

É do quê?

Cumps

Link to comment
Share on other sites

Boas,

Já tentei com a bd no htdocs e dá o mesmo erro, acho que é um erro de sintaxe, mas como não percebo grande coisa disto não sei onde é que está o erro...

Preciso mesmo de ajuda, preciso disto a trabalhar até segunda  😄

Cumps e obrigado pela ajuda

Link to comment
Share on other sites

Mas está a dar erro nessa linha, diz : "Parse error: syntax error, unexpected T_STRING in D:\xampp\htdocs\testes\login_php.php on line 11"

tesn de escapar a string 😄

neste caso $ligacao= odbc_connect ("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=E:/ATI(pen)/MDB/projectotecnologico.mdb","","") or die ("Impossivel aceder à base de dados"); por exemplo

O erro foi meu pois no exemplo dei com a aspa fora do sitio ou com uma aspa a menos depende do ponto de vista LOL

mas penso funcionar semteres o caminho sem aspa, se nao der, tenta com aspas escapadas \"

"Quando eu for grande quero ser como o Celso"

Link to comment
Share on other sites

Boas,

Obrigado pela ajuda, esse problema já está resolvido, mas surgiu outro:

Código:

 <?php

function login(){

	//passagem dos dados do form para o ficheiro php
	$id=$_POST['id'];
	$password=$_POST['password'];
	$grupo=$_POST['grupo'];
	//fim

	$ligacao= odbc_connect ("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=E:/ATI(pen)/MDB/projectotecnologico.mdb","","") or die ("Impossivel aceder à base de dados");

	if ($grupo="funcionario"){ //caso o user seja um funcionário

		[b]$sql=("Select * FROM Trabalhadores WHERE (estado = true and n_funcionário='$id')");[/b]

		[b]$resultado= odbc_do ($ligacao, "$sql");[/b]
		if (empty($resultado)){
			echo "Funcionário inesistente ou fora de actividade";
			//rederecionar para login.html
		}
		else{
			$sql=("Select * FROM Trabalhadores WHERE estado=1 and n_funcionário=$id and password=$password");

			$resultado=odbc_do ($ligacao, $sql);
			if (empty($resultado)){
				echo "Password incorrecta";
				////rederecionar para login.html
			}
			else{
				odbc_result_all($resultado, "border=3");
				odbc_free_result ($resultado);
				odbc_close ($ligacao);
			}

		}
	}
	else{ //caso seja um comprador

		$sql=("Select * FROM Compradores WHERE cod_comprador=$id");

		$resultado=odbc_do ($ligacao, $sql);
		if (empty ($resultado)){
			echo "Comprador inesistente";
			//rederecionar para login.html
		}
		else{
			$sql=("Select * FROM Compradores WHERE cod_comprador=$id and password=$password");

			$resultado=odbc_do ($ligacao, $sql);
			if (empty($resultado)){
				echo "Password incorrecta";
				////rederecionar para login.html
			}
			else{
				odbc_result_all($resultado, "border=3");
				odbc_free_result ($resultado);
				odbc_close ($ligacao);
			}		
		}		
	}
}
//main

if (($_POST['id']) && ($_POST['password']) && $_POST['grupo']){ //se todos os valores forem introduzidos-->
	login(); //chama a função de login
}	
else{
	if (empty($_POST['id'])){ //caso o campo id do formulário="" retorna mensagem de erro
		echo "Introduza o ID";
	}
	else{
		if (empty($_POST['password'])){ //caso o campo password do formulário="" retorna mensagem de erro
			echo "Introduza a Password";
		}
		else{			
			if (empty ($_POST['grupo'])){ //caso não seja escolhido nenhum grupo retorna mensagem de erro
				echo "Escolha um grupo";
			}
		}
	}
}
?>

Isto está a dar dois erros:

Como o código está dá o seguinte: "Warning: odbc_do() [function.odbc-do]: SQL error: [Microsoft][Controlador Microsoft Access de ODBC] Poucos par�metros. 1 esperado., SQL state 07001 in SQLExecDirect in D:\xampp\htdocs\testes\login_php.php on line 17"

Se eu meter aspas  na ($sql=("Select * FROM Trabalhadores WHERE (estado = "true" and n_funcionário='$id')")😞 sql da linha 15 dá este:  "Parse error: syntax error, unexpected T_STRING in D:\xampp\htdocs\testes\login_php.php on line 15"

Alguém pode ajudar? É urgente...

Cumps

Link to comment
Share on other sites

O erro é este:  Warning: odbc_do() [function.odbc-do]: SQL error: [Microsoft][Controlador Microsoft Access de ODBC] Poucos par�metros. 1 esperado., SQL state 07001 in SQLExecDirect in D:\xampp\htdocs\testes\login_php.php on line 17

Não te chateies com isso que não vale a pena, da próxima não uso access, lol.

Cumps

Link to comment
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
 Share

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