2013-07-18 3 views
1

맨 처음 파일 관리자를 만들었으며 탐색 섹션에 대한 도움이 필요합니다. 다음은이 섹션의 코드는 다음과 같습니다array_slice()로 이전 폴더로 이동

# CONFIGURATION: Folder 
$path = (empty($_GET['p']) ? '../../../' : '../../../'.$_GET['p']); 

# CONTROL: The folder exists 
if(file_exists($path)) { 
    $results = scandir($path); 
} 



# CONTROL: Root 
if(!empty($_GET['p'])) { 
    $navigation_loop = explode('/', $_GET['p']); 

    if(count($navigation_loop) > 1) { 
     $sliced = array_slice($navigation_loop, 0, -1); 
    } 


    # LOOP 
    foreach($navigation_loop AS $navigation) { 
     echo '<a href="javascript:void(0)" class="filemanager-link" id="path-navigation" data="'; 

     # CONTROL: There's more than one 
     if(count($navigation_loop) > 1) { 
      echo implode('/', $sliced); 

     # CONTROL: There's not more than one 
     } else { 
      echo $navigation; 
     } 

     echo '">'; 
      echo $navigation; 
     echo '</a>'; 
    } 
} 

$_GET['p']는 현재 폴더의 전체 경로, 즉 some/path/to/show/you이 포함되어 있습니다. 파일 이름은이 GET에 절대 표시되지 않습니다!

여기에 문제가 있습니다. 내가 some/path에 있고 some을 클릭하면 웹 사이트에서 some 폴더로 이동합니다. 그러나 내가 some/path/to에 있고 some를 클릭하면, 웹 사이트는 단지 some/path에 나를 데려 간다.

문제가 무엇인지 알고 있지만 (array_slice($navigation_loop, 0, -1))이 문제를 해결할 수있는 방법을 모르겠습니다. 내가 some/path 일 경우 array_slice() 기능의 경우 -1이됩니다. 하지만 내가 some/path/to 일 때 some으로 가고 싶다면 -2이어야하고 some/path으로 가고 싶다면 -1이 있어야합니다.

어떻게이 문제를 해결할 수 있습니까?

답변

0

는 주 if 문이 시도 :

if(!empty($_GET['p'])) { 
    $navigation_loop = explode('/', $_GET['p']); 

    # LOOP 
    for ($level=0; $level < count($navigation_loop); $level++) { 
     echo '<a href="javascript:void(0)" class="filemanager-link" id="path-navigation" data="'; 

     # CONTROL: There's more than one 
     $sliced = array_slice($navigation_loop, 0, ($level+1)); 
     if(count($navigation_loop) > 1) { 
      echo implode('/', $sliced); 
     # CONTROL: There's not more than one 
     } else { 
      echo $sliced; 
     } 

     echo '">'; 
      echo $navigation_loop[$level]; 
     echo '</a>'; 
    } 
} 

더 당신이 원하는 것과 같아야합니다.

+0

매력처럼 작동합니다! 많은 감사합니다! – Erik

0

오프셋을 계산할 수 없습니까?

저는이 문제를 완전히 이해하고 있는지 확신 할 수 없지만 슬라이스 호출에 올바른 매개 변수를 얻어야하는 것처럼 보입니다.

+0

당신은 나를 꽤 잘 이해하지만, 'to'를 클릭하면 나는 'some'에갑니다. 'path'를 클릭하면 코드로 다시 한번'some'로갑니다. 당신이 클릭하고있는 폴더로 가야합니다 :) – Erik

관련 문제