2012-07-01 4 views
-2

디렉토리에 400 개 이상의 그림이있는 웹 사이트가 있습니다. 모든 페이지에 12 개씩 나열하고 싶습니다. 내가 어떻게 할 수 있니? 실제 코드는 다음과 같습니다.PHP 400 페이지의 페이지 넘김

<!doctype html> 
<html lang="hu"> 
    <head> 
     <title>Amatőr</title> 
     <meta charset="utf-8"/> 
    </head> 
    <body> 
     <h2><a href="../php/upload_picture.php" style="font-size:15pt; color:#ff00e8; text-decoration: none;">Vannak jó képeid? Töltsd fel őket és kikerülhetnek az oldalra!</a></h2> 
     <article> 
      <header> 
       Amatőr Lányok 
      </header> 
      <div id="kepek"> 
       <?php 
       $imgdir = '../img/blog/img/amator/'; //Pick your folder 
       $allowed_types = array('png','jpg','jpeg','gif'); //Allowed types of files 
       $dimg = opendir($imgdir);//Open directory 
       while($imgfile = readdir($dimg)) 
       { 
        if(in_array(strtolower(substr($imgfile,-3)),$allowed_types) OR 
         in_array(strtolower(substr($imgfile,-4)),$allowed_types)) 
       /*If the file is an image add it to the array*/ 
        {$a_img[] = $imgfile;} 
       } 


       $totimg = count($a_img); //The total count of all the images 
       //Echo out the images and their paths incased in an li. 
       for($x=0; $x < $totimg; $x++){ echo "<a onclick='Lightbox.start(this, false, false, false, false); return false;' rel='lightbox[amator]' href='" . $imgdir . $a_img[$x] . "'><img class='kep_listaz' width='200px' height='160px' src='" . $imgdir . $a_img[$x] . "' /></a>";} 
       ?> 
      </div> 
     </article> 
    </body> 
</html> 

Thanks! 

답변

0

그래서 이것은 정말 더 많은 수학 질문입니다. 이미지의 총 개수를 가져온 다음 페이지 당 최대 이미지 수로 나눕니다 (ceil()).

이제 모든 이미지를 보는 데 필요한 최대 페이지 수를 얻었습니다. 지금해야 할 일은 page = 1/page = 2 등을 원하는지 아니면 시작과 끝으로 할지를 결정하는 것입니다. 그러나 둘 다 상대적으로 쉽게 할 수 있습니다.

$page = (int)$_GET['page']; 
$start = $page * $max_items_per_page; 
$end = $start + $max_items_per_page; 

이렇게하면 아마이 방법이 유용 할 것입니다. 또한 추가 된 코드를 추가하여 요청한 페이지의 범위를 벗어나지 않도록하십시오.

이제 파일 배열을 가져와 (glob()을 사용하는 것이 좋습니다) array_slice() 시작부터 끝까지 사용하는 것이 좋습니다.

마지막으로 이전/다음 페이지 만 있거나 페이지 전체 또는 일부를 나열하십시오. 다음 및 이전은 $page에 1을 추가/삭제하는 것처럼 간단합니다. 즉, $next = $page + 1;$prev = $page-1;입니다. 다시 말하지만,이 두 가지 모두에 대해 경계를 넘지 않았는지 다시 한 번 확인하십시오. 아마도 범위 밖인 경우 다음/이전을 표시하지 않는 것이 가장 좋습니다.

0

이러한 종류의 데이터를 페이지 매김하는 두 가지 방법이 있습니다 : 모두를 보내는 프론트 엔드에서 JavaSctipt는 사용자에게 한 번에 한 부분 만 표시하거나 페이지 만 렌더링되는 백엔드에만 표시합니다 한 번에 한 부분을 차지하고 전체 페이지를 새로 고침하여 더 많은 정보를 얻을 수 있습니다. 루프

$page = isset($_GET['page']) ? $_GET['page']-1 : 0;이 변경 $x=$page*12; $x < $totimg && $x < ($page+1)*12; $x++

에 루프의 인수가 그런 다음 추가하여 페이지를 조작 할 수 있습니다 추가하려면 먼저

:

가장 빠른 방법은 그것을 백 엔드 방식을 사용하고 작업하세요 ?page=3 to url

잘못된 페이지 번호가 제출되면 오류 처리를 추가 할 수 있습니다.

+0

감사합니다. 문제는이 페이지가 ajax를 통해 브라우저에 넘겨 지므로 URL이 실제로 변경되지 않는다는 것입니다. ? = x를이 방법으로 추가하려면 어떻게합니까? – trisztann

+0

ajax 호출에 대한 url을 변경할 수있는 이유가 없으며, ajax가 게시물 인 경우 param을 데이터로 보낼 수 있습니다. – swider

+0

여기 내 현재 아약스 전화 : http://pastebin.com/BFvyS1jF입니다. 내가 올바르게 했습니까? URL의 끝에? page = 1을 추가했습니다. 또한 이미지 아래의 ajaxed 콘텐츠에 페이지 탐색을 추가하려면 어떻게해야합니까? 감사! – trisztann

관련 문제