[RESOLVIDO] Duplicidade de Fone

Boa tarde, gostaria de fazer no formulário uma validação do campo telefone.
Caso o telefone já esteja cadastrado, ele deverá trazer o mesmo formulário com os dados já cadastrados.

Segui o Tutorial do Vídeo MACROS 1 (http://www.scriptcase.com.br/videos-scriptcase/macros-1/) que se utiliza de uma Aplicação de Controle, mas nem no vídeo deu certo, tendo em vista que no final do vídeo, o resultado é com um cliente diferente do email digitado(isso está nos últimos segundos do vídeo).

Fiz o Seguinte:
Dentro da Aplicação de Formulário cad_cliente_supervisor criei, um Evento Ajax onChange do campo cli_fone1 :

Primeiro verifico se o resgistro existe, caso exista, chamo o mesmo formulário passando o parâmetro digitado.

$sql = “SELECT cli_fone1 FROM cliente WHERE cli_fone1 = {cli_fone1}”;

sc_lookup( ds, $sql);

if(isset({ds})) {
sc_alert(“Fone Já Cadastrado.\nVocê será redirecionado aos dados existentes !”);
$fone1 = {ds[0][0]};
sc_redir(cad_cliente_supervisor.php, cli_fone1=$fone1);
}

O Erro:
Ele identifica o fone já registrado, mas abre o formulário sempre no primeiro registro e não nos dados do cliente que foi identificado a duplicidade.

Se alguém puder me ajudar agradeço muito.

Eu faria assim:

if(isset({ds})) {
      sc_alert("Fone Já Cadastrado.\nVocê será redirecionado aos dados existentes !");
      sc_set_focus({fone});
}

Muito obrigado Kleyber, tentei como sugeriu mas não deu certo.

Desta forma ele também não trás as informações do cliente que possui o número do telefone duplicado.

Acredito que o erro esteja em passar o parâmetro(fone digitado e encontrado com duplicidade) para que o formulário seja carregado com base neste número de telefone. Neste momento ele carrega o formulário, mas não considera o telefone.

De qualquer forma agradeço muito seu apoio.

O certo seria:

$sql = “SELECT cliente_id, cli_fone1 FROM cliente WHERE cli_fone1 = {cli_fone1}”;

sc_lookup( ds, $sql);

if(isset({ds})) {
sc_alert(“Fone Já Cadastrado.\nVocê será redirecionado aos dados existentes !”);
$cliente_id = {ds[0][0]};
sc_redir(cad_cliente_supervisor.php, cliente_id=$cliente_id);
}

Entretanto você precisa colocar um parâmetro no SQL do form.

É exatamente como o allan disse.

PS: Fiz um teste aqui, se voce tirar todos os botões de navegação do form o próprio sc vai solicitar um variavel global nas chaves PK da tabela.
Tipo, se você tem uma tabela cliente a PK é o id_cliente edesabilita todos os botoes de navegação do form, quando for fazer um redir basta passar o id_cliente por parametro que o sc já te coloca no form em modo de edição se o id existir. (sc_redir(‘nome_do_form’, id_cliente = $id, "_SELF);

Allan e Almeida, vcs foram simplesmente perfeitos. Exatamente como disseram.

O código ficou assim:

$sql = “SELECT cli_id, cli_fone1 FROM cliente WHERE cli_fone1 = {cli_fone1}”;

sc_lookup( ds, $sql);

if(empty({ds})) {}
else{
sc_alert(“Fone Já Cadastrado.\nVocê será redirecionado aos dados existentes !”);
$cli = {ds[0][0]};
sc_redir(cad_cliente_supervisor.php, cli_id=$cli, _SELF);
}

O erro estava em chamar o fone e o ideal é chamar a PK, assim como Allan informa.

Usando o _SELF mesmo sem desabilitar os botões de navegação, está funcionando perfeitamente.

Não precisei incluir no SQL a variável.

Eu até já havia criado um outro form para receber a variável, mas com o _SELF nem isso precisou, como o Almeida ensinou.

Continuo fazendo testes para ver se apresenta erros, mas até agora está perfeito.

muito obrigado a todos que cooperaram e acredito que este post poderá ajudar muitas pessoas.

vlw mesmo !