Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

JoaoVM

[Resolvido] Consulta não Responde Corretamente

Mensagens Recomendadas

JoaoVM

Boas, tenho um problema coma minha consulta sql e php, tenho um equipamento de leitor de cartões RFID e uma base de dados com vários utilizadores e respetivos cartões e seu RFID. A minha questão é quando faço a consulta, vai devolver depois na variável

$resultado_rfid_teste

, e no meu

if ($_POST['rfid'] == $resultado_rfid_teste)

, se colocar e fizer a comparação com a o numero inserido ele não funciona, mas se em vez da variável colocar e fizer a comparação com um numero existente ele funciona, não vejo onde é que a consulta está mal feita, ou é a devolução que está mal?

if (isset($_POST['rfid'])){
$rfid = $_POST['rfid'];

echo "<table align=\"center\" border=\"1\">";
echo '<tr>';
echo '<td>RFID</td>';
echo '<td>N Colaborador</td>';
echo '<tdNome</td>';
echo '<tdSobrenome</td>';
echo '<tdEstado</td>';
echo '</tr>';

$sql_rfid="SELECT ref_id, num_colab, pnome, unome,estado FROM funcionarios WHERE ref_id='$rfid';";
$resultado_rfid = mysql_query($sql_rfid);

$sql_rfid_teste="SELECT ref_id FROM funcionarios";
$resultado_rfid_teste = mysql_query($sql_rfid_teste);

//123456789
if ($_POST['rfid'] == $resultado_rfid_teste){

while ($registo = mysql_fetch_array($resultado_rfid))

{
echo '<tr>';
echo '<td>';
echo "".$registo['ref_id']."<br />";
echo '</td>';
echo '<td>';
echo "".$registo['num_colab']."<br />";
echo '</td>';
echo '<td>';
echo "".$registo['pnome']."<br />";
echo '</td>';
echo '<td>';
echo "".$registo['unome']."<br />";
echo '</td>';
echo '<td">';
echo "".$registo['estado']."<br />";
echo '</td>';
echo '</tr>';

echo '</table>';
			}
}
 else

 {

echo '</br>';  
echo '<tr>';
echo "Não funciona<br />";
echo '</tr>';


 }

}

Cumprimentos,

João Martins

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

Antes de tudo, as funcoes mysql* estas desactualizadas, usa antes mysqli*

$sql_rfid_teste="SELECT ref_id FROM funcionarios"; /* Query para returnar uma tabela com varias linhas,
mas pelo o que parece so' queres uma linha, mete um WHERE etc....
*/
$resultado_rfid_teste = mysql_query($sql_rfid_teste);
//$resultado_rfid_teste == resource do mysql

