Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2008, 22:19   #1
Чайник
 
Регистрация: 07.04.2008
Сообщений: 5
По умолчанию ай нид хелп меню для каталога фотографий

ай нид хелп с меню для каталога фотографий. Есть кусок рабочего кода, который сканирует все папки находящиеся в определенном каталоге и делает из этих названий ссылки.
вот код скрипта

Код:
<? # чтение названий каталогов
$dir_menu=opendir("./files"); 	# вместо files можно указать любую другую папку
$t=0;
while($folder=readdir($dir_menu))
  {
  if($folder!="." && $folder!=".." && filetype("./files/$folder")=="dir")
    {
    chdir("./files/$folder");
    $t++;
	$title_cat="$folder";
    $array_cat["$folder"]=ucfirst(trim($title_cat));
    chdir("../../");
    }
  }
#  создание из названий каталогов готовых ссылок и вывод в таблицу
if(count($array_cat)>0)
  {
  asort($array_cat);
  foreach($array_cat as $key=>$val)
    {
    $first=substr($val,0,1);
?>
                        <? if($first!=$symbol) echo "<b>";?>
                        <a href="index.php?cat=<? echo rawurlencode($key);?>"><? echo$val;?></a> <br>
                        <? if($first!=$symbol) echo "</b>";?>
<?
    }
# конец чтение названий каталогов и создание из этих названий меню
  }?>
хочу сделать так, чтобы весь сгенерированный список разбивался , например, по 30 ссылок и внизу выводилось "страница 1 2 3". откликнитесь хоть кто нибудь - голова уже как телевизор - скоро дойду до суицида .

Последний раз редактировалось SkyM@n; 08.04.2008 в 22:38.
Чайник вне форума Ответить с цитированием
Старый 08.04.2008, 22:37   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Цитата:
Сообщение от Чайник Посмотреть сообщение
хочу сделать
......
скоро дойду до суицида .
Еще не было случаев, что от того, что ленивый человек что-то хотя, доходил до суицида. Хотя в наше время - стены крепкие, всё выдержат.

Хоть сами понимаете алгоритм работы скрипта?
SkyM@n вне форума Ответить с цитированием
Старый 09.04.2008, 23:20   #3
Чайник
 
Регистрация: 07.04.2008
Сообщений: 5
По умолчанию

уважаемый Админ SkyM@n для информации скажу (напишу), что в пхп я влез ровно месяц назад и мой ник "Чайник" тоже не от фонаря придуман. касаемо алгоритма работы скрипта понимаю в общих чертах. И последнее я выбрал ВАШ форум не потому, что мне нечего делать, а потому, что сдесь я увидел лояльное отношение к новичкам и реальную помощь чайникам от пхп.

цитата: Хоть сами понимаете алгоритм работы скрипта?
если бы помогли разобраться был бы очень признателен. ведь лучшая учеба - учеба на примерах. После сложного элементарно разобраться в простом (хтмл я иучал именно по этому приципу натыкался на интересную страницу, сохранял, разбирал до последнего винтика и оставлял понравившийся эффект или навигацию или еще что нибудь и напоследок вгонял в сайт со своими доработками), а в пхп я полез из-за того, что в хтмл-е стало мне тесно.
ЗАРАНЕЕ СПАСИБО!

Последний раз редактировалось Чайник; 09.04.2008 в 23:42.
Чайник вне форума Ответить с цитированием
Старый 10.04.2008, 00:21   #4
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Во-первых, не Админ я. Администратор тут один - Alar. Кроме администратора есть группа модераторов, которая следит за порядком на этом форуме. Но это все - лирика.
Во-вторых, как можно рассказывать вам что и к чему, если неизвестен уровень ваших знаний. Для чайников - есть соответственные книги. И про "как лучше учиться" - не стОит рассказывать тут.
В-третьих, таки расскажите, что вас ИМЕННО интересует в данном скрипте.
Типа: "...вот этот кусок - понимаю, - он делает то-то и то-то, а вот этот - не могу понять, хотя при поиске там-то о данной команде ясно написано, что то-то и то-то.."
SkyM@n вне форума Ответить с цитированием
Старый 10.04.2008, 01:19   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Чайник Посмотреть сообщение
хочу сделать так, чтобы весь сгенерированный список разбивался , например, по 30 ссылок и внизу выводилось "страница 1 2 3". откликнитесь хоть кто нибудь - голова уже как телевизор - скоро дойду до суицида .
Чайник, в действительности и правда сложно понять, с чем именно у Вас сложности. Если исходить из того, что с запуском цикла с определённого индекса массива Вы разобрались, то могу предложить пару примеров.

