duarte69 Posted May 29, 2008 Report Share Posted May 29, 2008 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 More sharing options...
cyclop Posted May 30, 2008 Report Share Posted May 30, 2008 Pelo que reparei estas a usar base de dados access, acertei? tenta assim: dbc_connect ("DRIVER={Microsoft Access Driver (*.mdb)};DBQ="caminhoParaabd/db.mdb","","") "Quando eu for grande quero ser como o Celso" Link to comment Share on other sites More sharing options...
duarte69 Posted May 30, 2008 Author Report Share Posted May 30, 2008 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 More sharing options...
psiico Posted May 30, 2008 Report Share Posted May 30, 2008 a base de dados nao tem que estar na pasta htdocs ? Psiico // Portfolio Link to comment Share on other sites More sharing options...
duarte69 Posted May 31, 2008 Author Report Share Posted May 31, 2008 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 More sharing options...
cyclop Posted June 1, 2008 Report Share Posted June 1, 2008 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 More sharing options...
duarte69 Posted June 9, 2008 Author Report Share Posted June 9, 2008 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 More sharing options...
Sven Posted June 10, 2008 Report Share Posted June 10, 2008 estado ='true' ? Writing software is more fun than workingO covil do Barão Link to comment Share on other sites More sharing options...
duarte69 Posted June 10, 2008 Author Report Share Posted June 10, 2008 Boas, Sim, o campo da tabela é sim/não. Cumps Link to comment Share on other sites More sharing options...
Sven Posted June 10, 2008 Report Share Posted June 10, 2008 não é isso, tens que usar ' em vez de " Writing software is more fun than workingO covil do Barão Link to comment Share on other sites More sharing options...
djthyrax Posted June 10, 2008 Report Share Posted June 10, 2008 Se está definido como boolean, nem deve levar ' ou ", digo eu. 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! Link to comment Share on other sites More sharing options...
Sven Posted June 10, 2008 Report Share Posted June 10, 2008 Não devia era levar Access 😁 Mas o erro que lhe está a dar é por ele iniciar o string com " e a meio ter " novamente, mas se está definido com boolean não deveria ser preciso as " Writing software is more fun than workingO covil do Barão Link to comment Share on other sites More sharing options...
djthyrax Posted June 10, 2008 Report Share Posted June 10, 2008 Em relação ao warning que dá com ", é só meter \" 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! Link to comment Share on other sites More sharing options...
duarte69 Posted June 11, 2008 Author Report Share Posted June 11, 2008 Ya, não devia levar access =) tirácio, quando dizes que é para por \" é para por onde? :S Cumps Link to comment Share on other sites More sharing options...
djthyrax Posted June 11, 2008 Report Share Posted June 11, 2008 No true. Em vez de teres no source code "true", tens \"true\". Chama-se a isso escapar a aspa. 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! Link to comment Share on other sites More sharing options...
duarte69 Posted June 11, 2008 Author Report Share Posted June 11, 2008 Boas, Foi isso que fiz e deu erro na mesma... Bem, obrigado pela ajuda a todos, fiquei sem tempo, precisava disto para amanhã, se bem que agora gostava de saber porque é que esta coisa não trabalha... Cumps Link to comment Share on other sites More sharing options...
djthyrax Posted June 11, 2008 Report Share Posted June 11, 2008 Não metas nada à volta do true. 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! Link to comment Share on other sites More sharing options...
duarte69 Posted June 11, 2008 Author Report Share Posted June 11, 2008 Também já tentei assim, e dá erro na mesma Link to comment Share on other sites More sharing options...
djthyrax Posted June 11, 2008 Report Share Posted June 11, 2008 E qual é o erro? 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! Link to comment Share on other sites More sharing options...
duarte69 Posted June 11, 2008 Author Report Share Posted June 11, 2008 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now