2014-10-03 3 views
0

현재 내 웹 페이지의 표시 순서를 변경하려고합니다. 내 현재 코드는 다음과 같습니다. 데이터 정렬 문제 Perl 및 HTML

I에 관계없이 항상 시나리오의 웹 페이지에서 사업부의 상단에 표시 할 첫 번째 IF 문 코드 블록

<div class="itemtitle"> 
    [% IF session.Type.match('B|N|H|BI') %] 
     [% session.TitleVal %]<br> 
     [% IF slot.getLocationString %]<div class="location">Location: <span>[% slot.getLocationString %]</span></div>[% END %] 
    [% ELSE %] 
     <a href="[% session.webprogram.getFilename %]">[% session.TitleVal %]</a><br> 
     [% IF slot.getLocationString %]<div class="location">Location: <span>[% slot.getLocationString %]</span></div>[% END %] 
     [% IF session.getParentsCollection('Program', ['ReadOnly','Y']) %] 
      <div class="sessionsponsor">Hosts: <span>(Joint 
      [% FOREACH parent IN session.getParentsCollection('Program') %] 
       [% IF loop.last && loop.first %]with [% END %][% IF !loop.last && loop.first %]between [% END %][% IF loop.last && !loop.first %]and [% END %]the [% IF loop.first %]<strong>[% END %][% parent.Title %][% IF loop.first %]</strong>[% END %][% IF !loop.last %]; [% END %] 
      [% END %])</span></div> 
     [% ELSE %] 
      [% IF session.program.Title %]<div class="sessionsponsor">Host: <span><strong>[% session.program.Title %]</strong></span>[% END %]</div> 
     [% END %]  
    [% END %] 

. 기본적으로 session.type = B N H 또는 BI 일 때마다. 그러나 현재 일어나고있는 방식은 두 번째 부분이 div의 맨 위에 "첫 번째 항목"으로 표시됩니다. 나는 이것을 올바르게 실행하고 얼마 동안 서클에 들어간 방법으로 고심하고있다. 문제의 근원에 도달하기 위해 더 깊이 파고 들어야 할 수도 있습니다. 그러나 누군가 먼저 이것을 여기에서 할 수있는 방법을 알고 있는지 알았을 것입니다. 누구든지 몇 가지 제안 사항이 있으면 크게 감사하겠습니다. 출력이 현재 보이는 것은 세션이 해당 arg와 같으면 div의 맨 아래에있는 것입니다. 첫 번째 else 블록이 div의 맨 위에 위치합니다. 이걸 어떻게 되 돌리고 싶습니다. 그것은 session.type B는 N 또는 H BI 동일하지 않을 때 실행되는 다른 블록이다 2wxClimate 말한다

<div class="itemnumber">  
    <a href="Session36494.html">2WxClimate Poster Session</a> 
</div> 
<div class="itemtitle"> 
     Formal Poster Viewing with Coffee Break<br> 
     <div class="location">Location: <span>Hall C3 (The Georgia World Congress Center)</span></div> 

. 두 번째 블록은 session.type이 해당 값과 같을 때 나타납니다. 현재 Coffee Break가 표시되는 곳에서 반대 순서로 표시하고 싶습니다.

</div> 
+0

"먼저 표시 하시겠습니까?" 루프 내부에 있습니까? – AKHolland

+0

죄송합니다. 저는 div의 맨 위에 계셨습니다. 방금 xD를 보았을 때 약간의 수정을했습니다. –

+0

"ELSE"가 실행 중이면'session.Type'이 조건과 일치하지 않습니다. 이유를 찾으려면 기본 변수를 조사해야합니다. – Cfreak

답변

2

문제는 우리에게 표시되는 코드에서 비롯된 것이 아닙니다.

당신이 우리에게 보여주는 TT 코드가 처리되면 바깥 쪽 [% IF %] 또는 바깥 쪽 [% ELSE %] 블록 중 하나에서 출력이 나옵니다. 당신은 둘 다 얻지 못할 것입니다.

우리에게 보여준 샘플 출력은 [% IF %] 분기에 의해 생성 된 블록 다음에 [% ELSE %] 분기에 의해 생성 된 블록이있는 것처럼 보입니다. 이것이 일어날 수있는 유일한 방법은 예제의 모든 코드가 두 번 처리되는 경우입니다. 그래서이 코드 주위에 어떤 종류의 루프가 있다고 추측합니다. 처음으로 루프를 돌 때, [% ELSE %] 블록이 실행되고 두 번째로 루프가 [% IF %] 블록이 실행될 때까지 반복됩니다.

그래서 문제를 해결하는 것은 우리에게 보여주는 코드와 아무 관련이 없습니다. 루프를 구동하는 코드 (또는 데이터)에 문제가 있습니다. session 변수가 배열에서 채워지면 루프를 시작하기 전에 배열을 정렬해야 표시하려는 요소가 먼저 배열에옵니다.

+0

좋아, 나는 이것이 문제라고 의심했다. 나를 분명히 해줘서 고마워. –

+0

유용한 답변을 찾으면 그것을 업 프리뷰하거나 수락하십시오 :-) –

+1

고무 오리가되어 주셔서 감사합니다. –