Combo dinâmico PHP e Ajax

Enviada por Douglas 
Douglas
Combo dinâmico PHP e Ajax
10 de November de 2014 às 11:47AM
Bom dia. Estou precisando de uma ajuda. Quero obter algumas informações de um determinado produto, colocando-as com um combo box. Fiz um código usando o php e ajax. A parte, isolada de montagem do combo box funciona, porém quando eu chamo essa rotina da parte principal não acontece nada.
Explicações:
A função chama os dados do produto funciona.
Se por exemplo eu chamar a rotina "lote_combo.php", passando o parâmetro ela irá retornar o "select" da maneira que eu preciso

O problema é o seguinte, quando o usuário informar o código do produto e o campo perder o foco, quero que seja montado uma lista de opções para ele (lote do produto).

CODIGO:

INDEX.PHP
==============
<script type="text/javascript" src="ajax.js" ></script>
<script language="javascript" src="../js/jquery-1.6.4.min.js"></script>
<script language="javascript" src="../js/jquery.maskedinput.js"></script>
<link href="../css/intranet.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
jQuery(function($){
$("#mkdata_i").mask("99/99/9999");
});
</script>
<script language="javascript">
/* Consulta dados do produto */
var ajax = new sack();
function getConsulta() {
var id = null;
var a = document.activeElement.name;
if(document.getElementById('idProd')){
id = document.getElementById('idProd').value.replace(/[^0-9]/g,'');
}
if(id.length>=1){
/*
Especificando de qual arquivo irá obter as informações
consulta.php = script que faz a busca desejada
id = codigo do que sera procurado
campos = sao os campos que iram receber as informacoes encontradas. Devem ser separados por "|" (pape)
OBS: o nome do campo deve ser IDENTICO ao campo na base de dados.
*/
ajax.requestFile = 'consulta.php?idproduto='+id+'&&campos=produto|apresentacao|marca';
ajax.onCompletion = showConsulta; // Especificando a função que será executada quando o arquivo for encontrado
ajax.runAJAX(); // Executa a função em ajax
}

}

function showConsulta() {
// função que retorna a resposta da consulta
var formObj = document.forms['rel_mov_produto'];
eval(ajax.response);
}


function initFormEvents(){
// função que dispara o inicio da consulta através do onBlur
document.getElementById('idProd').onblur = getConsulta;
document.getElementById('idProd').focus();
}
window.onload = initFormEvents;

/* --------------------------------------------------------------------------------------------------------- */
</script>


<div class="tit_rotina">Movimentação do produto</div>
<div class="form-container">

<?php

require_once("../funcao.php");
require_once("../funcaodata.php");
?>


<form action="" method="post" name="rel_mov_produto" id="rel_mov_produto" >
<fieldset>
<legend>&nbsp;Dados do produto&nbsp;</legend>

<div>
<label class="obrigatorio">Produto</label>
<input id="idProd" type="text" name="idProd" size="10" maxlength="6" onKeyPress="mascaraInteiro();" tabindex="1" value="" class="obrigatorio" required onChange="CarregaLote(this.value)"/>
<a href="javascript:abrir('consultaproduto.php','idProd');"><img src="../imagem/lupa.jpg" width="20" height="20" align="texttop" id="botao" /></a>
<input id="produto" type="text" name="produto" value="" size="70" <?php echo $hab_tf; ?> tabindex="1" />
<br>
<?php echo str_repeat("&nbsp;", 58); ?><input id="apresentacao" type="text" name="apresentacao" value="" size="60" <?php echo $hab_tf; ?> /> <br>
<?php echo str_repeat("&nbsp;", 58); ?><input id="marca" type="text" name="marca" value="" size="60" <?php echo $hab_tf; ?> />
</div>
<div>

<br/>
<div id="loteAjax">
<label for="lote" class="n_obrigatorio">Lote</label>
<select name="lote" id="lote" tabindex="2"><option value="0">--Selecione o produto--</option></select>
</div>
</div>
</fieldset>

</form>

<script language="javascript">
function CarregaLote(codProduto){
if(codProduto > 0){
//alert(codProduto);
var myAjax = new Ajax.Updater('loteAjax','lote_combo.php?codProduto='+codProduto,{
method : 'get',
}) ;
}
}
</script>

</div>

*******************************************************************

LOTE_COMBO.PHP
===================
<?php
include("../funcao.php");
conecta();

$codProduto = $_GET['codProduto'];

echo '<script>alert('.$codProduto.');</script>';

$sql = "select lote from lote where produto = '$codProduto' order by lote";
$res = exec_sql($sql);
$num_cidades = mysql_num_rows($res);

?>
<select name="lote" id="lote" tabindex="2">
<?php for($j=0;$j<$num_cidades;$j++){
$dados = mysql_fetch_array($res);
?>
<option value="<?php echo alltrim($dados['lote']); ?>"><?php echo alltrim($dados['lote']);?></option>
<?php }?>
</select>
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.