Tenho o seguinte código:
<?
$dbh=mysql_connect ("127.0.0.1", "root","pass");
$db=mysql_select_db("BD" , $dbh);
$seleciona=mysql_query("SELECT * FROM tabela WHERE nome LIKE '$nome' AND mes LIKE '$mes' AND numero LIKE '$numero'", $dbh);
$contagem=mysql_num_rows($seleciona);
if ( $contagem == 0 ) {
echo "<font face=arial size=2 color=red>Nenhum Registro encontrado</center></font>";
}
else
{
if ($item1!=""){
$obs1="Possui faltas";
}
else{
$obs1="";
}
if ($item2!=""){
$obs2="Possui atrasos";
}
else{
$obs2="";
}
if ($item3!=""){
$obs3="Não conformidades";
}
else{
$obs3="";
}
$observacoes=("<br>".$obs1."<br>".$obs2.<br>".$obs3);
echo $observacoes;
}
?>
Tenho uma tabela com 27 campos "item" diferentes. O conteúdo de cada campo é vazio ou "X".
O intuito do sistema acima é de, se o campo item1 da tabela for diferente de vazio, a variável obs1 será igual ao texto à ela definido. e assim sucessivamente. No final do comando, a variável $observacoes resgata o valor de cada variável e mostra ao usuário.
O problema é q, aparentemente, está sendo descartado o ELSE de cada IF.
Alguém está conseguindo enchergar onde está o bug?
Agradeço desde agora mesmo.
Abraços!

Condição Sem Funfá.
Started By Boxer, 06/09/2004, 15:56
5 replies to this topic
#1
Posted 06/09/2004, 15:56
"O único lugar, no mundo, onde o sucesso vem antes do trabalho, é no dicionário"
#2
Posted 06/09/2004, 16:06
- Para que esta usando LIKE no seu comando SQL ?
- Em nenhum momento vc esta instanciando um resultado, tipo: mysql_fetch_array.
- Em nenhum momento vc esta instanciando um resultado, tipo: mysql_fetch_array.
------
Mero mortal!
Mero mortal!
#3
Posted 06/09/2004, 16:20
Boxer,
este ItemX não foi resgatado do mysql. Para resgata-lo utilize:
$dados = mysql_fetch_array($seleciona);
$item1 = $dados[item1];
para pegar a coluna ITEM1.
Quanto ao like, ele é um coringa, e diminui o desempenho da busca. Caso sejam números, utilize "=" ao invés do "LIKE".
este ItemX não foi resgatado do mysql. Para resgata-lo utilize:
$dados = mysql_fetch_array($seleciona);
$item1 = $dados[item1];
para pegar a coluna ITEM1.
Quanto ao like, ele é um coringa, e diminui o desempenho da busca. Caso sejam números, utilize "=" ao invés do "LIKE".
#4
Posted 06/09/2004, 16:23
Pq sempre q passamos mais de 2 horas tentando desvendar um mistério e, depois de perguntar para alguém, antes da resposta, nós desvendamos?
Era exatamente isso!
não tinha mysql_fetch_array!
Mil desculpas pela gafe!
E obrigado pela resposta!
uso o like pra comparar os valores das 3 variáveis com o BD.
Essa página vai pegar o conteúdo de um link q o usuário vai clica...
pagina.php?nome=tal&mes=3&numero=1
Pq? Tah errado ou não estou sendo justo com a linguagem?
Abraços!
Era exatamente isso!
não tinha mysql_fetch_array!
Mil desculpas pela gafe!
E obrigado pela resposta!
uso o like pra comparar os valores das 3 variáveis com o BD.
Essa página vai pegar o conteúdo de um link q o usuário vai clica...
pagina.php?nome=tal&mes=3&numero=1
Pq? Tah errado ou não estou sendo justo com a linguagem?
Abraços!
"O único lugar, no mundo, onde o sucesso vem antes do trabalho, é no dicionário"
#5
Posted 06/09/2004, 16:32
Veja bem, se ele clicar em
pagina.php?nome=tal&mes=3&numero=1
e no bd for
NOME = TAL
MES = 3
NUMERO = 1
não há necessidade para usar o Like, entende? Alias, você não está usando o like da maneira correta, já que você não utilizou o coringa dele. %
Vamos lá:
Opção1:
Está no BD estas informações:
NOME = TAL
MES = 3
NUMERO = 1
use SELECT * FROM tabela WHERE nome = '$nome' AND mes = '$mes' AND numero = '$numero'",
Opção2:
Está no BD estas informações:
NOME = TAL da silva
MES = 3
NUMERO = 1
use SELECT * FROM tabela WHERE nome like '%$nome%' AND mes = '$mes' AND numero = '$numero'"
Com este like '%nome%' ele vai procurar os nomes que tenham TAL no meio. entende? então o TAL da SILVA pertence a esta lista.
pagina.php?nome=tal&mes=3&numero=1
e no bd for
NOME = TAL
MES = 3
NUMERO = 1
não há necessidade para usar o Like, entende? Alias, você não está usando o like da maneira correta, já que você não utilizou o coringa dele. %
Vamos lá:
Opção1:
Está no BD estas informações:
NOME = TAL
MES = 3
NUMERO = 1
use SELECT * FROM tabela WHERE nome = '$nome' AND mes = '$mes' AND numero = '$numero'",
Opção2:
Está no BD estas informações:
NOME = TAL da silva
MES = 3
NUMERO = 1
use SELECT * FROM tabela WHERE nome like '%$nome%' AND mes = '$mes' AND numero = '$numero'"
Com este like '%nome%' ele vai procurar os nomes que tenham TAL no meio. entende? então o TAL da SILVA pertence a esta lista.
#6
Posted 06/09/2004, 16:58
Corretíssimo, Amigo!!!
Perfeitamente entendido.
Conheço o coringa % e sua funcionalidade. Porém não tinha o conhecimento da utilização correta do LIKE.
Agradeço novamente, Amigo!
Abraços e bom FDS!
Perfeitamente entendido.
Conheço o coringa % e sua funcionalidade. Porém não tinha o conhecimento da utilização correta do LIKE.
Agradeço novamente, Amigo!

Abraços e bom FDS!

"O único lugar, no mundo, onde o sucesso vem antes do trabalho, é no dicionário"
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)