Намерих един код за php галерия със странициране и под категори.
Кода работи по следния начин:
- Имам папак /pics/ , от тази папка кода взима снимки.
- Под категория във /pics/ създавам папка /cat/ примерно.Кода автоматично без да му добавям редове почва да възприема /cat/ като категория и е извежда.
ОБАЧЕ,мойте категори съм ги направил на български вместо /cat/ е /кат/
и от там се чудя - Сега на мен не ми прави грешка ама ако го кача на хост и при потребителите почне да дава грешка.
За това търся начин категориите да ги задавам през кода като
<a href="pic/latinichar>Категория</a>
и от тук на татък кода вече сам да си избира снимките и така.
Кода работи по следния начин:
- Имам папак /pics/ , от тази папка кода взима снимки.
- Под категория във /pics/ създавам папка /cat/ примерно.Кода автоматично без да му добавям редове почва да възприема /cat/ като категория и е извежда.
ОБАЧЕ,мойте категори съм ги направил на български вместо /cat/ е /кат/
и от там се чудя - Сега на мен не ми прави грешка ама ако го кача на хост и при потребителите почне да дава грешка.
За това търся начин категориите да ги задавам през кода като
<a href="pic/latinichar>Категория</a>
и от тук на татък кода вече сам да си избира снимките и така.
PHP:
<?php
error_reporting(E_ALL^E_NOTICE);
$pics_folder = "pics";
$max_width = 180;
$max_height = 180;
$pics_per_page = 9;
$pics_ex = array('jpg','jpeg','gif','png');
function resize($pic)
{
global $max_width, $max_height;
$max_width_pic = $max_width;
$max_height_pic = $max_height;
list($width,$height) = getimagesize($pic);
$ratio = $width / $height;
if ($width > $max_width_pic || $height > $max_height_pic)
{
if ($width > $height)
{
$width = $max_width_pic;
$height = $width / $ratio;
}
elseif ($width < $height)
{
$height = $max_height_pic;
$width = $height * $ratio;
}
elseif ($width == $height)
{
$width = $max_width_pic;
$height = $max_height_pic;
}
}
$width = intval($width);
$height = intval($height);
return array("width" => $width, "height" => $height);
}
$pics_folder = preg_replace('/[\/]+/', '/', preg_replace('/^[\/]+/', '', $pics_folder).'/');
function all_images()
{
global $pics_folder, $pics_ex;
$folders = array($pics_folder);
$out_files = array();
while (count($folders))
{
foreach ($folders as $folder)
{
array_shift($folders);
$dir = opendir($folder);
while ($file = readdir($dir))
{
if ($file != '.' && $file != '..')
{
$ext = explode(".", $file);
$ext = strtolower(end($ext));
if (is_file($folder.$file) && in_array($ext, $pics_ex))
{
$out_files[] = $folder.$file;
}
elseif (is_dir($folder.$file))
{
$folders[] = $folder.$file.'/';
}
}
}
}
}
return $out_files;
}
$all_images = all_images();
$category = false;
if (preg_match('/^[^\/\\\:\*\?\"\<\>\|]+((->)[^\/\\\:\*\?\"\<\>\|]+)*$/i', $_GET['kat']))
{
$category = (is_dir($pics_folder.str_replace('->', '/', $_GET['kat']))) ? str_replace('->', '\/', $_GET['kat']) : false;
}
$out_images = array();
$out_images1 = array();
foreach ($all_images as $image)
{
$raz = explode("/", $image);
for ($n=1;$n<=(substr_count($pics_folder, "/"));$n++) array_shift($raz);
array_pop($raz);
$out_images1[] = $image;
if ($category && !preg_match("/^$category/", implode("/", $raz))) continue;
$out_images[] = $image;
}
echo"<table border='0' cellpadding='20px' cellspacing='0'><tr><td>";
$title=Array();
$k=0;
$br=count($out_images1);
$masiv = @array_chunk($out_images1, $br, true);
foreach ($masiv[0] as $pic)
{
$razp = explode("/", $pic);
for ($n=1;$n<=(substr_count($pics_folder, "/"));$n++) array_shift($razp);
array_pop($razp);
$kat = array();
$kat[] = '<a href="?" class="f"></a>';
for ($i=0;$i<count($razp);$i++)
{
$url = array();
for($i2=0;$i2<=$i;$i2++)
{
$url[] = $razp[$i2];
}
$kat[] = '<a href="?kat='.implode("->", $url).'">'.$razp[$i].'</a>';
}
$title[$k]="<div id='k'><br >".implode($kat)."</div>";
$k++;
}
echo "<h3></h3><br><b>".$title[0];
for ($k=1;$k<count($title);$k++){
$savp=0;
for ($m=0;$m<$k;$m++){
if($title[$m]==$title[$k]){
$savp=1;
}
}
if($savp==0){echo $title[$k];}
}
echo"</b></td><td>";
if($_GET['kat']){
echo "<h3 class='m'>".$_GET['kat']."</h3>";
}
else{echo "<h3 class='m'></h3>";}
$masiv = @array_chunk($out_images, $pics_per_page, true);
$stranici = floor(count($out_images) / $pics_per_page);
if ((count($out_images) % $pics_per_page) > 0) { $stranici++; }
if (is_numeric($_GET['page']) && $_GET['page'] <= $stranici) {
$page = $_GET['page'];
} else {
$page = 1;
}
$red = 1;
echo "<span id=\"gallery\"><table border=\"0\">
<tr>\n";
foreach ($masiv[($page - 1)] as $pic)
{
$resize = resize($pic);
$razp = explode("/", $pic);
for ($n=1;$n<=(substr_count($pics_folder, "/"));$n++) array_shift($razp);
array_pop($razp);
$kat = array();
$kat[] = '<a href="?"></a>';
for ($i=0;$i<count($razp);$i++)
{
$url = array();
for($i2=0;$i2<=$i;$i2++)
{
$url[] = $razp[$i2];
}
$kat[] = '<a href="?kat='.implode("->", $url).'">'.$razp[$i].'</a>';
}
echo "<td align='center'><div id='picviewb' style='height: ".$resize['height']."; width: ".$resize['width'].";'><a href=\"{$pic}\" title=\"{$pic}\"><img src=\"{$pic}\" width=\"".$resize['width']."\" height=\"".$resize['height']."\" border=\"0\" id=\"picview1b\"></a></div></td>\n";
if ($red == floor(sqrt($pics_per_page))) { $red = 1; echo "</tr><tr>\n"; } else { $red++; }
}
echo "</tr>
</table></span>";
echo "<div id='n'>";
for ($i=1;$i<=$stranici;$i++) {
if ($page != $i) {
echo "<a href=\"?page=$i".(($category) ? '&kat='.$_GET['kat'] : '')."\">$i</a> ";
} else {
echo "<span class='f'>$i </span>";
}
}
echo"</div>";
echo"</td>";
echo"</tr></table>";
?>