duarte69 Posted May 29, 2008 at 08:25 PM Report Share #188430 Posted May 29, 2008 at 08:25 PM 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 at 01:36 AM Report Share #188506 Posted May 30, 2008 at 01:36 AM 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 at 06:31 PM Author Report Share #188637 Posted May 30, 2008 at 06:31 PM 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 at 08:31 PM Report Share #188656 Posted May 30, 2008 at 08:31 PM 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 at 06:49 PM Author Report Share #188833 Posted May 31, 2008 at 06:49 PM 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 at 05:58 AM Report Share #188906 Posted June 1, 2008 at 05:58 AM 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 at 09:31 PM Author Report Share #190381 Posted June 9, 2008 at 09:31 PM 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 at 12:03 PM Report Share #190444 Posted June 10, 2008 at 12:03 PM 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 at 03:01 PM Author Report Share #190491 Posted June 10, 2008 at 03:01 PM 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 at 03:28 PM Report Share #190498 Posted June 10, 2008 at 03:28 PM 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 at 03:31 PM Report Share #190500 Posted June 10, 2008 at 03:31 PM 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 at 03:37 PM Report Share #190504 Posted June 10, 2008 at 03:37 PM 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 at 03:42 PM Report Share #190507 Posted June 10, 2008 at 03:42 PM 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 at 02:09 PM Author Report Share #190706 Posted June 11, 2008 at 02:09 PM 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 at 06:18 PM Report Share #190730 Posted June 11, 2008 at 06:18 PM 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 at 09:01 PM Author Report Share #190766 Posted June 11, 2008 at 09:01 PM 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 at 09:06 PM Report Share #190767 Posted June 11, 2008 at 09:06 PM 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 at 10:34 PM Author Report Share #190781 Posted June 11, 2008 at 10:34 PM 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 at 10:43 PM Report Share #190785 Posted June 11, 2008 at 10:43 PM 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 at 10:45 PM Author Report Share #190787 Posted June 11, 2008 at 10:45 PM 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