Въпрос за галерия

kriss

Registered
Някой може ли да каже как ще сане кода на тази галерия като се добави сканиране на директория а не да се въвеждат картинките една по една.. :shock:
 
еми аз използвам тази дето показа обаче се получава мн дълга страницата.. Ето виж как излиза.
Ако можеш да ми дадеш код който да страницира и да излизат по ~12 картинки (без MySQL) ще стане :lol:
 
Ок. След малко ще си едитна мнението :)
Едит: Сетих се, че съм едитвал този код и преди, затова се разтърсих из форума.
Виж тук :D
Пуснал си тази тема доста отдавна, но си забравил да я погледнеш. Там съм ти дал кода как ще стане
:?:
 
Вземи кода за MySQL странициране на Жоро. Лесно ще го модифицираш да работи с твоята галерия :?:
 
Пробвай така.
Код:
 <?php
session_start();
   
   $dir = ".";
   $picsOnRow = 3;
   $picsWidth = 120;
   $position = 2;
   $tableBorder = 5;
   $fileTypes = array( "jpg", "gif", "png", 'php' );
   $doCache = false; //ke6irane na failovete
   $cacheTime = 30; //v minuti
   $pp = 9; //failove na stranica

   if ( $position == 1 )
       $pos = ' align="left"';
   if ( $position == 2 )
       $pos = ' align="center"';
   if ( $position == 3 )
       $pos = ' align="right"';
   echo "<table border=\"" . $tableBorder . "\"" . $pos . ">";

   $page = isset( $_GET['page'] ) ? $_GET['page'] : 1;
   $page = is_numeric( $page ) ? $page : 1;
   $start = ( $page * $pp ) - $pp;
   $fileCount = 0;
   $cacheTime = $cacheTime * 60; //stava v sekundi
   $time = time();
   
   if( isset( $_SESSION['filesCache'] ) && isset( $_SESSION['filesCacheTime'] ) ){
      
      $timeCached = $_SESSION['filesCacheTime'];
      $timeDiff = $time - $timeCached;
      
      if( $timeDiff >= $cacheTime ){
         $files = getFiles( $dir, $fileTypes );
         $_SESSION['filesCache'] = $files;
         $_SESSION['filesCacheTime'] = $time;
      }else{
         
         $files = $_SESSION['filesCache'];
      }
   }else{
      
      $files = getFiles( $dir, $fileTypes );
      $_SESSION['filesCache'] = $files;
      $_SESSION['filesCacheTime'] = $time;
   }
   
   $files = pagination( $files, $start );

   if( count( $files ) > 0 ){
      $n = 1;
      foreach ( $files as $file ) {
   
          if ( $fileCount == 0 ) {
              $fileCount = 1;
              echo "\n<tr>\n";
          }
   
          if ( $fileCount == $picsOnRow )
              $closeTr = "</tr>\n<tr>\n";
          else
              $closeTr = '';
   
          echo '<td><a href="' . $dir . $file . '" target="_blank">
            <img src="' . $dir . $file . '" width="' . $picsWidth .'" border="0">
         </a>' . "</td>\n";
   
          echo $closeTr;
   
          if ( $fileCount == $picsOnRow )
              $fileCount = 0;
   
         if( $n >= $pp ) break;
         $fileCount++;
         $n++;
      }
      
      echo '</tr>';
      echo '</table>' . "\n";
   }else{
      
      echo 'Nqma failove!';
   }
   function getFiles( $dir, $fileTypes ) {

      $files = array();
      
       if ( $handle = @opendir($dir) ) {

           while ( false !== ($file = readdir($handle)) ) {

               if ( $file != "." && $file != ".." ) {

                   $ext = end( explode(".", $file) );

                   if ( in_array($ext, $fileTypes) ) {
                       $files[] = $file;
                   }
               }
           }

           closedir( $handle );
       }
       return $files;
   }

   function pagination( $files, $start ) {

       for ( $i = 0; $i < $start; $i++ ) {

           array_shift( $files );
       }

       return $files;
   }

$limit = ($pp*$page)-$pp; //определяме лимитирането

$max=count($files);
$total=ceil($max/$pp); //пресмятаме броя на страниците

echo "<br><br><br><br>";

//от тук започва кода за показването на страниците
if ($page > 1) {
$prev = ($page - 1);
echo "<a href=\"?page=$prev\"><font face=\"Trebuchet MS\">Предишна страница</font></a> ";
}
else echo "<font face=\"Trebuchet MS\">Предишна страница</font> ";

if (!$page or ($page > $total)) {
$page="1";
}

