Autor Tópico: [RESOLVIDO] Problemas com Menu Dinâmico  (Lida 875 vezes)

jobsoncunha

  • Iniciante
  • **
  • Mensagens: 79
    • Email
[RESOLVIDO] Problemas com Menu Dinâmico
« Online: Novembro 07, 2014, 12:08:38 pm »
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
.
.
.
« Última modificação: Novembro 10, 2014, 11:12:58 am por jobsoncunha »

Jailton

  • Expert
  • *****
  • Mensagens: 2038
Re:Problemas com Menu Dinâmico
« Responder #1 Online: Novembro 07, 2014, 01:50:47 pm »
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.
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

jobsoncunha

  • Iniciante
  • **
  • Mensagens: 79
    • Email
Re:[RESOLVIDO] Problemas com Menu Dinâmico
« Responder #2 Online: Novembro 10, 2014, 11:15:19 am »
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.

Jailton

  • Expert
  • *****
  • Mensagens: 2038
Re:[RESOLVIDO] Problemas com Menu Dinâmico
« Responder #3 Online: Novembro 10, 2014, 11:24:54 am »
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%C3%A3o_e_conquista
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.