Resolvido:Controle Erro Undefined offset: 0

Criei um aplicação do tipo controle para validar se o CPF já existe na base de dados:

$sql = “SELECT idvisitante,nomevisitante,cpfvisitante,rgvisitante,fotovisitante,
idempresavisitante,datacadvisitante,emailvisitante,fonefixovisitante,
celularfixovisitante
FROM tb_visitante_dados WHERE cpfvisitante = {CPF_VISITANTE}”;
sc_lookup(ds,$sql);
$idvisitante = {ds[0][0]};

sc_set_global($idvisitante);
if(isset({ds[0][0]})){
sc_redir(frm_inc_Visitante.php,id={ds[0][0]});
}else{
sc_redir(frm_inc_Visitante.php);
}

Ele esta funcionando, mais exibe a mensagem: Erro Undefined offset: 0 Quando o CPF não existe na base de dados e estou passando valor igual a “(0) Zero”.

No formulário frm_inc_Visitante.php estou digitando no SQL Cláusa where idvisitante = ‘[id]’

Você não esta testando o result set do sc_lookup.

De uma olhada no webhelp para a utilização correta desta macro.

Haroldo,

Desculpe a minha deficiência no scriptcase, estou no processo de aprendizado. O que você fala sobre o teste, seria isso?

if(isset({ds[0][0]})){
sc_redir(frm_inc_Visitante.php,id={ds[0][0]});
}else{
sc_redir(frm_inc_Visitante.php, id=0);
}

Olhei várias exemplo é a maioria esta dessa forma.

http://www.scriptcase.com.br/docs/pt_br/v81/macros-scriptcase/macros-scriptcase#sc_lookup

Isso, você tem que verificar se houve retorno de registros para a condição da query select.

e tem outra coisa como é que já coloca em uma Global $idvisitante = {ds[0][0]}; sem mesmo antes testar si o Dataset esta integro???

Ele esta funcionando, mais exibe a mensagem: Erro Undefined offset: 0 Quando o CPF não existe na base de dados e estou passando valor igual a “(0) Zero”.

Tu mesmo ja tinha se respondido :slight_smile:

Willian,

A minha necessidade é: Se ele encontrar o CPF, vai passa o ID para o frm_inc_Visitante.php com o id para ele fica no status de edição caso ele não encontre passa “0” (Zero) para o frm_inc_Visitante.php fica com o status de inclusão.

Como o meu conhecimento em scriptcase é básico ai estou passando “0”(Zero) quando não encontro. Você poderia informar como posso fazer esse processo?

quando encontra o cpf ( há registros conforme a condição ) a macro retorna um array com indice da linha e outro da coluna, quando não há cpf (não encontrou registros para a condição) a macro retorna com False, então sempre que utilizar a macro sc_lookup, vc deve testar o resulta set ( ou dataset) ou seja teste o retorno da macro como já foi dito nas respostas anteriores:

$sql = "
SELECT 
  idvisitante,nomevisitante,cpfvisitante,rgvisitante,fotovisitante,
  idempresavisitante,datacadvisitante,emailvisitante,fonefixovisitante,
  celularfixovisitante
FROM 
  tb_visitante_dados 
WHERE 
  cpfvisitante = '{CPF_VISITANTE}'";

sc_lookup(ds,$sql); // ds é a variável de retorno da macro

if (isset($ds[0][0])): //(sempre teste o result set logo após a macro)

  $idvisitante = {ds[0][0]};
  sc_set_global($idvisitante);
  sc_redir(frm_inc_Visitante.php,id=$idvisitante);  
  
else:
  
  sc_redir(frm_inc_Visitante.php); 

endif;

Haroldo,

Agradeço a sua atenção, funcionou perfeitamente.

Obrigado!!!