Mudar valor de campo Select pelo OnBlur ou OnChange de outro campo

Possuo o seguinte cenário, que provavelmente algum de vocês já passaram por isso:

Tenho o meu cadastro de vendedores e clientes onde utilizo a tabela do IBGE para UF, Município e Distrito. E estou tentando utilizar o componente tipo CEP, e criei 4 campos no meu formulário para receber automaticamente os valores de Logradouro, Bairro, Cidade e UF que o componente preenche automaticamente, no OnBlur do componente CEP, estou mandando capturar os códigos IBGE das tabelas Estados e Municípios, até aí está funcionando perfeitamente, porém após a segunda saída do campo CEP, claro.

O meu problema está no seguinte, o meu campo estado é um Select que traz os estados e gravo o id no banco e o município a mesma coisa. Os municípios só aparecem quando seleciono o estado (ajax), porém quando mando alterar o conteúdo dos campos no OnBlur sem selecionar o estado e o município da lista, os campos Logradouro e Bairro também não recebem valor, porém se eu selecionar exatamente o estado e o município corretos, de acordo com o CEP digitado, os valores de Logradouro e Bairro são preenchidos.

Aqui o código que estou usando no OnBlur, passando os campos cep_logradouro, cep_bairro, cep_cidade, cep_uf como parâmetros para o evento.

[code]$msg = “”;

/**

  • Monta o endereço
    */
    {ven_endereco} = strtoupper($cep_logradouro);
    $msg .= "Endereço: " . $cep_logradouro . “
    ”;

/**

  • Monta o bairro
    */
    {ven_bairro} = strtoupper($cep_bairro);
    $msg .= "Bairro: " . $cep_bairro . “
    ”;