if ($total < 10) {
for($i=1 ; $i<=$total ; $i++) {
if ( ($page)==$i ) {
echo "<b>$i</b> ";
}
else {
echo "<a href=\"?page=".$i."\">".$i."</a> ";
}
}
}
else {
for($i=1 ; $i<=3 ; $i++) {
if ( ($page)==$i ) {
echo "<b>$i</b> ";
}
else {
echo "<a href=\"?page=".$i."\">".$i."</a> ";
}
}

if ($page <= 3) {
if ($page == 3) echo "<a href=\"?page=4\">4</a> ";
echo "... ";
for ($i=$total-2; $i<=$total; $i++)
echo "<a href=\"?page=".$i."\">".$i."</a> ";
}
if ($page == 5) $parva.= "<a href=\"?page=4\">4</a> ";

if ( ($page == 4) or ($page == 5) ) {
for ($i=$page; $i<=$page+1; $i++) {
if ($page == $i) echo "<b>$i</b> ";
else echo "<a href=\"?page=".$i."\">".$i."</a> ";
}
echo "... ";
for ($i=$total-2; $i<=$total; $i++)
echo "<a href=\"?page=".$i."\">".$i."</a> ";
}

if ( ($page > 5) and ($page < ($total - 4)) ) {
echo "... ";
for ($i=$page-1; $i<=$page+1; $i++) {
if ($page == $i) echo "<b>$i</b> ";
else echo "<a href=\"?page=".$i."\">".$i."</a> ";
}
echo "... ";
for ($i=$total-2; $i<=$total; $i++)
echo "<a href=\"?page=".$i."\">".$i."</a> ";
}

if ( $page > ($total - 5) ) {
echo "... ";
for ($i=$total-5; $i<=$total; $i++) {
if ($page == $i) echo "<b>$i</b> ";
else echo "<a href=\"?page=".$i."\">".$i."</a> ";
}
}
}

if ($page < $total) {
$next = ($page + 1);
echo "<a href=\"?page=$next\"><font face=\"Trebuchet MS\">Следваща страница</font></a> ";
}
else echo "<font face=\"Trebuchet MS\">Следваща страница</font>";
?>
 
Хмм, прегледай кода отново. Мисля че си объркал нещо при слагането, защото аз копирах кода директно и работеше перфектно :lol:
 
ето демо тука май няма какво да объркам: ето и кода:
Код:
<html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>...</title>
</head>

<body>
<center>
<br>
<br>
<br>
<br>
<br>
<br>

 <?php 
session_start(); 
    
   $dir = "./wallpapers"; 
   $picsOnRow = 3; 
   $picsWidth = 120; 
   $position = 2; 
   $tableBorder = 5; 
   $fileTypes = array( "jpg", "gif", "png", 'php' ); 
   $doCache = false; //ke6irane na failovete 
   $cacheTime = 30; //v minuti 
   $pp = 9; //failove na stranica 

   if ( $position == 1 ) 
       $pos = ' align="left"'; 
   if ( $position == 2 ) 
       $pos = ' align="center"'; 
   if ( $position == 3 ) 
       $pos = ' align="right"'; 
   echo "<table border=\"" . $tableBorder . "\"" . $pos . ">"; 

   $page = isset( $_GET['page'] ) ? $_GET['page'] : 1; 
   $page = is_numeric( $page ) ? $page : 1; 
   $start = ( $page * $pp ) - $pp; 
   $fileCount = 0; 
   $cacheTime = $cacheTime * 60; //stava v sekundi 
   $time = time(); 
    
   if( isset( $_SESSION['filesCache'] ) && isset( $_SESSION['filesCacheTime'] ) ){ 
      
      $timeCached = $_SESSION['filesCacheTime']; 
      $timeDiff = $time - $timeCached; 
      
      if( $timeDiff >= $cacheTime ){ 
         $files = getFiles( $dir, $fileTypes ); 
         $_SESSION['filesCache'] = $files; 
         $_SESSION['filesCacheTime'] = $time; 
      }else{ 
          
         $files = $_SESSION['filesCache']; 
      } 
   }else{ 
      
      $files = getFiles( $dir, $fileTypes ); 
      $_SESSION['filesCache'] = $files; 
      $_SESSION['filesCacheTime'] = $time; 
   } 
    
   $files = pagination( $files, $start ); 

   if( count( $files ) > 0 ){ 
      $n = 1; 
      foreach ( $files as $file ) { 
    
          if ( $fileCount == 0 ) { 
              $fileCount = 1; 
              echo "\n<tr>\n"; 
          } 
    
          if ( $fileCount == $picsOnRow ) 
              $closeTr = "</tr>\n<tr>\n"; 
          else 
              $closeTr = ''; 
    
          echo '<td><a href="' . $dir . $file . '" target="_blank"> 
            <img src="' . $dir . $file . '" width="' . $picsWidth .'" border="0"> 
         </a>' . "</td>\n"; 
    
          echo $closeTr; 
    
          if ( $fileCount == $picsOnRow ) 
              $fileCount = 0; 
    
         if( $n >= $pp ) break; 
         $fileCount++; 
         $n++; 
      } 
      
      echo '</tr>'; 
      echo '</table>' . "\n"; 
   }else{ 
      
      echo 'Nqma failove!'; 
   } 
   function getFiles( $dir, $fileTypes ) { 

      $files = array(); 
      
       if ( $handle = @opendir($dir) ) { 

           while ( false !== ($file = readdir($handle)) ) { 

               if ( $file != "." && $file != ".." ) { 

                   $ext = end( explode(".", $file) ); 

                   if ( in_array($ext, $fileTypes) ) { 
                       $files[] = $file; 
                   } 
               } 
           } 

           closedir( $handle ); 
       } 
       return $files; 
   } 

   function pagination( $files, $start ) { 

       for ( $i = 0; $i < $start; $i++ ) { 

           array_shift( $files ); 
       } 

       return $files; 
   } 

