Jump to content
Sign in to follow this  
asacap1000

Analise de script

Recommended Posts

Galera estou com um script para consulta em um banco de dados Oracle. Esta consulta tem critérios para o retorno. Se o documento estiver liberado tem que retornar a imagem de ok, caso contrário uma imagem de indisponível, Porem nesta consulta independente do Status do documento no banco, ele sempre me retorna o mesmo valor. Abaixo as telas utilizadas para a consulta. Se alguém puder dar uma olhada e conseguir mostrar onde está o erro ficarei extremamente agradecido.

 

index.php

<HTML>
<head>
	<script src="//code.jquery.com/jquery-1.10.2.js"></script>
	<script>
	$(document).ready(function() {
		$('#ok').hide();
		$('#naook').hide();
		$('#nome').change(function(){
			var nome = $('#nome').val();
			$.ajax({
						type: "POST",
						url: "verifica_dados.php",
						data: "nome="+nome,
						dataType: "html",
						success: function(xml){
							if( xml > "0")
							{
								$("#ok").show();
							}
							else
							{
								$("#naook").show();
							}
						},
						error: function(){
							alert("Erro ao verificar os detalhes do usuario!");
						}
					});
		});
	});
</script>
</head>

<BODY>
<div id="valida">
	<input type="text" name="nome"  value="" id="nome" placeholder="valida">
</div>
<div id="ok">
	<img src="/imagens/ok.jpg">
</div>	
<div id="naook">
	<img src="/imagens/indisponivel.png">
</div>

</body>
</html>

verifica_dados.php

<?php
include("conecta.php");
	$carga = $_POST['nome'];
	$stmt = ociparse($connect,"select PO.document
  from DESMEMBR DS, IN_OUT_POS PO, KLIENTEN k
 where DS.LAGER = PO.LAGER(+)
   and k.id_klient = ds.id_klient
   and DS.NR_DI = PO.document(+)
   and ds.stat_nac = '90'
   and PO.document ='$carga'"); 
	$res = ociparse($connect,$stmt,OCI_ASSOC);
	$row = ociexecute($res);
	if($row > 0)
	{
		echo "1";
	}
	else
	{
		echo "0";
	}

?>

Share this post


Link to post
Share on other sites

Não sei se passar a variável dessa maneira no ajax funciona. Tente assim:

data: { "nome", nome }

 

Dê um print no arquivo verifica_dados.php para ver se o parametro foi passado sem erro.

Share this post


Link to post
Share on other sites

Se é um teste numérico, não tem sentido vc testar strings.

 

if( parseInt(xml) > 0)
e ai retorne inteiros:

	if($row > 0) {
		echo 1;
	} else {
		echo 0;
	}

Share this post


Link to post
Share on other sites

 

Amigo desculpa minha ignorância, mas o que eu devo fazer para corrigir isso? A minha pesquisa envolve apenas numeros, dez caracteres Ex: 1315665249

Edited by William Bruno
Remover quote desnecessário

Share this post


Link to post
Share on other sites

O Bruno apontou duas falhas de logica em seus códigos.

 

Uma é no javascript que você está comparando script sendo que está retornando numero!

 

Outra é, no php, que deveria imprimir número e está imprimindo string!

Share this post


Link to post
Share on other sites

O Bruno apontou duas falhas de logica em seus códigos.

 

Uma é no javascript que você está comparando script sendo que está retornando numero!

 

Outra é, no php, que deveria imprimir número e está imprimindo string!

Legal, eu realizei estas alterações e agora está me retornando a informação correta, mas tem mais uma situação, deixa eu dar uma exemplo que fica mais facil, cliente IMASTERS tem os documentos A e B no sistema. O B já foi coletado então ele me retorna indisponivel e o A disponível. Porém se eu coloco qualquer outro numero ele também me retorna como disponível mesmo não sendo deste cliente.

 

verifica_dados.php

<?php
include("conecta.php");
	$carga = $_POST['doc'];
	$stmt = ociparse($connect,"select PO.document
  from DESMEMBR DS, IN_OUT_POS PO, KLIENTEN k
 where DS.LAGER = PO.LAGER(+)
   and k.id_klient = ds.id_klient
   and DS.NR_DI = PO.document
   and ds.stat_nac = '90'
   and PO.document ='$carga'");
	ociexecute($stmt);
	$row = oci_fetch_array($stmt, OCI_ASSOC+OCI_RETURN_NULLS);
	
	if($row > 0) {
		echo 1;
	} else {
		echo 0;
	}

?>

index.php

<HTML>
<head>
	<script src="//code.jquery.com/jquery-1.10.2.js"></script>

<script>
	$(document).ready(function() {
		$('#ok').hide();
		$('#naook').hide();
		$('#doc').change(function(){
			var doc = $('#doc').val();
			$.ajax({
						type: "POST",
						url: "verifica_dados.php",
						data: "doc="+doc,
						dataType: "html",
						success: function(xml){
							if(xml > "0")
							{
								$("#naook").show();
							}
							else
							{
								$("#ok").show();
							}
						},
						error: function(){
							alert("Erro ao verificar os detalhes do usuario!");
						}
					});
		});
	});
</script>

<div id="valida">
<form name="meuForm">
<form action="post.php" method="post">
<fieldset> <legend><h4>Lançamento de Documentos DI / DDE / DSI</h4></legend> 
<fieldset>  <div class="doc"> <p class="doc"> <input type="text" name="doc"  value="" id="doc" placeholder="valida"> <a href="#" class="removerCampo">Remover Documento</a> </p> </div>
<div id="ok">
<img src="/imagens/ok.jpg">
</div>	
<div id="naook">
<img src="/imagens/delete.png">
</div>
<p> <a href="#" class="adicionarCampo">Adicionar Mais Documentos</a> </p> </fieldset>   


Share this post


Link to post
Share on other sites

Falta vc fazer um:

 

   and PO.document ='$carga'
   and k.id_klient = '$id_cliente'");
e ai envie o id do cliente no ajax:

 

data: "nome="+nome + "&id_cliente=12",
lembrando q vc tem q criar a variável no php, e trocar o 12 por um id real.

Share this post


Link to post
Share on other sites

 

Estou conseguindo realizar as consultas, quando o item consta no campo PO.document, ele me retorna não disponível, só que existe mais uma coisa, na pesquisa a condição está assim

if($row > 0) {
		echo 1;
	} else {
		echo 0;
	}

Se eu digitar qualquer numero aleatório como 123 por exemplo ele me retorna como disponivel por não encontrar no campo este numero, como eu poderia montar esta condição para que ele verifique o numero exato comparando com os dois campos de duas tabelas. Os campos que realizo a consulta são DS.NR_DI e PO.document, são de tabelas distintas. O campo DS.NR_DI, consta a carga liberada para carregamento, mas mesmo as que já foram carregadas continuam com este cadastro e a PO.document é quando o material foi carregado, ou esta sendo carregado, é a confirmação de entrada de veículo no recinto para o carrregamento.

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.