/**

  • Localiza o código do estado de acordo com o cep selecionado
    */
    sc_lookup(ds,“select est_id from cad_estados where est_uf = '” . $cep_uf . “’”);
    if (isset({ds[0][0]}))
    {
    $msg .= "UF: " . $cep_uf . “(” . {ds[0][0]} . “)” . “
    ”;
    {est_id} = {ds[0][0]};
    }

/**

  • Localiza o código do município de acordo com o cep selecionado
    */
    sc_lookup(ds,“select mun_id from cad_municipios where mun_descricao like '%” . $cep_cidade . “%’”);
    if (isset({ds[0][0]}))
    {
    $msg .= "Município: " . $cep_cidade . “(” . {ds[0][0]} . “)” . “
    ”;
    {mun_id} = {ds[0][0]};
    }

//sc_ajax_message($msg, “CEP OnBlur”);
[/code]

Vejam bem, o evento ESTÁ FUNCIONANDO, mas somente quando seleciono manualmente o Estado e o Município CORRETOS nos campos tipo Select. Então, o que estou observando que seja o problema, é que os campos tipo Select não estão recebendo valor pelo evento.

Não tem um sc_consulta_cep(), onde eu passaria o CEP como parâmetro e me retornaria uma matriz com o resultado que preciso? Pois aí eu mesmo montaria o meu evento onChange para preencher os meus campos da maneira que preciso.

Quando se tem 2 select ou duploselect o tem como atualizar o segundo apartir de uma ação no primeiro select.

Ex.
Tenho um cadastro de UF

UF{ GO, RJ, SP, ETC }

E um cadastro de cidades.

Cidades 1 = { nome: Goiânia, UF: GO },{ nome: Rio Janeiro UF: RJ }

Com esses dados coloco o primeiro select para atualizar o segundo. Abaixo do lookup do select tem um atributo, processar evento ajax, aonde se marca e escolhe qual select deseja carregar após a seleção do primeiro. No lookup do segundo select se coloca um select usando algum filtro de acordo com a seleção do primeiro, ex do lookup do segundo select:

SELEC IdCidade, Nome FROM cidades WHERE UF = '{UF}' -> esse {UF} é o primeiro select.

Espero ter lhe ajudado.

Mas tem como sim montar um select apartir do onBlur ou onChange, não nativamente da ferramenta, mais utlizando seus recursos, como o Métodos Javascript.

O Haroldo tem uns exemplos no seu site de Selects dinâmicos, não é um bicho de sete cabeças fazer e é bem útil. Caso não consiga fazer, poste aqui que procuro um código que usei e posto para você tirar ideias.

Almeida, você não entendeu.

Isso eu já faço, como eu disse, está funcionando. O que preciso é alterar o conteúdo do campo est_id e mun+id através do evento OnBlur ou OnChange.

E vejo que se existisse uma função sc_consulta_cep() passando como parâmetro o CEP desejado e tendo como retorno uma matriz contendo os 6 valores necessários.

Leia novamente o meu texto e o meu código fonte do evento que você entenderá o que estou dizendo.

Veja bem, estou dizendo que preciso editar o conteúdo dos campos est_id (Select), e mun_id (Select) quando executar o evento OnChange do campo ven_cep (CEP). Ainda nem passei pelos campos est_id e mun_id, estou ainda no campo ven_cep.

Entenderam agora?

E mais uma vez questiono: Não existe um sc_consulta_cep()?

Tenho um problema semelhante, estou pensando em desenvolver uma função de cep paralela.
A idéia seria aproveitar a base de cep do scriptcase.
[]s

Bom, se quiser me ajudar.

Desenvolvi uma biblioteca fazendo adaptação do código do CEP no php do próprio ScriptCase, porém não consigo ver onde está dando erro.

Aqui é a biblioteca que criei em Ferramentas / Bibliotecas / Publicas:

/**
 * Funções de consulta de CEP ScriptCase
 */
function fs_consulta_cep($CEP, &$cep_uf, &$cep_nome, &$cep_cidade, &$cep_bairro, &$cep_rua)
{
	$cep_uf = "";
	$cep_nome = "";
	$cep_cidade = "";
	$cep_bairro = "";
	$cep_rua = "";
	
	/**
	 * $Id: nm_gp_gera_cep.php,v 1.5 2011-10-06 15:56:00 sergio Exp $
	 */
	/*******************************************************************
	 * Script Case
	 *------------------------------------------------------------------
	 * Arquivo  : nm_cep.php
	 * Modulo   : CEP
	 * Criacao  : 18.12.2001
	 * Alteracao: 19.12.2001
	 *------------------------------------------------------------------
	 * Busca de CEPs
	 *------------------------------------------------------------------
	 * © NetMake Solucoes em Informatica Ltda
	 *******************************************************************/
	
	$cep_localidades = array();
	$cep_especiais   = array();
	$cep_quant_loc   = 0;
	$cep_quant_esp   = 0;
	$arq_logr        = "";
	$achou_logr      = "";
	$achou_cep       = "";
	$local_cep       = "";
	$Opcao           = "";
	$Est             = "";
	$Localidade      = "";
	$Tipo            = "";
	$Logradouro      = "";
	$form_origem     = "";
	$cep_path = $_SESSION['scriptcase']['nm_root_cep'] . $_SESSION['scriptcase']['nm_path_cep'];
	
	$UF      = "";
	$NOME    = "";
	$CEP8    = "";
	$CIDADE  = "";
	$BAIRRO  = "";
	$RUA     = "";
	
	$_SESSION['scriptcase']['nm_charset_cep'] = "ISO-8859-1";
	if (isset($_SESSION['scriptcase']['charset']) && !empty($_SESSION['scriptcase']['charset']))
	{
	    $_SESSION['scriptcase']['nm_charset_cep'] = $_SESSION['scriptcase']['charset'];
	}
	
	$mens_erro = "";
	// Verifica integridade dos arquivos do CEP
	if (is_file($cep_path . "/arquivos/cep_contrl_arq.txt"))
	{
	    $raq_contrl = file($cep_path . "/arquivos/cep_contrl_arq.txt");
	    foreach ($raq_contrl as $cada_contrl)
	    {
	       $dados_contrl = explode("@#@", $cada_contrl);
	       if (isset($dados_contrl[1]) && !empty($dados_contrl[0]))
	       {
	           if (md5_file($cep_path . "/arquivos/cep_logradouros_" . $dados_contrl[0] . ".txt") != $dados_contrl[1])
	           {
	               $mens_erro .= "Os arquivos de acesso ao CEP est&atilde;o corrompidos. <br>";
	               break;
	           }
	       }
	    }
	}
	
	// Verifica existencia dos arquivos do CEP
	if (!is_file($cep_path . "/arquivos/cep_faixas_estados.txt"))
	{
	    $mens_erro .= "N&atilde;o foram encontrados os arquivos de acesso ao CEP. <br>";
	}
	
	// Busca por CEP
	if (isset($CEP) && !empty($CEP))
	{
	    $CEP       = str_replace(".", "", str_replace("-", "", $CEP));
	}
	// Erro
	else
	{
	    $mens_erro .= "CEP n&atild;o especificado.";
	}
	
	if (!empty($mens_erro))
	{
	    $mens_erro .= "Estes arquivos podem ser baixados do site do Scriprcase e copiados para o diret&oacute;rio onde foi instalado o PROD, <br>";
	    $mens_erro .= "dentro da seguinte estrutura: ../prod/cep/arquivos.<br>";
	    if (isset($_GET["onchange"]) && $_GET["onchange"] == "s")
	    {
	        $mens_erro = str_replace("<br>", "", $mens_erro);
	    }
		return($mens_erro);
	    exit;
	}
	
	
	// Decide qual acao sera executada
	// Localiza UF
	$UF = "";
	$estados  = file($cep_path . "/arquivos/cep_faixas_estados.txt");
	foreach ($estados as $cada_faixa)
	{
	    $est_dados = explode("@nm@", $cada_faixa);
	    if ( ($CEP >= $est_dados[1]) && ($CEP <= $est_dados[2]) )
	    {
	        $UF = $est_dados[0];
	        break;
	    }
	}
	if ("" == $UF)
	{
		return("CEP N&atilde;o encontrado.");
	}
	// Busca por Localidade
	nm_cep_ler_localidades(strtolower($UF));
	$registros = 0;
	while ($registros < $cep_quant_loc)
	{
	       $cada_loc = explode("@nm@", $cep_localidades[$registros]);
	       if ($cada_loc[0] == $UF && $cada_loc[2] == $CEP)
	       {
	           $CIDADE = $cada_loc[1];
	           $CEP8   = $CEP;
	           $registros = $cep_quant_loc;
	       }
	       $registros++;
	}
	// Busca por Logradouro
	nm_cep_ler_faixas_cep_localidades(strtolower($UF), $CEP);
	$registros = 0;
	if ($achou_cep == "S")
	{
	    while ($registros == 0)
	    {
	       $cada_logradouro = fgets($arq_logr, 1024);
	       $cada_loc = explode("@nm@", $cada_logradouro);
	       if (isset($cada_loc[3]) && $cada_loc[3] == $CEP)
	       {
	           $UF      = $cada_loc[0];
	           $NOME    = $cada_loc[2];
	           $CEP8    = $cada_loc[3];
	           $CIDADE  = $cada_loc[4];
	           $BAIRRO  = $cada_loc[5];
	           $TIPOEXT = $cada_loc[6];
	           if (!empty($cada_loc[1]))
	           {
	/*                       $TIPOEXT .= " " . $cada_loc[1]; */
	               $NOME  =  trim($cada_loc[1]) . " " . $NOME;
	           }
	           $COMPLE  = $cada_loc[7];
	           $registros = 1;
	       }
	       else
	       {
	           if (!isset($cada_loc[4]) || $local_cep != $cada_loc[4])
	           {
	               $registros = 1;
	           }
	       }
	    }
	    fclose($arq_logr);
	}
	// Busca por Logradouro Especial
	nm_cep_ler_especiais(strtolower($UF));
	$registros = 0;
	while ($registros < $cep_quant_esp)
	{
	       $cada_loc = explode("@nm@", $cep_especiais[$registros]);
	       if ($cada_loc[1] == $CEP)
	       {
	           $UF      = $cada_loc[2];
	           $NOME    = $cada_loc[0];
	           $CEP8    = $cada_loc[1];
	           $CIDADE  = $cada_loc[4];
	           $BAIRRO  = $cada_loc[5];
	           $RUA     = $cada_loc[7];
	           $TIPOEXT = $cada_loc[6];
	           if (!empty($cada_loc[8]))
	           {
	               $RUA  =  trim($cada_loc[8]) . " " . $RUA;
	           }
	           if (!empty($cada_loc[3]))
	           {
	               $RUA .= ", " . $cada_loc[3];
	           }
	           $COMPLE = "";
	           $registros = $cep_quant_esp;
	       }
	       $registros++;
	}
	
	$cep_uf = $UF;
	$cep_nome = $NOME;
	$cep_cidade = $CIDADE;
	$cep_bairro = $BAIRRO;
	$cep_rua = $RUA;
	
	return($mens_erro);
}

function nm_cep_ler_localidades($estado)
{
    global $cep_path, $cep_localidades, $cep_quant_loc;
    if (!empty($cep_localidades))
    {
        return;
    }
    $cep_localidades  = file($cep_path . "/arquivos/cep_localidades_" . $estado . ".txt");
    $cep_quant_loc   = count($cep_localidades);
}

function nm_cep_ler_especiais($estado)
{
    global $cep_path, $cep_especiais, $cep_quant_esp;
    if (!empty($cep_especiais))
    {
        return;
    }
    $cep_especiais  = file($cep_path . "/arquivos/cep_grandes_usuarios_" . $estado . ".txt");
    $cep_quant_esp   = count($cep_especiais);
}

function nm_cep_ler_faixas_cep_localidades($estado, $cep)
{
    global $cep_path, $achou_cep, $achou_logr, $local_cep;

    $achou_cep = "N";
    $cep_faixas  = file($cep_path . "/arquivos/cep_faixas_localidades.txt");
    foreach ($cep_faixas as $cada_faixa)
    {
        $cada_loc = explode("@nm@", $cada_faixa);
        if ($cada_loc[0] == strtoupper($estado) && ($cep >= $cada_loc[2] && $cep <= $cada_loc[3]))
        {
            $achou_cep = "S";
            break;
        }
    }
    if ($achou_cep == "S")
    {
        $local_cep = $cada_loc[1];
        nm_cep_ler_pointer_logradouros($estado, $cada_loc[1]);
        if ($achou_logr == "N")
        {
            $achou_cep = "N";
        }
    }
}

function nm_cep_ler_pointer_logradouros($estado, $cidade)
{
    global $cep_path, $arq_logr, $achou_logr;

    $achou_logr = "N";
    $arq_point = file($cep_path . "/arquivos/cep_pointer_log_" . $estado . ".txt");
    $cid_pesq  = RetiraAcentos($cidade);
    foreach ($arq_point as $cada_point)
    {
        $cada_loc = explode("@nm@", $cada_point);
        $cid_pt   = RetiraAcentos($cada_loc[0]);
        if ($cid_pt == $cid_pesq)
        {
            $achou_logr = "S";
            break;
        }
    }
    if ($achou_logr == "N")
    {
        return;
    }
    $arq_logr  = fopen($cep_path . "/arquivos/cep_logradouros_" .  strtolower($estado) . ".txt", 'r');
    fseek($arq_logr, $cada_loc[1]);
}

function RetiraAcentos($Campo)
{
   $Campo = strtolower($Campo);
   $Campo = str_replace("á", "a", $Campo);
   $Campo = str_replace("à", "a", $Campo);
   $Campo = str_replace("ã", "a", $Campo);
   $Campo = str_replace("â", "a", $Campo);
   $Campo = str_replace("é", "e", $Campo);
   $Campo = str_replace("ê", "e", $Campo);
   $Campo = str_replace("í", "i", $Campo);
   $Campo = str_replace("ó", "o", $Campo);
   $Campo = str_replace("õ", "o", $Campo);
   $Campo = str_replace("ô", "o", $Campo);
   $Campo = str_replace("ú", "u", $Campo);
   $Campo = str_replace("ü", "u", $Campo);
   $Campo = str_replace("ç", "c", $Campo);
   return $Campo;
}

function nm_decode_ISO(&$val)
{
    $val = mb_convert_encoding($val, $_SESSION['scriptcase']['nm_charset_cep'], "ISO-8859-1");
}

E aqui é o meu evento OnChange do campo CEP:

try {
	$cep_uf = "";
	$cep_nome = "";
	$cep_cidade = "";
	$cep_bairro = "";
	$cep_rua = "";
	
	$resp = fs_consulta_cep($ven_cep, $cep_uf, $cep_nome, $cep_cidade, $cep_bairro, $cep_rua);
	{ven_bairro} = $cep_bairro;
} catch(Exception $e) {
	$resp = $e->getMessage();
	{ven_bairro} = $resp;
}

Aparece o processamento ajax mas não mostra nada na tela, e também não altera o meu campo {ven_bairro}.

Parece que a função está gerando alguma exceção mas não me apresenta nada.

Vou copiar o teu código e fazer uns testes.
[]s

Endrigo,
Reescrevi a função da netmake pra poder entender e encontrei o problema.
Fica faltando a busca na tabela de municipio para poder colocar o código do município no combobox ao invés do nome.
Estou trabalhando nisso.
Segue o código do evento onChange do campo cep:

[code]try {
$cep_uf = “”;
$cep_nome = “”;
$cep_cidade = “”;
$cep_bairro = “”;
$cep_rua = “”;

$resp = consultaCEP({CEP}, $cep_uf, $cep_nome, $cep_cidade, $cep_bairro, $cep_rua, $cep_tipoext);
{Bairro} = $cep_bairro;
{Endereco} = $cep_nome;
{Municipio} = $cep_cidade;
{Complemento} = $cep_tipoext;
{UF} = $cep_uf;

} catch(Exception $e) {
$resp = $e->getMessage();
{Bairro} = $resp;
}[/code]

E o código da função reescrito:

[code]<?php
/**
* Funções de consulta de CEP ScriptCase
*/
function consultaCEP($CEP, &$cepUF, &$cepNome, &$cepCidade, &$cepBairro, &$cepRua, &$cepTipoExt)
{
$cepUF = “”;
$cepNome = “”;
$cepCidade = “”;
$cepBairro = “”;
$cepRua = “”;

	global $cepPath, $achouCEP, $achouLogr, $arqLogr, $localCEP;
	global $cepLocalidades, $cepQuantLoc, $cepEspeciais, $cepQuantEsp;
	
	$cepLocalidades = array();
	$cepEspeciais   = array();
	$cepQuantLoc   = 0;
	$cepQuantEsp   = 0;
	$arqLogr        = "";
	$achouLogr      = "";
	$achouCEP       = "";
	$localCEP       = "";
	$opcao           = "";
	$est             = "";
	$localidade      = "";
	$tipo            = "";
	$logradouro      = "";
	$formOrigem     = "";
	$cepPath = $_SESSION['scriptcase']['nm_root_cep'] . $_SESSION['scriptcase']['nm_path_cep'];
	
	$_UF      = "";
	$_NOME    = "";
	$_CEP8    = "";
	$_CIDADE  = "";
	$_BAIRRO  = "";
	$_RUA     = "";
	
	$_SESSION['scriptcase']['nm_charset_cep'] = "ISO-8859-1";
	if (isset($_SESSION['scriptcase']['charset']) && !empty($_SESSION['scriptcase']['charset']))
	{
		$_SESSION['scriptcase']['nm_charset_cep'] = $_SESSION['scriptcase']['charset'];
	}
	
	$mensErro = "";
	// Verifica integridade dos arquivos do CEP
	if (is_file($cepPath . "/arquivos/cep_contrl_arq.txt"))
	{
		$raqContrl = file($cepPath . "/arquivos/cep_contrl_arq.txt");
		foreach ($raqContrl as $cadaContrl)
		{
		   $dadosContrl = explode("@#@", $cadaContrl);
		   if (isset($dadosContrl[1]) && !empty($dadosContrl[0]))
		   {
			   if (md5_file($cepPath . "/arquivos/cep_logradouros_" . $dadosContrl[0] . ".txt") != $dadosContrl[1])
			   {
				   $mensErro .= "Os arquivos de acesso ao CEP est&atilde;o corrompidos. <br>";
				   break;
			   }
		   }
		}
	}
	
	// Verifica existencia dos arquivos do CEP
	if (!is_file($cepPath . "/arquivos/cep_faixas_estados.txt"))
	{
		$mensErro .= "N&atilde;o foram encontrados os arquivos de acesso ao CEP. <br>";
	}
	
	// Busca por CEP
	if (isset($CEP) && !empty($CEP))
	{
		$CEP       = str_replace(".", "", str_replace("-", "", $CEP));
	}
	// Erro
	else
	{
		$mensErro .= "CEP n&atild;o especificado.";
	}
	
	if (!empty($mensErro))
	{
		
		$mensErro .= "Estes arquivos podem ser baixados do site do Scriprcase e copiados para o diret&oacute;rio onde foi instalado o PROD, <br>";
		$mensErro .= "dentro da seguinte estrutura: ../prod/cep/arquivos.<br>";
		if (isset($_GET["onchange"]) && $_GET["onchange"] == "s")
		{
			$mensErro = str_replace("<br>", "", $mensErro);
		}
		return($mensErro);
		exit;
	}
	
	// Decide qual acao sera executada
	// Localiza UF
	$_UF = "";
	$estados  = file($cepPath . "/arquivos/cep_faixas_estados.txt");
	foreach ($estados as $cadaFaixa)
	{
		$estDados = explode("@nm@", $cadaFaixa);
		if ( ($CEP >= $estDados[1]) && ($CEP <= $estDados[2]) )
		{
			$_UF = $estDados[0];
			break;
		}
	}
	if ("" == $_UF)
	{
		return("CEP N&atilde;o encontrado.");
	}
	
	// Busca por Localidade
	cepLerLocalidades(strtolower($_UF));
	$registros = 0;
	
	while ($registros < $cepQuantLoc)
	{
		   $cadaLoc = explode("@nm@", $cepLocalidades[$registros]);
		   if ($cadaLoc[0] == $_UF && $cadaLoc[2] == $CEP)
		   {
			   $_CIDADE = $cadaLoc[1];
			   $_CEP8   = $CEP;
			   $registros = $cepQuantLoc;
		   }
		   $registros++;
	}
	
	// Busca por Logradouro
	cepLerFaixasCepLocalidades(strtolower($_UF), $CEP);
	$registros = 0;
	if ($achouCEP == "S")
	{
		while ($registros == 0)
		{
		   $cadaLogradouro = fgets($arqLogr, 1024);
		   $cadaLoc = explode("@nm@", $cadaLogradouro);
			
		   if (isset($cadaLoc[3]) && $cadaLoc[3] == $CEP)
		   {
			   $_UF      = $cadaLoc[0];
			   $_NOME    = $cadaLoc[2];
			   $_CEP8    = $cadaLoc[3];
			   $_CIDADE  = $cadaLoc[4];
			   $_BAIRRO  = $cadaLoc[5];
			   $_TIPO_EXT = $cadaLoc[6];
			   if (!empty($cadaLoc[1]))
			   {
	/*                       $_TIPO_EXT .= " " . $cadaLoc[1]; */
				   $_NOME  =  trim($cadaLoc[1]) . " " . $_NOME;
			   }
			   $_COMPLE  = $cadaLoc[7];
			   $registros = 1;
		   }
		   else
		   {
			   if (!isset($cadaLoc[4]) || $localCEP != $cadaLoc[4])
			   {
				   $registros = 1;
			   }
		   }
		}
		fclose($arqLogr);
	}
	
	// Busca por Logradouro Especial
	cepLerEspeciais(strtolower($_UF));
	$registros = 0;
	while ($registros < $cepQuantEsp)
	{
		   $cadaLoc = explode("@nm@", $cepEspeciais[$registros]);
		   if ($cadaLoc[1] == $CEP)
		   {
			   $_UF      = $cadaLoc[2];
			   $_NOME    = $cadaLoc[0];
			   $_CEP8    = $cadaLoc[1];
			   $_CIDADE  = $cadaLoc[4];
			   $_BAIRRO  = $cadaLoc[5];
			   $_RUA     = $cadaLoc[7];
			   $_TIPO_EXT = $cadaLoc[6];
			   if (!empty($cadaLoc[8]))
			   {
				   $_RUA  =  trim($cadaLoc[8]) . " " . $_RUA;
			   }
			   if (!empty($cadaLoc[3]))
			   {
				   $_RUA .= ", " . $cadaLoc[3];
			   }
			   $_COMPLE = "";
			   $registros = $cepQuantEsp;
		   }
		   $registros++;
	}
	
	$cepUF = $_UF;
	$cepNome = $_NOME;
	$cepCidade = $_CIDADE;
	$cepBairro = $_BAIRRO;
	$cepRua = $_RUA;
	$cepTipoExt = $_TIPO_EXT;
	
	return($mensErro);
}

function cepLerLocalidades($pEstado)
{
	global $cepPath, $cepLocalidades, $cepQuantLoc;

	if (!empty($cepLocalidades))
	{
		return;
	}
	$cepLocalidades  = file($cepPath . "/arquivos/cep_localidades_" . $pEstado . ".txt");
	$cepQuantLoc   = count($cepLocalidades);
	
}

function cepLerEspeciais($pEstado)
{
	global $cepPath, $cepEspeciais, $cepQuantEsp;
	if (!empty($cepEspeciais))
	{
		return;
	}
	$cepEspeciais  = file($cepPath . "/arquivos/cep_grandes_usuarios_" . $pEstado . ".txt");
	$cepQuantEsp   = count($cepEspeciais);
}

function cepLerFaixasCepLocalidades($pEstado, $pCEP)
{
	global $cepPath, $achouCEP, $achouLogr, $localCEP;
	$achouCEP = "N";
	$cepFaixas  = file($cepPath . "/arquivos/cep_faixas_localidades.txt");
	foreach ($cepFaixas as $cadaFaixa)
	{
		$cadaLoc = explode("@nm@", $cadaFaixa);
		if ($cadaLoc[0] == strtoupper($pEstado) && ($pCEP >= $cadaLoc[2] && $pCEP <= $cadaLoc[3]))
		{
			$achouCEP = "S";
			break;
		}
	}
	if ($achouCEP == "S")
	{
		$localCEP = $cadaLoc[1];
		cepLerPointerLogradouros($pEstado, $cadaLoc[1]);
		if ($achouLogr == "N")
		{
			$achouCEP = "N";
		}
	}
}

function cepLerPointerLogradouros($pEstado, $pCidade)
{
	global $cepPath, $arqLogr, $achouLogr;

	$achouLogr = "N";
	$arqPoint = file($cepPath . "/arquivos/cep_pointer_log_" . $pEstado . ".txt");
	
	$cidPesq  = retiraAcentos($pCidade);
			
	foreach ($arqPoint as $cadaPoint)
	{
		$cadaLoc = explode("@nm@", $cadaPoint);
		$cidPt   = retiraAcentos($cadaLoc[0]);
		if ($cidPt == $cidPesq)
		{
			$achouLogr = "S";
			break;
		}
	}
	if ($achouLogr == "N")
	{
		return;
	}
	$arqLogr  = fopen($cepPath . "/arquivos/cep_logradouros_" .  strtolower($pEstado) . ".txt", 'r');
	fseek($arqLogr, $cadaLoc[1]);
}

function retiraAcentos($pCampo)
{

   $pCampo = strtolower($pCampo);
   $pCampo = str_replace("á", "a", $pCampo);
   $pCampo = str_replace("à", "a", $pCampo);
   $pCampo = str_replace("ã", "a", $pCampo);
   $pCampo = str_replace("â", "a", $pCampo);
   $pCampo = str_replace("é", "e", $pCampo);
   $pCampo = str_replace("ê", "e", $pCampo);
   $pCampo = str_replace("í", "i", $pCampo);
   $pCampo = str_replace("ó", "o", $pCampo);
   $pCampo = str_replace("õ", "o", $pCampo);
   $pCampo = str_replace("ô", "o", $pCampo);
   $pCampo = str_replace("ú", "u", $pCampo);
   $pCampo = str_replace("ü", "u", $pCampo);
   $pCampo = str_replace("ç", "c", $pCampo);
   return $pCampo;
}

function decodeISO(&$val)
{
	$val = mb_convert_encoding($val, $_SESSION['scriptcase']['nm_charset_cep'], "ISO-8859-1");
}

?>[/code]

[]s

Allan, não funcionou, e a aplicação ficou travada. Não salva, e não movimenta entre os registros, e também não apresenta erros.

Aqui deu certo.
Vc modificou alguma coisa?
Quer me mandar um export do teu form pra eu testar?
[]s

Deu certo aqui. Parabéns Allan.

Ola gostaria de saber como faço para usar está função, pois não estou entendendo como usar dentro da ferramenta