//123456789
if ($_POST['rfid'] == $resultado_rfid_teste){ // ERRADO!!!!!!! tens que ir buscar o resultado da query!


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

Eu quero que quando passe cartões diferentes me devolva os resultados dos diversos cartões, e se não existir aquele numero do cartão devolve a mensagem.

O resultado da query não é devolvido pela variável $resultado_rfid_teste?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

O resultado da query não é devolvido pela variável $resultado_rfid_teste?

nao estas a fazer o fetch das rows.....


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

Estás a falar assim?

$sql_rfid_teste="SELECT ref_id FROM funcionarios";
$resultado_rfid_teste == mysqli_query($sql_rfid_teste);
$rfid_final == mysqli_fetch_row($resultado_rfid_teste);
//2684924428
if ($_POST['rfid'] == $rfid_final)
   {
.
.
.
.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

algo do genero.

agora deve funcionar, se nao funcionar o problema sera' da query.


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

manda de outro sitio,aqui na empresa bloqueiam esse site.

e diz tb qual e' o resultado que pretendes


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

tens que filtrar a query, do genero, mas tens que adaptar:

SELECT ref_id FROM funcionarios WHERE RFID = 52


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

mas eu quero passar cartões diferentes não quero sempre o mesmo...

tens que filtrar a query, do genero, mas tens que adaptar:

SELECT ref_id FROM funcionarios WHERE RFID = 52

suponho que saibas trabalhar com sql, ja' quem tens a query anterior "direita":

$sql_rfid="SELECT ref_id, num_colab, pnome, unome,estado FROM funcionarios WHERE ref_id='$rfid';";


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

suponho que saibas trabalhar com sql, ja' quem tens a query anterior "direita":

Citar

$sql_rfid="SELECT ref_id, num_colab, pnome, unome,estado FROM funcionarios WHERE ref_id='$rfid';";

sim mas essa variável $rfid recebe o valor da variável $_POST['rfid'], quem vem de um input...nao da base de dados...

Editado por Rui Carlos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

eu nao te posso fazer a query, porque nao sei qual e' o campo que queres filtrar por...

Tambem nao posso ajudar com a query porque nao sei a estrutura dela, ja' agora tambem nao sei os dados que tens disponiveis para filtrar...


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

2h1x.jpg

estes são os dados que tenho..e quero que quando passo o respetivo cartão de cada um me apareça os dados respetivos. Não posso meter mesmo as informações.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

para que e' necessario estas 2 querys?


$sql_rfid="SELECT ref_id, num_colab, pnome, unome,estado FROM funcionarios WHERE ref_id='$rfid';";
$resultado_rfid = mysql_query($sql_rfid);

$sql_rfid_teste="SELECT ref_id FROM funcionarios";
$resultado_rfid_teste = mysql_query($sql_rfid_teste);

//123456789
if ($_POST['rfid'] == $resultado_rfid_teste){

Editado por pikax

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

$sql_rfid="SELECT ref_id, num_colab, pnome, unome,estado FROM funcionarios WHERE ref_id='$rfid';";
$resultado_rfid = mysql_query($sql_rfid);

Esta query é a que vai apresentar os dados depois dentro do while.

$sql_rfid_teste="SELECT ref_id FROM funcionarios";
$resultado_rfid_teste = mysql_query($sql_rfid_teste);

Esta seria a que selecionava os dados relativos ao rfid.

Não sei se estou a pensar bem....

Editado por JoaoVM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

$sql_rfid_teste="SELECT ref_id FROM funcionarios";
$resultado_rfid_teste = mysql_query($sql_rfid_teste);

Esta seria a que selecionava os dados relativos ao rfid.

Não sei se estou a pensar bem....

a query nao deveria ser:

$sql_rfid_teste="SELECT * FROM funcionarios WHERE ref_id =$_POST['rfid']";
$resultado_rfid_teste = mysql_query($sql_rfid_teste);


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

opa já meti como falaste e não está a funcionar...acho que será boa ideia contornar o problema e fazer de outra forma..porque ele sem este if funciona bem, devolve-me o resultado do cartão tudo normal, com este if que me devolve a mensagem e que não, se calhar o problema até é dai, ou então e mesmo da query porque quando comparo com o numero exato de cartão ele funciona..dai pensar que é da query..

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

Primeiro estavas a comparar um resource do mysql com o valor vindo por post.

depois estavas a comparar um conjunto de linhas:

com um valor vindo do POST.

Nao sei o que queres fazer com aquele if!


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

qual dos 2 ifs que tenho?

if ($_POST['rfid'] == $resultado_rfid_teste)

, se colocar e fizer a comparação com a o numero inserido ele não funciona, mas se em vez da variável colocar e fizer a comparação com um numero existente ele funciona, não vejo onde é que a consulta está mal feita, ou é a devolução que está mal?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

O segundo if vai comparar se o valor introduzido existe na base de dados e devolve os dados respetivos, caso contrario devolve a mensagem...

if ($_POST['rfid'] == $resultado_rfid_teste){
while ($registo = mysql_fetch_array($resultado_rfid))

	{
echo '<tr>';
echo '<td>';
echo "".$registo['ref_id']."<br />";
echo '</td>';
echo '<td>';
echo "".$registo['num_colab']."<br />";
echo '</td>';
echo '<td>';
echo "".$registo['pnome']."<br />";
echo '</td>';
echo '<td>';
echo "".$registo['unome']."<br />";
echo '</td>';
echo '<td">';
echo "".$registo['estado']."<br />";
echo '</td>';
echo '</tr>';
echo '</table>';
							}
}
 else

 {

echo '</br>';
echo '<tr>';
echo "Não funciona<br />";
echo '</tr>';

 }

Editado por JoaoVM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax
if (isset($_POST['rfid'])){ //tudo bem
$rfid = $_POST['rfid']; //ok

//.....

$sql_rfid="SELECT ref_id, num_colab, pnome, unome,estado FROM funcionarios WHERE ref_id='$rfid';"; // ok estas a fazer uma query pelo o rfid e a returnar os resultados.
$resultado_rfid = mysql_query($sql_rfid); //warning, nome mal dado 'a variavel

$sql_rfid_teste="SELECT ref_id FROM funcionarios"; //vais estar a returnar um array!!!!! e
$resultado_rfid_teste = mysql_query($sql_rfid_teste);////warning, nome mal dado 'a variavel
$rfid_final == mysqli_fetch_row($resultado_rfid_teste); //ok

//123456789
if ($_POST['rfid'] == $resultado_rfid_teste){//comparacao de o primeiro resultado da query com o $_POST['rfid'] --> resultado incognito

while ($registo = mysql_fetch_array($resultado_rfid)) //ok
{
//...
}
//....


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

Se fizer o teste e retornar o a comparação vai receber obtenho apenas a palavra Array, como posso resolver de modo a que possa comparar?

$sql_rfid_teste = "SELECT ref_id FROM funcionarios"; //vais estar a retornar um array!!!!! e
$rfid_teste = mysql_query($sql_rfid_teste);
$rfid_final = mysql_fetch_row($rfid_teste);
echo "$rfid_final";

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.