Ir para conteúdo

Arquivado

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

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";
	}

?>

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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;
	}

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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!

Compartilhar este post


Link para o post
Compartilhar em outros 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>   


Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

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.