Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

michell matos

Erro comparação de string

Recommended Posts

Galera, sou novato aqui no forum e estou com um probleminha, tenho um arquivo texto, que abro e faço a leitura do mesmo fazendo algumas comparações em meu banco de dados (firebird).

Só que estou com um problema no momento em que eu faço a comparação dos nomes dos clientes, do que veio no arquivo em txt ($codigo_cliente_arquivo), com o nome que eu tenho no banco de dados ($busca_nome), sempre retornando o erro:

 

Catchable fatal error: Object of class stdClass could not be converted to string in C:\Arquivos de programas\VertrigoServ\www\sistema\busca_nome.php on line 40

 

Segue abaixo o script na integra, se alguem poder me ajudar eu agradeço!

 

<?

 

include ("conexao.php");

$arquivo = "texte.txt";

$handle = fopen($arquivo, "r");

 

while (!feof ($handle))

 

{

$buffer = fgets($handle, 4096);

 

$nome_cliente_arquivo = substr($buffer, 17, 40);

$codigo_cliente_arquivo = substr($buffer, 172,9);

 

$sql_nome = ibase_query($base,"SELECT NOME_CLIENTE FROM TB_CLIENTE WHERE CODIGO_CLIENTE = '$codigo_cliente_arquivo'");

$busca_nome = ibase_fetch_object($sql_nome);

 

if ("$busca_nome" <> "$nome_cliente_arquivo") //VERIFICAÇÃO DOS NOMES DOS CLIENTES

{

print "Nome Correto, Código. $codigo_cliente_arquivo. <br/>";

}

else

{

print "Divergencia de nome, codigo cliente . <font color='#FF0000'> $codigo_cliente_arquivo. </font> <br/>";

}

 

}

 

 

fclose ($handle);

?>

 

 

OBS.: No if já usei:

if ("$busca_nome" <> "$nome_cliente_arquivo")

if ($busca_nome <> $nome_cliente_arquivo)

 

 

E todos retornam o mesmo erro.

 

 

Abraços!

Michell Matos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu nunca usei Firebird, mas lendo a documentação da função ibase_fetch_object, vi que seu funcionamento é igual ao do mysql_fetch_object.

 

Portanto, tente mudar para:

 

...
if ($busca_nome->NOME_CLIENTE != $nome_cliente_arquivo)
...

Espero ter ajudado. Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, obrigado pela ajuda, já está fazendo a compração dos "campos" porem apareceu um outro problema, não sei se é lógica na programação, más mesmo existindo divergência no nome do arquivo com o nome do banco ele sempre entra na condição verdadeiro do if.

 

print "Nome Correto, Código. $codigo_cliente_arquivo. <br/>";

 

O que poderia ser?

 

 

Abraços!

Michell Matos

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste seu codigo denovo :D

 

Novo Código:

 

 

<?

 

include ("conexao.php");

$arquivo = "texte.txt";

$handle = fopen($arquivo, "r");

 

while (!feof ($handle))

 

{

$buffer = fgets($handle, 4096);

 

$nome_cliente_arquivo = substr($buffer, 17, 40);

$codigo_cliente_arquivo = substr($buffer, 172,9);

 

$sql_nome = ibase_query($base,"SELECT NOME_CLIENTE FROM TB_CLIENTE WHERE CODIGO_CLIENTE = '$codigo_cliente_arquivo'");

$busca_nome = ibase_fetch_object($sql_nome);

 

if ($busca_nome->NOME_CLIENTE != $nome_cliente_arquivo) //VERIFICAÇÃO DOS NOMES DOS CLIENTES

{

print "Nome Correto, Código. $codigo_cliente_arquivo. <br/>";

}

else

{

print "Divergencia de nome, codigo cliente . <font color='#FF0000'> $codigo_cliente_arquivo. </font> <br/>";

}

 

}

 

 

fclose ($handle);

?>

 

 

Como eu disse anteriormente as variavéis podem estar diferentes ou iguais e sempre entra na condição verdadeira do if $busca_nome->NOME_CLIENTE != $nome_cliente_arquivo.

 

print "Nome Correto, Código. $codigo_cliente_arquivo. <br/>";

 

Alguem tem alguma sugestão??

 

Abraços!

Michell Matos

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao sei se muda neste caso.. mas você tentou usar nome_cliente(em minusculo)?

Já manow, tanto maiuscula, quanto minuscula e sempre assume o valor positivo. Por enquanto não ta me vindo nenhuma ideia nova para fazer funcionar como eu quero...

 

 

Michell Matos

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra..comenta o if e manda imprimir o seguinte:

 

echo $busca_nome->NOME_CLIENTE." : ".$nome_cliente_arquivo;

 

ai ve se tem problema com acentuação e tals.. coisas do genero...

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra..comenta o if e manda imprimir o seguinte:

 

echo $busca_nome->NOME_CLIENTE." : ".$nome_cliente_arquivo;

 

ai ve se tem problema com acentuação e tals.. coisas do genero...

Boa dica Marcelo, as variavéis estão assumindo mesmo os nomes só não estão fazendo a comparação correta. O problema esta mesmo no if, só que ainda não sei qual é...

 

 

Michell Matos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi, o erro é de lógica.

 

Parece que você está comparando se os dois são diferentes, e, se forem, imprimindo que são corretos.

 

Tente deixar dessa forma e dê uma testada:

 

if ($busca_nome->NOME_CLIENTE == $nome_cliente_arquivo)

Qualquer coisa, volte a postar.

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi, o erro é de lógica.

 

Parece que você está comparando se os dois são diferentes, e, se forem, imprimindo que são corretos.

 

Tente deixar dessa forma e dê uma testada:

 

if ($busca_nome->NOME_CLIENTE == $nome_cliente_arquivo)

Qualquer coisa, volte a postar.

Abraço

Olá Bruno, alterando a condição do if ele atesta que todos são falsos, mesmo estando correto.

 

print "Divergencia de nome, codigo cliente . <font color='#FF0000'> $codigo_cliente_arquivo. </font> <br/>";

 

Michell Matos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.