[RESOLVIDO] Problemas com Menu Dinâmico

Senhores, bom dia,

Estou fazendo uma aplicação para marcação de consultas e gostaria de usar um menu dinâmico em três níveis, onde no terceiro nível, ao ser selecionado abrir um form de cadastro. A montagem do menu esta legal e dentro do esperado, mas ao selecionar um determinado item o form não carrega. Só carrega se eu informar o nome da aplicação no segundo nível, mas aí não resolver pois tenho que passar parâmetros existentes no terceiro nível. Segue abaixo o código para ver se alguém identifica meu erro.

sc_appmenu_reset(‘treemenu’);
sc_appmenu_create(‘treemenu’);

sc_lookup (ds_med, “select p.pf_codigo,
p.pf_nome,
p.pf_especialidade,
e.esp_nome
from sm_profissional p, sm_especialidade e
where e.esp_codigo = p.pf_especialidade
order by e.esp_nome, p.pf_nome”);

$qtd = count({ds_med});
$v_espx = ‘’;
$v_esp = {ds_med[0][3]};

for ($i=0; $i<$qtd; $i++)
{
$v_esp = {ds_med[$i][3]};

if ($v_espx != $v_esp)
{
	sc_appmenu_add_item('treemenu', $v_esp, '', $v_esp, , , , , );
	$v_espx = $v_esp;
}	

$med = {ds_med[$i][0]};
$nome_med = {ds_med[$i][1]};

sc_appmenu_add_item('treemenu', $med, $v_esp, $nome_med, , , , , );

sc_lookup (ds_ag, "
	SELECT id_medico, 
		dia_semana, 
		data_atend, 
		turno, 
		horario, 
		consulta_dia, 
		reserva_dia, 
	     CASE WHEN TO_CHAR(data_atend, 'D') = '1' THEN 'DOMINGO'
	       WHEN TO_CHAR(data_atend, 'D') = '2' THEN 'SEGUNDA'
	       WHEN TO_CHAR(data_atend, 'D') = '3' THEN 'TERCA'
	       WHEN TO_CHAR(data_atend, 'D') = '4' THEN 'QUARTA'
	       WHEN TO_CHAR(data_atend, 'D') = '5' THEN 'QUINTA'
	       WHEN TO_CHAR(data_atend, 'D') = '6' THEN 'SEXTA'
	       WHEN TO_CHAR(data_atend, 'D') = '7' THEN 'SABADO'
	     END AS dia_da_semana 
	FROM gestaoti.sm_agenda_medico 
	WHERE id_medico = $med 
	AND data_atend >= current_date
");

if (!empty({ds_ag}))
{
	$qtd_ag = count({ds_ag});

	for ($q=0; $q<7; $q++)
	{
		$dt = $med . '_' . $q;

		$dia = substr({ds_ag[$q][2]},8,2);
		$mes = substr({ds_ag[$q][2]},5,2);	
		$ano = substr({ds_ag[$q][2]},0,4);
		$data = $dia . '/' . $mes . '/' . $ano;
		$diasem = {ds_ag[$q][7]};
		$hr = substr({ds_ag[$q][4]},0,2) . ':' . substr({ds_ag[$q][4]},2,2);
		$v_dt = $data . '  -  ' . $hr;
		$v_dts = $data . '  -  ' . $hr . '  -  ' . $diasem;
	
		sc_appmenu_add_item('treemenu', $dt, $med, $v_dts, 'form_gestaoti_sm_atendimento_1', parm1=$med; parm2=$v_dt, , );
	}
}

}

O resultado do código acima é:

  • Cardiologia
  • Clinica Medica
    • ATILA TORRES
      11/11/2014 - 09:00 - TERCA
      12/11/2014 - 09:00 - QUARTA
      18/11/2014 - 09:00 - TERCA
      19/11/2014 - 09:00 - QUARTA
      25/11/2014 - 09:00 - TERCA
      26/11/2014 - 09:00 - QUARTA
      02/12/2014 - 09:00 - TERCA
  • CELSO DE SOUSA MENDES FILHO
  • JOSE CAVALCANTE DE OLIVEIRA JUNIOR
  • MANOEL DA SILVA MOURA
    15/12/2014 - 07:00 - SEGUNDA
    16/12/2014 - 07:00 - TERCA
    22/12/2014 - 07:00 - SEGUNDA
    23/12/2014 - 07:00 - TERCA
    29/12/2014 - 07:00 - SEGUNDA
    30/12/2014 - 07:00 - TERCA
    10/11/2014 - 07:00 - SEGUNDA
  • PATRICIA MACHADO VEIGA DE C. MELLO
  • RICARDO ANTONIO C DE CARVALHO
  • SILVANA VELOSO PEREIRA E SILVA
  • WARLINGTON JOSE BRANDÃO E MENDES
  • Dermatologista
  • ENDOCRINOLOGIA
    .
    .
    .

A dica como o PHP não é um visual Studio que você pode ir clicando em F8 ele ir pulando de linha em linha e mostrando o resultado das variáveis em tempo real.

Seria você clonar esta aplicação de menu, inserir manualmente poucos dados em 3 níveis e ver se ele carrega do jeito desejado, dando certo
o teste, pega o código e coloca na aplicação original e adapta para ele carregar novamente os dados das tabelas, por falta de um parâmetro,
uma virgula fora do lugar ele já não funciona conforme o desejado.

Obrigado Jailton,

Sua dica me ajudou muito… Refiz a aplicação incluindo procedimento por procedimento, testando-os a cada modificação… O código ficou basicamente o mesmo. O importante é que foi resolvido.

Ok, disponha.

Divisão e conquista

Divisão e Conquista (do inglês Divide and Conquer) em computação é uma técnica de projeto de algoritmos utilizada pela primeira vez por Anatolii Karatsuba em 1960 no algoritmo de Karatsuba.
http://pt.wikipedia.org/wiki/Divisão_e_conquista