$limit = ($pp*$page)-$pp; //определяме лимитирането 

$max=count($files); 
$total=ceil($max/$pp); //пресмятаме броя на страниците 

echo "<br><br><br><br>"; 

//от тук започва кода за показването на страниците 
if ($page > 1) { 
$prev = ($page - 1); 
echo "<a href=%22?page=$prev/"><font face=\"Trebuchet MS\">Предишна страница</font></a> "; 
} 
else echo "<font face=\"Trebuchet MS\">Предишна страница</font> "; 

if (!$page or ($page > $total)) { 
$page="1"; 
} 

if ($total < 10) { 
for($i=1 ; $i<=$total ; $i++) { 
if ( ($page)==$i ) { 
echo "<b>$i</b> "; 
} 
else { 
echo "<a href=%22?page=".$i."/">".$i."</a> "; 
} 
} 
} 
else { 
for($i=1 ; $i<=3 ; $i++) { 
if ( ($page)==$i ) { 
echo "<b>$i</b> "; 
} 
else { 
echo "<a href=%22?page=".$i."/">".$i."</a> "; 
} 
} 

if ($page <= 3) { 
if ($page == 3) echo "<a href=%22?page=4/">4</a> "; 
echo "... "; 
for ($i=$total-2; $i<=$total; $i++) 
echo "<a href=%22?page=".$i."/">".$i."</a> "; 
} 
if ($page == 5) $parva.= "<a href=%22?page=4/">4</a> "; 

if ( ($page == 4) or ($page == 5) ) { 
for ($i=$page; $i<=$page+1; $i++) { 
if ($page == $i) echo "<b>$i</b> "; 
else echo "<a href=%22?page=".$i."/">".$i."</a> "; 
} 
echo "... "; 
for ($i=$total-2; $i<=$total; $i++) 
echo "<a href=%22?page=".$i."/">".$i."</a> "; 
} 

if ( ($page > 5) and ($page < ($total - 4)) ) { 
echo "... "; 
for ($i=$page-1; $i<=$page+1; $i++) { 
if ($page == $i) echo "<b>$i</b> "; 
else echo "<a href=%22?page=".$i."/">".$i."</a> "; 
} 
echo "... "; 
for ($i=$total-2; $i<=$total; $i++) 
echo "<a href=%22?page=".$i."/">".$i."</a> "; 
} 

if ( $page > ($total - 5) ) { 
echo "... "; 
for ($i=$total-5; $i<=$total; $i++) { 
if ($page == $i) echo "<b>$i</b> "; 
else echo "<a href=%22?page=".$i."/">".$i."</a> "; 
} 
} 
} 

if ($page < $total) { 
$next = ($page + 1); 
echo "<a href=%22?page=$next/"><font face=\"Trebuchet MS\">Следваща страница</font></a> "; 
} 
else echo "<font face=\"Trebuchet MS\">Следваща страница</font>"; 
?>
</center>
</body>
</html>
 
Хмм, виж редовете си:
Код:
echo "<a href=%22?page=".$i."/">".$i."</a> ";
Трябва да е така:
Код:
echo "<a href=\"?page=".$i."\">".$i."</a> ";
:lol:
От редактора е. Замества наклонените черти и кавичките със техните кодове. Това прецаква скрипта. Смени редактора с който го записваш :?:
 
ок
остана само защо като отида на последната страница излиза само първа страница и линковете предишан и следваща не работят... :oops:

ЕДИТ: правя го с нотпад
 
идеи...? :(
пробвай да отидеш на последната страница и там ще има само една страница(само първа)
 
Снощи го пробвах с една голяма папка с изображения. И всичко си работеше. След малко ще прегледам кода отново, да не съм объркал аз нещо и ще си едитна мнението.
 
Разминаването е че, не знам защо, редактора ти сменя кавичките с техните специални знаци. Пробвай да го запазиш с друг редактор.
Иначе скрипта си работи перфектно.
 
горе долу се получи а как ще стане да се направи нова страница на всеки 10
Код:
<hr>
тагове?

ЕДИТ: само проблема с това като отида на последната страница да се появява първата само си остана...
 

Back
Горе