1 - находит все JPG'и в подкаталогах и забивает ими массив.
PHP код:
<?php
function processdir($dir)
{
    global 
$jpegs;
    if (
$handle opendir($dir)) {
        
printf("Processing Directory '%s'\n",$dir);
        while (
false !== ($file readdir($handle))) { 
            if (
$file != "." && $file != "..") { 
                
$fullname $dir."\\".$file;
                if(
is_dir($fullname)){
                    
processdir($fullname);
                }
                else {
                    
$ext strtoupper(pathinfo($fullnamePATHINFO_EXTENSION));
                    if(
$ext == "JPG" || $ext == "JPEG"){
//                        printf("%s\n",$fullname);
                        
$jpegs[] = $fullname;
                    }
                }
            } 
        }
        
closedir($handle); 
    }
}



/// main
    
$jpegs = array();
    
processdir(".");
    echo 
"-------------------------------\n";
    foreach(
$jpegs as $str) echo $str."\n";

?>
2 - рисует указатель страниц
PHP код:
//..................................
//..................................
function PageSelector($page$maxpage$mode$additional_params)
{
    
$p '';
    if(
$additional_params != NULL){
        foreach    (
$additional_params as $param => $value){
            
$p .= sprintf("&%s=%s",$param,$value);
        }
    }
    
    
$PageSelector '';

    if(
$maxpage 0){    
        
$PageSelector .= '<table width=100% class="pageselector" border=1><tr class="pageselector">';
        if(
$page 0$PageSelector .= '<td class="pageselector" ><a class="pageselector" href="?mode='.$mode.'&page='.($page-1).$p.'">&laquo;&laquo;</a></td>'
        else 
$PageSelector .= '<td class="pageselector">&nbsp;&nbsp;</td>';
        
$PageSelector .= '<td class="pageselector" width=100%>';
            if(
$maxpage 0$PageSelector .= 'Страница ';
            for(
$i 0$i $page$i++) $PageSelector .= '<a class="pageselector" href="?mode='.$mode.'&page='.$i.$p.'">'.($i+1).'</a>&nbsp;';
            
$PageSelector .= '<span style="color: #FFFFFF; background-color: #0080D0; font-weight:bold">&nbsp;'.($page+1).'&nbsp;</span>&nbsp;';
            for(
$i $page 1$i <= $maxpage$i++) $PageSelector .= '<a class="pageselector" href="?mode='.$mode.'&page='.$i.$p.'">'.($i+1).'</a>&nbsp;';
        
$PageSelector .= '</td>';
        if(
$page $maxpage$PageSelector .= '<td class="pageselector" ><a class="pageselector" href="?mode='.$mode.'&page='.($page+1).$p.'">&raquo;&raquo;</a></td>'
        else 
$PageSelector .= '<td class="pageselector">&nbsp;&nbsp;</td>';

        
$PageSelector .= '</tr></table>';
    }
    else {
        
//$PageSelector .= '&nbsp;';
    
}
    return 
$PageSelector;
}
//..................................
//.................................. 
B_N вне форума Ответить с цитированием
Старый 12.04.2008, 00:43   #6
Чайник
 
Регистрация: 07.04.2008
Сообщений: 5
По умолчанию

Уважаемый B_N должен извиниться перед Вами я сам виноват в том, что меня в действительности и правда сложно понять. Я нашел в сети скрипт галереи smzgalleryfast точно не помню где и пытаюсь его переделать (запоздавшее начало темы). скрипт довольно простой, не использует никаких БД и работает достаточно быстро, но есть одно но которое не очень меня устраивает и которое пытаюсь переделать (пока безрезультатно). он сканирует папку files и создает меню из названий каталогов с изображениями лежащих в папке files. но если их слишком много, то "вываливает" меню на три экрана, что не очень удобно для посетителей. у меня получилось вставить скроллинг на ява-скрипт, но эффект все-равно не тот. итог здесь http://zolushka.na.by
Цитата:
2 - рисует указатель страниц
очень подошел бы, но к сожалению не получается его подключить.

Последний раз редактировалось Чайник; 12.04.2008 в 01:08. Причина: орфографическа ошибка
Чайник вне форума Ответить с цитированием
Старый 12.04.2008, 07:24   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Чайник Посмотреть сообщение
очень подошел бы, но к сожалению не получается его подключить.
PHP код:
function PageSelector(
    
$page,                //  текущая страница (начиная с нуля)
    
$maxpage,             // максимально возможная страница (начиная с нуля)
    
$mode,                 // моя собственная переменная - 
                        // добавляет к URL "mode=XXXX" XXXX - значение переменной $mode
    
$additional_params    // дописывает к URL дополнительные параметры 
                        // (?mode=XXXX&param1=YYY&param2=ABCDE и т.д.) - 
                        // имена и значения параметров массивом
); 
Возвращает готовую "HTML-ную" строку, которую можно вставлять в любое место скрипта, скажем так:

PHP код:
$ps PageSelector(
            
10
            
20
            
123
            array(
'gallery' => 5678));
//.....................
//.....................
echo $ps;
//..................... 
В результате получится табличка из индексов страниц и у каждого будет URL вроде: "?page=XXX&mode=123&gallery=567 8"
B_N вне форума Ответить с цитированием
Старый 12.04.2008, 15:54   #8
Чайник
 
Регистрация: 07.04.2008
Сообщений: 5
По умолчанию

Все замечательно работает СПАСИБО БОЛЬШОЕ. еще один (последний) вопрос: в тот кусок кода который я повесил в начале темы можно ли добавить какое нибудь условие или счетчик который при достижении определенного количества прочитанных папок и переделанных в ссылки (например 30 штук) поключал PHP код:

Цитата:
Сообщение от B_N Посмотреть сообщение
PHP код:
$ps PageSelector(
            
10
            
20
            
123
            array(
'gallery' => 5678));
//.....................
//.....................
echo $ps;
//..................... 
ведь если есть например 100 папок с фотольбомами на выходе получается огромный список в меню выбора альбомов. заранее спасибо

Последний раз редактировалось Чайник; 12.04.2008 в 15:59.
Чайник вне форума Ответить с цитированием
Старый 12.04.2008, 16:26   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Чайник Посмотреть сообщение
ведь если есть например 100 папок с фотольбомами на выходе получается огромный список в меню выбора альбомов. заранее спасибо
Ну так Вы показывайте не весь список, а 30 штук, начиная с элемента [30 * <текущая страница>]. Смотря как там у Вас всё это организовано, или выбирать из массива только нужные элементы, или, наоборот, не добавлять в него те, которые не попадают в нужный диапазон. Текущую страницу Вы как раз с помощью моей функции и получите в виде
PHP код:
$page $_REQUEST['page'
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт приема фотографий на печать через форму на сайте Hellog PHP 8 29.01.2009 16:25
непрерывная смена большого количества фотографий brenfire Помощь студентам 5 08.08.2008 11:23
непрерывная смена фотографий в разных папках. brenfire Общие вопросы по Java, Java SE, Kotlin 0 07.08.2008 14:39
Скрипт приема фотографий на печать через форму на сайте Hellog Фриланс 2 05.06.2008 15:37
каталог фотографий mager PHP 8 27.03.2008 22:43